unix网络编程笔记(一)

本文介绍了TCP/IP协议栈中的核心概念和技术,包括TCP/IP模型、Socket编程基础、TCP与UDP的区别,以及如何创建TCP套接字并进行数据传输。文中还详细解释了TCP连接的建立与终止过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

socket(AF_INET, SOCK_STREAM, 0) 创建一个网际(AF_INET)字节流(SOCK_STREAM)套接字,它是TCP套接字的花哨名字。该函数返回一个小整数描述符。TCP套接字又称为TCP端点(tcp endpoint)。

指定服务器的IP地址和端口:把服务器的IP地址和端口号填入一个网际套接字地址结构(一个名为servaddr的sockaddr_in结构变量),使用bzero函数把整个结构清零,置地址簇AF_INET,此结构的IP地址和端口号必须使用特定格式,可以调用库函数hton(主机到网络短整型)去转换二进制端口号(如hton(13)),使用库函数inet_pton(呈现形式到数值)去把(xx.xx.xx.xx这样的十进制点分式)转换为合适的格式,也可以使用inet_addr函数。当某个套接字函数需要使用某种套接字地址结构的指针时,我们必须将此结构强制转换成struct  sockaddr也就是通用套接字地址结构的指针。

sockaddr_in结构:

struct sockaddr_in
{
     short sin_family;
     u_short sin_port;
     struct in_addr sin_addr;
     char sin_zero[8];
}; 

读取数据:read。假如读取了26个字节的字符,在使用字节流协议的情况下,这26个字符可以有多种返回形式。可以是包含所有26个字节的单个TCP分节,也可以每个分节只有一个字符的26个分节,也可以是共26个字节的分节的任意组合。当read返回0时表示对端关闭连接返回负值时表示发生错误。



各种协议:

IPv4--网际协议版本4;通常称为IP。它使用32位地址,给TCP,UDP,SCTP,ICMP,IGMP提供分组递送服务。

IPv6--网际协议版本6;给TCP,UDP,SCTP,ICMPv6提供分组递送服务。

TCP--传输控制协议;是一个面向连接的协议,为用户进程提供一个全双工字节流,TCP套接字是一种流套接字,关心确认、超时、重传之类的细节。TCP既可以使用IPv4也可以使用IPv6。

UDP--用户数据报协议;是一个无连接的协议,UDP套接字是一种数据报套接字,不能保证最终到达他们的目的地。

SCTP--流控制传输协议;提供可靠的全双工关联的面向连接的协议,SCTP是多宿的,从每个连接的两端均涉及一个IP地址和端口号。提供消息服务,也就是维护来自应用层的记录边界。

ICMP--网际控制消息协议;处理在路由器和主机之间流通的错误和控制消息,这些消息通常由TCP/IP网络支持软件本身(而不是用户进程)产生和处理,有时称这个协议伪ICMPv4与ICMPv6区分开来。

IGMP--网际组管理协议;用于多播,在IPv4中是可选的。

ARP--地址解析协议(address resolution protocol),把一个IPv4地址映射成一个硬件地址,(如以太网地址),通常用于以太网,令牌环网、FDDI等广播网络,在点到点网络中并不需要。

RARP--反向地址解析协议,把一个硬件地址映射成一个IPv4地址,它有时用于无盘节点的引导。

ICMPv6--网际控制消息协议版本6,;综合了ICMPv4、IGMP,ARP的功能。

BPF--BSD分组过滤器(BSD packet  filter);该接口提供对数据链路层的访问能力。

DLPI--数据链路接口提供者(datalink provider interface),该接口也提供对数据链路层的访问能力,通常随SVR4内核提供。


TCP使用三路握手建立连接,使用四分组交换序列终止连接。当一个TCP连接被建立时,它从CLOSED状态转换到ESTABLISHED状态,当该连接被终止时又回到CLOSED状态。理解状态转换图是使用netstat命令诊断网络问题的基础,也是理解当某个应用进程调用诸如connect、accept、close等函数时所发生过程的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值