TCP 标志位/控制位/flags 是6位还是8位?

时间:2024-03-23 17:16:37

如果我们搜索tcp标志位,搜出来的文章基本上都在解释tcp的6个标志位。
但是你可能也在某些地方看到人说tcp有8个标志位(如下图)。
TCP 标志位/控制位/flags 是6位还是8位? 

图片来源

  • 那到底是6位还是8位呢?
    8位(如果不算在试验中的NS位的话)
  • 那为什么那么多人说有6位呢?
    因为多出来的两个标志位后来加的一个功能:显式拥塞通知(英语:Explicit Congestion Notification,简称ECN)是一个对网际协议和传输控制协议(TCP)的扩展,定义于RFC 3168(2001)。ECN允许拥塞控制的端对端通知而避免丢包。
    虽然如今普及度已经很高了,但仍有些老旧的路由器和操作系统(比如:xp)是不支持的。(详细内容请转至wiki百科 显式拥塞通知,如果打不开则是被墙了)
    在TCP连接上使用ECN也是可选的;当ECN被使用时,它必须在连接创建时通过SYN和SYN-ACK段中包含适当选项来协商。
     
    所以他们只是讲了tcp中最基础的,所有设备都支持的那6个标志位。
  • 试验中的NS位是啥?
    NS是随机和(Nonce Sum),用于防止TCP发送者的数据包标记被意外或恶意改动。
     
    NS (experimental) - The nonce sum flag is still an experimental flag used to help protect against accidental malicious concealment of packets from the sender. See RFC 3540 for more details.(来源:https://www.keycdn.com/support/tcp-flags

注意:如果考试中问你tcp flags有几个的话,就按照你们老师上课或教材上讲的写。(比如我们老师就给我讲的是6位,考试也考了,那我必然写6位啊,没有丝毫的犹豫和反抗)