AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

TCP 三次握手的过程 (面试高频)计网系列文章

作者: 作者的头像   wangzitiansky ,  2020-09-22 15:49:29 ,  所有人可见 ,  阅读 1545


3


2

TCP 三次握手

文章汇总 : 分享汇总 (计算机网络系列文章持续更新)

三次握手主要指 TCP 在建立连接时候的一系列过程

其他阅读地址

握手目的

  • 同步 Sequence 序列号
  • 初始序列号 ISN
  • 交换 TCP 通信的一些信息
  • 如 MSS, 窗口大小,指定校验和算法等

Sequence 序列号是什么?因为 TCP 需要有确认,并且需要防止上次连接的迟到的报文被接收,所以需要对每个报文打上一个标记,用来防止失序的,或者上一次连接的报文被接收

握手过程

假设两台主机 A 和 B,A 首先建立连接

  • A 发送一个 SYN 报文,进入 SYN_SENT 状态
  • B 接收到了之后,发送一个 SYN + ACK,进入 SYN_RCVD 状态
  • A 再回一个 ACK ,进入 ESTABLISHED 状态
  • B 收到 ACK 之后,也进入 ESTABLISHED 状态

三次握手.png

抓包分析

抓包三次握手.png

这是我用 Wireshark 抓到的三次握手的数据包,绿色 框起来的是三次握手相关的报文。我们来具体分析一下这三个报文

SYN 报文

    下面图片里的红色框起来的是关键字段 :triangular_flag_on_post:

SYN.png

这就是主动连接的一方发送的 SYN 报文,注意这个报文的 Flags 的 Syn 字段被设置为 1,并且带了一个初始的 Sequence number:306621534,记住这个数字, 这样 A 就将自己的序列号发送给了 B

SYN + ACK 报文

SYN + ACK.png

这个报文是 B 在收到 SYN 之后,对 A 的回应。作用是确认 A 发送来的 SYN,并将自己的序列号同步给 A 。

注意这里的 Acknowledgment number 是 306621535, 正好是 A 发来的 SYN 的序列号 + 1,这不是巧合,ACK 报文的确认号是 x ,意味着 序列号小于 x 的报文都收到了。

ACK 报文

ACK.png

这个报文是 A 对收到的 SYN+ACK 的确认。这里的 Acknowledgment number 也正好是 B 发送的报文的序号 + 1。

一些面试题目

现在三次握手相关知识都基本讲完了,来看几道面试题吧。

  • 可以两次握手吗

不可以,因为会导致已经失效的连接请求的报文段又传到了服务端。并且两次握手也不能保证双方都互换了序列号

  • 如果 A 发送给 B 的 ACK 中途丢失,会怎么样?

如果双方都没有数据发送, B 会周期重传 SYN + ACK ,直到 A 确认。如果 A 又数据发送,B 收到 A 的 Data + ACK ,会直接进入 ESTABLISHED 状态

参考
  • https://time.geekbang.org/course/detail/100026801-118357

  • https://mp.weixin.qq.com/s/NIjxgx4NPn7FC4PfkHBAAQ

  • https://www.zhihu.com/question/24853633

5 评论


用户头像
迷弟   2020-09-23 00:12         踩      回复

TCP好像有点东西,我看东哥小抄里也添加了这个

用户头像
wangzitiansky   2020-09-24 08:15         踩      回复

哈哈

用户头像
wangzitiansky   2020-09-24 08:15         踩      回复

东哥小抄是啥 给个地址?

用户头像
迷弟   2020-09-24 12:27    回复了 wangzitiansky 的评论         踩      回复

据说是LC国区很火的一个刷题指南和讲解
https://labuladong.gitbook.io/algo/labuladong-he-ta-de-peng-you-men

用户头像
wangzitiansky   2020-09-24 20:20    回复了 迷弟 的评论         踩      回复

可以的


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息