美文网首页
socket中TCP的三次握手和四次挥手机制

socket中TCP的三次握手和四次挥手机制

作者: GameObjectLgy | 来源:发表于2023-11-29 13:37 被阅读0次
    一、 协议族分层

    应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
    传输层:TCP,UDP
    网络层:IP,ICMP,OSPF,EIGRP,IGMP
    网络接口层:SLIP,CSLIP,PPP,MTU

    二、 传输层中的TCP和UDP

    1、UDP(User Datagram Protocol)即用户数据报协议,其传输机制决定了它的最大优点——快,同时也决定了它最大的缺点:不可靠、不稳定。

    • UDP是无连接的,发送数据之前不需要建立连接(TCP需要)。减少了开销和延时。
    • UDP是面向报文的,对IP数据报只做简单封装(8字节UDP报头)。减少报头开销。
    • UDP没有阻塞机制,宁愿阻塞时丢弃数据不传,也不阻塞造成延时。
    • UDP支持一对一、一对多、多对一、多对多通信。
      2、TCP协议
      TCP(Transmission Control Protocol)传输控制协议,相对于UDP,TCP是面向连接的、提供可靠的数据传输服务。同时比较UDP开销较大的、传输速度较慢的。
      TCP提供可靠的、面向连接的数据传输服务。使用TCP通信之前,需要进行“三次握手”建立连接,通信结束后还要使用“四次挥手”断开连接。
    • TCP是点对点的连接。一条TCP连接只能连接两个端点。
    • TCP 提供可靠传输,无差错、不丢失、不重复、按顺序。
    • TCP 提供全双工通信,允许通信双方任何时候都能发送数据,发送方设有发送缓存,接收方设有接收缓存。
    • TCP 面向字节流 。TCP 并不知道所传输的数据的含义,仅把数据看作一连串的字节序列,它也不保证接收方收到的数据块和发送方发出的数据块具有大小对应关系。
    三、 TCP中为什么需要三次握手?
    image.png

    第一次握手,客户端尝试连接服务器,并带上同步序列编号SYN,进入等待服务器确认状态。
    第二次握手,服务器收到并确认,回复同步序列编号+1。服务器进入接收状态。
    第三次握手,客户端拿到服务端发来的SYN和ACK后,向服务器发送确认包ACK(ack=k+1)。
    为什么要做三次握手呢?握手的过程实际上是在通知对方自己的初始化序号,也就是上图中的x和y。x和y会被当作之后传输数据的一个依据,以保证TCP报文在传输过程中不会混乱。

    四、为什么需要四次挥手断开连接?
    image.png

    原因在于客户端请求断开连接后,但是服务端可能还存在没有传输完的数据,如果此时服务端就直接断开连接那势必会造成数据的丢失,TCP也就不可靠了。所以服务端需要等待所有数据发送完毕再请求断开,也就是服务端的ACK和FIN报文是分两次发送的。而TCP建立连接是不需要这个等待过程的,所以三次握手把服务端确认收到ACK报文和请求连接报文合并到了一起。

    相关文章

      网友评论

          本文标题:socket中TCP的三次握手和四次挥手机制

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