美文网首页
TCP的三次握手与四次挥手

TCP的三次握手与四次挥手

作者: 好有魔力 | 来源:发表于2019-08-16 14:49 被阅读0次

TCP的三次握手

链接建立

第1步:从客户端开始发送 SYN (同步)字节,告诉服务器客户在(待建立的)连接中初始序列编号(i),向服务器请求建立连接

第2步:服务器做一些准备工作,并发送给客户端自己的序列编号SYN,并且对第1步做出应答 ACK i +1 ,告诉客户端已经准备好建立连接

第3步:客户端接收到 服务器 发来的 SYN J ,和 ACK i+ 1后,知道服务器已经准备好 ,发送 ACK J +1 建立连接

上述过程与socket代码有何联系?

客户端发起TCP连接的过程是:

client

服务器处理TCP逻辑一般是:

server

在客户端, tcp 的 三次握手过程 都在 connect 函数中完成 。 在服务端,握手的过程在 accept 函数中. 还可知道 accept 和 connect 函数都是阻塞当前线程的. 那么是什么时候解除阻塞呢? 答案就在三次握手的过程中.

合并

由此可知 client 和 server 都是在接收到自己期望的ACK之后,才解除对当前线程的阻塞 ,保证了连接建立的可靠, 第一次的 ack 由SYN i 触发,第二次的 ACK 由 SYN j触发,这也是 TCP 握手是三次的原因.

TCP的四次挥手(直接与socket 结合)

image.png
普通情况:
  1. 客户端 首先调用 close , 是主动方, 向服务器 发送 FIN 分节,表示此时客户端 已经没有数据要发送, client 此时进入等待状态 FIN_WAIT_1

  2. 服务端 接收 到 FIN , 向 客户端 发送 ACK ,并进入 CLOSE_WAIT 状态

  3. 在 CLOSE_WAIT 状态下的 服务端 ,将没有发送完的数据传送给 客户端 , 发送 FIN 表示服务端数据已经发送完成. 客户端 在接收到 FIN 后 回送 ACK 释放资源,客户端 关闭了TCP 连接

  4. 服务端 接收到 ACK 之后 释放资源, 服务端关闭连接

由于 客户端 在close 方法后,并不能保证此时服务端 的数据都发送完毕, 所以多了一步 服务端 通知 客户端 数据发送完毕的过程, 导致了关闭连接要"四次挥手".

相关文章

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • TCP的3次握手&4次挥手

    详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” 为什么“握手”是三次,“挥手”却要四次? 建立连接时,被动...

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP三次握手与四次挥手

    TCP的三次握手与四次挥手(详解+动图)TCP之三次握手四次挥手 UDP,在传送数据前不需要先建立连接,远地的主机...

  • 计算机网络

    TCP三次握手与四次挥手 UDP报文段结构 TCP报文段结构

  • tcp

    报文结构、三次握手、四次挥手 Tcp--三次握手,四次挥手[https://www.jianshu.com/p/a...

  • tcp三次握手四次挥手

    tcp三次握手四次挥手 TCP状态图 TCP状态时序图 tcp三次握手 流程图: TCP握手状态说明: TCP_S...

  • 梳理部分解答之网络基础

    网络基础 TCP三次握手四次挥手 TCP三次握手 所谓三次握手(Three-way Handshake),是指建立...

网友评论

      本文标题:TCP的三次握手与四次挥手

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