传输控制协议TCP
传输层协议的最终目的是为数据提供可靠的端到端传输
TCP是一个面向连接的协议,因为它在传输数据之前会事先发起一个正式的连接,用来追踪数据包的递送。当传输快要结束时,他会正式关闭会话的管道
TCP报头
0-7 | 8-15 | 16-23 | 24-31 |
---|---|---|---|
源端口 | 源端口 | 目标端口 | 目标端口 |
序号 | 序号 | 序号 | 序号 |
确认号 | 确认号 | 确认号 | 确认号 |
(0-3数据偏移)(4-7保留位) | 标志 | 窗口大小 | 窗口大小 |
校验和 | 校验和 | 紧急指针 | 紧急指针 |
选项 | 选项 | 选项 | 选项 |
-
源端口:用来传输数据包的端口
-
目的端口:数据包要被发送到的端口
-
序号:这个数字用来表示一个TCP片段,这个域用来保证数据流中的部分没有缺失
-
确认号:这个数字是在通信中希望从另一个设备中得到的下一个确认号
-
标志:URG ACK PSH PST SYN FIN标志都用来表示所传输的TCP数据包的类型
-
窗口大小:TCP接收者缓冲的字节大小
-
校验和:用来保证TCP头和数据的内容到达目的地之前的完整性
-
紧急指针:如果设置了URG位,则这个域将被检查作为额外的指令,告诉CPU从数据包哪里开始读取数据
-
选项:各种可选项,可以在TCP数据包中进行指定
Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1
Transmission Control Protocol, Src Port: 59175, Dst Port: 56025, Seq: 0, Len: 0
源端口
Source Port: 59175
目的端口
Destination Port: 56025
序号
[Stream index: 0]
[TCP Segment Len: 0]
Sequence number: 0 (relative sequence number)
Sequence number (raw): 3357358121
[Next sequence number: 1 (relative sequence number)]
确认号
Acknowledgment number: 0
Acknowledgment number (raw): 0
1000 .... = Header Length: 32 bytes (8)
标志
Flags: 0x002 (SYN)
窗口大小
Window size value: 65535
[Calculated window size: 65535]
校验和
Checksum: 0xb4a1 [unverified]
[Checksum Status: Unverified]
紧急指针
Urgent pointer: 0
选项
Options: (12 bytes), Maximum segment size, No-Operation (NOP), Window scale, No-Operation (NOP), No-Operation (NOP), SACK permitted
[Timestamps]
TCP窗口
- 端口:找到对应的应