ECE标志表示ECN-Echo 。置为1会通知通信对方,从对方到这边的网络有拥塞 。在收到数据包的IP首部中ECN为1时将TCP首部中的ECE设置为1 。
3.URG ( Flag)
该位为1时,表示包中有需要紧急处理的数据 。
4.ACK ( Flag)
该位为1时,确认应答的字段变为有效 。TCP规定除了最初建立连接时的SYN包之外该位必须设置为1 。
5.PSH (Push Flag)
该位为1时,表示需要将受到的数据立刻传给上层应用协议 。PSH为0时,则不需要立即传而是先进行缓存 。
6.RST (Reset Flag)
该位为1时表示TCP连接中出现异常必须强制断开连接 。
7.SYN ( Flag)
用于建立连接 。SYN为1表示希望建立连接,并在其序列号的字段进行序列号初始值的设定 。
8.FIN (Fin Flag)
该位为1时,表示今后不会再有数据发送,希望断开连接 。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段 。每个主机又对对方的FIN包进行确认应答以后就可以断开连接 。
主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发 。
8.窗口大小( Size)
该字段长为16位 。用于通知从相同TCP首部的确认应答号所指位置开始能够接收的数据大小(8位字节) 。
如果窗口为0,则表示可以发送窗口探测,以了解最新的窗口大小 。但这个数据必须是1个字节 。
9.校验和()
TCP的校验和与UDP相似,区别在于TCP的校验和无法关闭 。
TCP和UDP一样在计算校验和的时候使用TCP伪首部 。
为了让其全长为16位的整数倍,需要在数据部分的最后填充0 。
校验和计算:
1.首先将TCP校验和字段设置为0 。
2.然后以16位为单位进行1的补码和计算 。
3.最后再将它们总和的1的补码和放入校验和字段 。
接收端在收到TCP数据段以后,从IP首部获取IP地址信息构造TCP伪首部,再进行校验和计算 。
由于校验和字段里保存着除本字段以外其他部分的和的补码值,因此如果计算校验和字段在内的所有数据的16位和以后,得出的结果是"16位全部为1"说明所收到的数据是正确的 。
注:TCP或UDP中使用校验和的目的:
相比检查噪声影响导致的错误,TCP与UDP的校验和更是一种进行路由器内存故障或程序漏洞导致的数据是否被破坏的检查 。
TCP或UDP如果能够提供校验和计算,也可以判断协议首部和数据是否被破坏 。
10.紧急指针 ( )
该字段长为16位 。只有在URG控制位为1时有效 。
该字段的数值表示本报文段中紧急数据的指针 。正确来讲,从数据部分的首位到紧急指针所指示的位置为止为紧急数据 。
紧急指针指出了紧急数据的末尾在报文段中的位置 。
如何处理紧急数据属于应用的问题 。一般在暂时中断通信,或中断通信的情况下使用 。
紧急指针也用作表示数据流分段的标志 。
11.选项()
选项字段用于提高TCP的传输性能 。
因为根据数据偏移(首部长度)进行控制,所以其长度最大为40字节 。
选项字段尽量调整其为 32位的整数倍 。
1.类型2的MSS选项用于在建立连接时决定最大段长度的情况 。这选项用于大部分操作系统 。
2.类型3的窗口扩大,是一个用来改善TCP吞吐量的选项 。如果采用了该选项,窗口的最大值可以扩展到1G字节 。由此,即使在一个RTT较长的网络环境中,也能达到较高的吞吐量 。
3.类型8时间戳字段选项,用于高速通信中对序列号的管理 。如果接收端对新老序列号产生混淆就无法实现可靠传输 。为了避免这个问题的发生,引人了时间戳这个选项,它可以区分新老序列号 。
- 解密:二十四史中《晋书》是如何被编撰成书的?
- IP、TCP、UDP首部详解
- 下面是以十六进制格式存储的一个udp首部_【干货】论UDP协议
- 下面是以十六进制格式存储的一个 UDP 首部:~~~TCP连接使用1000字节的
- UDP首部解析
- TCP及UDP首部各个字段
- 四 网络编程 ———— UDP首部格式
- TCP/UDP协议首部格式
- UDP 首部格式
- 三十六解二十四厄,谁看过七元解厄系列+番外