Stream Socket && Data Socket

类型形参协议流程优劣
Stream SocketSOCK_STREAMTCP客户端:create - connect - read/write
服务器:create - bind - listen - accept - read/write
能够分割、排序、重组,传输中断对其影响不大。
Data SocketSCOK_DGRAMUDP客户端:create - sendto
服务器:create - recvfrom
不用连接,有需要就发送数据。

TCP协议下客户端和服务器连接的过程称为“三次握手”。
第一次握手:建立连接时,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。


  • 未连接队列:三次握手中,服务器维护一个未连接队列,为每个客户端SYN包开设一个条目,表明服务器已收到SYN包,并向客户端发出确认,正在等待确认包。这些条目所标志的连接在服务器处于SYN_RECV状态,当服务器收到客户端的确认包时,删除该条目,服务器进入ESTABLISHED状态。
  • Backlog参数:表示未连接队列的最大容纳数目。
  • SYN-ACK 重传次数:服务器发送完SYN-ACK包,如果未收到客户端确认包,服务器进行首次重传,等待一段时间仍未收到客户端确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。ps:每次重传等待的时间不一定相同。
  • 半连接存活时间:指半连接队列的条目存活的最长时间,也就是服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间的总和。也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

TCP协议通信流程图:
TCP协议通信流程图客户端与服务器的三次握手:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值