IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

有关TCP Flag

kernelchina blogs 2012-08-17 13:10:45 累计浏览 6,686 次
本机暂存

    面试一小伙,老生长叹的问题,介绍一下TCP flags,小伙说多了,SYN, FIN在ACK的时候需要占一个Byte的数据,而其他几个不需要。于是反问之,为什么不要?小伙支吾一阵说,可能是其他几个不重要吧。

    这个问题其实很简单,对于需要ACK确认收到的标记,需要占用一个Sequence值。例如,你发送一个仅有FIN没有数据的报文,TCP一定要确认收到一把,而这种确认只能通过sequence加加。这个同标记的重要与否无关。其他的Flag是单向的不需要确认,尤其对于ACK,协议设计上就不允许确认,因为如果ACK需要确认,则协议必然陷入死循环不可自拔。

    对于SYN, FIN由于需要确认,因此逻辑上是Data的一部分。其实TCP的多数option也是需要确认的,逻辑上也是data的一部分。但Option设计本身就有option级别的确认机制,不需要利用sequence在搞一把。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. gen_tcp发送进程被挂起起因分析及对策 (累计阅读 37,821)
  2. 浏览器的工作原理:新式网络浏览器幕后揭秘 (累计阅读 23,680)
  3. TCP 的那些事儿(上) (累计阅读 22,696)
  4. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  5. 自建DNS以防止GFW干扰 (累计阅读 13,125)
  6. HTTP协议Keep-Alive模式详解 (累计阅读 12,104)
  7. 浅谈TCP优化 (累计阅读 11,082)
  8. 推荐一些socket工具,TCP、UDP调试、抓包工具 (累计阅读 10,845)
  9. 查看 Apache并发请求数及其TCP连接状态 (累计阅读 10,068)
  10. 推荐一些socket工具,TCP、UDP调试、抓包工具 (累计阅读 8,840)