协议簇:TCP 解析: 建立连接

本文详细介绍了TCP连接的建立过程,包括三次握手的每个阶段:客户端SYN,服务端SYN+ACK,客户端ACK。还讨论了特殊情况,如双方同时请求建立连接,旧的重复SYN包的处理,以及半开放连接状态和重置(RST)的情况。通过Wireshark抓包分析,加深了对TCP连接建立的理解。
摘要由CSDN通过智能技术生成

简介

接前文 协议簇:TCP 解析: 基础, 我们这篇文章来看看 TCP 连接建立的过程,也就是众所周知的”三次握手“的具体流程.

系列文章

协议簇:TCP 解析:基础
协议簇:TCP 解析:建立连接
协议簇:TCP 解析:连接断开
协议簇:TCP 解析:Sequence Number
协议簇:TCP 解析:数据传输

三次握手

最普通的 TCP 握手流程如下图:
三次握手
下面描述中,序列号对应于上图中的行号.

  1. 初始状态时,TCP A 处于连接关闭状态, TCP B 处于监听状态. 也就是通常所说的 A 时 TCP 客户段,B 是服务端.
  2. A 发送 SYN 给 B, 并附有 SEQ, 请求建立 TCP 连接。
    A 发送 SYN 后,状态切换为 SYN-SENT, B 接收到 A 发送的 SYN 后状态切换为 SYN-RECEIVED.
  3. B 收到 A 的 SYN 之后,发送它的 SYN(注意,这里 A 和 B 的 SEQ 是相互独立的 ),并附上 ACK 标记用以表明 B 收到了 A 的 SYN 包。
    这里注意: B 发送的 ACK 的值为 101,它代表 B 收到了序列号为 100和100之前的所有字节数据,并告诉 A 自己期待下一次收到序列号以101开始的数据.
    A 在接收到 B 的 SYN 之后,状态转化为 ESTABLISHED.
  4. A 收到 B 的 SYN 之后, 需要发送 ACK 给 B 告诉 B 自己收到了它的 SYN + ACK 包.
    这里注意:A 发送的ACK的值为 301, 原因是 B 的 SYN 中的 SEQ 是 300. A 发送的 SEQ 是 101,原因是上一次的请求中序列号已经增长到了 100. 下一个可用的序列号就是 101.
    在B接收到 A 的 ACK 之后,它的状态切换为 ESTABLSHED. 至此,三次握手已经完成,一个 TCP 连接已经成功建立。
  5. 在这条 TCP 连接上可以进行数据传输.

在了解了基本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值