iOS ---TCP, UDP

2018-11-06  本文已影响0人  BabyNeedCare

三次握手过程:


image.png

第一次

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

3次握手过程类似于年会邀请:
「行政要通过邮件发年会邀请码123链接给Jack」
「收到邮件后点开链接,显示邀请码为123,点击确认,生成确认字123_ConfirmedBy_Jack, 返回给行政」
「行政收到确认后,开始谈当天年会着装,座位等等」

3次握手简单来说,1. 请求,2. 确认请求,3. 通信

4次挥手:


image.png

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

4次挥手过程类似于结束会议:
「行政问Jack, 还有其他议题吗?」
「Jack说,我没别的议题了」
「Jack说,如果提出的议题没需要变更的,会议结束」
「行政说没有,可以结束了」

上面是一方主动关闭,另一方被动关闭的情况,实际中还会出现同时发起主动关闭的情况,具体流程如下图:

image.png

TCP与UDP的区别

TCP 是面向连接的,UDP 是面向无连接的;故 TCP 需要建立连接和断开连接,UDP 不需要。

TCP 是流协议,UDP 是数据包协议;故 TCP 数据没有大小限制,UDP 数据报有大小限制(UDP 协议本身限制、数据链路层的 MTU、缓存区大小)。

TCP 是可靠协议,UDP 是不可靠协议;故 TCP 会处理数据丢包重发以及乱序等情况,UDP 则不会处理。

上一篇下一篇

猜你喜欢

热点阅读