美文网首页
iOS ---TCP, UDP

iOS ---TCP, UDP

作者: BabyNeedCare | 来源:发表于2018-11-06 15:14 被阅读0次

    三次握手过程:


    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 则不会处理。

    相关文章

      网友评论

          本文标题:iOS ---TCP, UDP

          本文链接:https://www.haomeiwen.com/subject/fjsuxqtx.html