TCP Header

来源:互联网 发布:枪林弹雨刷枪软件截图 编辑:程序博客网 时间:2024/06/03 18:27
  
0                                16                            32
16位源端口号
16目的端口号
32位序号
32位确认序号
4位首部长度
保留(6位)
6位标志bit
16位窗口大小
16位检验和
16位紧急指针
选项
数据
 
l         TCP首部 >= 20 bytes
l         IP报文的总长为65535bytes(Including header & data, 由IP header中的4 bytes表示), So 选项+数据 最多可以有(65535-20-20)bytes, First 20 for IP, late for TCP. 首部长度的单位是32位字,So maximum header length is 16*32 = 512, right?
l         Please note “数据” is optional.
l         6 Bits Flag
-          URG, (If set, emergency pointer is available)
-          ACK
-          PUSH, (If set, the data will be send to the application before the buffer is full)
-          RST
-          SYN, (Setup Connection)
-          FIN, (Release Connection)
 
l         在建立连接时, 双方都会有一个初始序号,确认号是希望收到的下一个字节。
l         紧急指针
 
任何一个TCP输出段都可以携带紧急数据(Urgent Data), 以支持上层协议间紧急信息的快速传递。紧急数据必须位于数据段中所有数据的最前端, 并在TCP段头中设置如下字段:
    ①设置URG标志位, 表示当前数据段中携带有紧急数据。
    ②设置紧急指针。紧急指针与当前输出段的序号之和指出数据流中紧急数据最后一个字节。对于一个包含该字节的数据段来讲, 其紧急数据长度从段序号开始一直延续到该字节为止。
    当接收方TCP收到含有紧急数据的TCP数据段后, 首先把紧急数据从正常数据流中分离出来, 并保存在适当地方。然后, 以一定的方式通知上层协议,希望它尽快地响应和处理。
    当发送方TCP接到上层协议递交的紧急数据后, 并不是立即发送紧急数据,而是把它们排入正常数据的发送队列中。此后, 发送方TCP每发送一个数据段都要带有URG标志和紧急指针, 直到出现真正含有紧急数据的数据段为止; 不过越靠后的数据段紧急指针的值就越小。也就是说, 含有URG标志和紧急指针的数据段不一定就含有紧急数据, 只有包含紧急指针所指示的字节的数据段才真正含有紧急数据, 从段序号开始到该字节为止皆为紧急数据。此外, 发送方TCP即使发送窗口为 0 时也要对带有URG标志的数据段实行强制发送, 不管它们是否含有紧急数据。
 
原创粉丝点击