TCP三次握手

在server和client调用socket生成套接字后,server调用listen监听某个端口后,调用accept来等待client的连接,accept本身是阻塞的,直到收到client的请求后,accept才返回

client调用connect函数项server所在主机发起连接请求,连接的报文中除了包含server的iP和端口外,还包含了client端初始化的序号SYN a 和MSS=1460(最大数据段的大小),一个数据包的大小事数据段大小加上IP包头,数据链路包头的大小,用户进程的数据是数据段大小,称之为MTU,数据段长度应该取TCP连接上各个局域网段支持最大数据帧长度中的最小者,否则IP数据包在通过局域网时候,有可能会被截断。

正在倾听client连接的server收到client的连接请求后,server从accept中返回,server会向client端发送server端初始化的序号SYN b和对client端的SYN a的确认ACK=a+1,还有本段的最大数据段长度MSS=1460,

当client断收到server的回应后,将发出对server请求的回应ACK=b+1,然后从connect中返回,返回值是一个打开的socket描述符,同时server接收到SYN确认信息后,也将从accept中返回,同样返回一个socket描述符,用于和client进行数据通信

如果数据包在握手过程中丢失,将导致发送方的定时器超时重发,然后要么重新发送数据包被收到,要么因为多次发送超过限定而放弃

从connect何accept中返回的socket描述符是连接套接字,不同于socket()中返回的socket被动套接字描述符被动套接字只能用于接受客户进程的连接请求,而数据通信是由连接套接字完成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值