3.5.1 概述

Transmission Control Protocol 传输控制协议( TCP )是面向连接的传输层协议,能提供全双工的,可靠的数据传输。为 TCP/IP 协议栈的一部分。
所谓面向连接,即当连接时,需创建一个虚拟电路。并且它所传输字节是编号的,丢失或损坏的数据是会被请求再次传送。完整的传送数据的完整性,是通过校验和来确保。
当前大部分的应用层协议都使用 TCP ,如 FTP,HTTP,TELNET 等。
TCP 连接需要指定的两端(来源和目的地)的端口号。 这个数字是 2 字节,所以它值介于 0 65535 。关于 TCP 的端口号可查看 [url]http://www.iana.org/assignments/port-numbers[/url]

3.5.2 TCP数据包的格式

TCP 数据包的格式
如下图 ,使用 Wireshark 捕获到的一个 TCP 数据包的内容
Source port (源端口号) :一个 2 字节的字段,源设备的端口号。
Destination port (目的端口号) :一个 2 字节的字段,目的设备的端口号。
Sequence number (序列号) :一个 4 字节的字段,用于保证到达的数据正确顺序的数字。
Next sequence number (下个序列号) :一个可变字节的字段,当前已收到的字节数。
Acknowledgement number (确认号) :一个 4 字节的字段,期待传输的下一个 TCP 字节的编号。
Header length (报头长度) :一个 1 字节的字段,报头的字数。
Flags (标记) :一个 1 字节的字段,有控制功能的标记,具体见表 3-4
     3-4 Flag 的字段
字段
描述
Congestion Window Reduced CWR )拥塞窗口减少
由发送主机设置,以表明它收到带 ECE 标记设置的 TCP 数据包。
ECN-Echo
[url]http://tools.ietf.org/html/rfc3168[/url]
表明了 TCP 的对等体在 3 次握手过程中,是明确拥塞通知 能力的,即允许端到端的通知挤塞,并不丢弃的数据包。
Urgent (紧急)
被用于发送的数据,要立即被处理,无需等待接收设备缓存中的数据完成。
Acknowledgment (确认)
确认从主机之间收到 TCP 数据
Push
表示数据包中的数据必须迅速传播到上层协议处理。
Reset (重置)
由于不可能恢复的错误,造成 TCP 连接重置 . 当被接收 TCP 段的 RST, 接收方必须终止连接。导致双方立刻重新设置连接和发布它的资源。结果可能导致数据在传送中被丢失。 RST 不为正常关闭 TCP 连接方式 ; 它表明一个异常条件。通常关闭 TCP 连接 , 使用 FIN 标志。重新设置的原因可能是主机崩溃或被延迟的 重复 SYN 包。
Syn (同步)
打开主机之间的虚拟电路的连接
Fin (完成)
用主机来结束 TCP 连接,不再需要数据传输。
 
Windows size (窗口尺寸) :一个 2 字节的字段,发送设备希望接收的字节数。
Checksum (校验和) :一个 2 字节的字段,根据报头和数据字段计算出的校验和。
Data (数据) :一个可变字节的字段,上层协议的数据。