目录
1.TCP(Transmission Control Protocol 传输控制协议) 作用
2.TCP 报文段详解
三, TCP 报文段详解
1.TCP(Transmission Control Protocol 传输控制协议) 作用
(1) 面向连接的, 可靠地, 基于字节流的传输层通信协议
(2) 将应用层的数据流分割成报文段并发送给目标节点的 TCP 层
(3) 数据包都有序号, 对方收到则发送 ACK 确认, 未收到则重传
(4) 使用校验和来检验数据在传输过程中是否有误
2.TCP 报文段详解
1. 源端口 (Source Port)- 两个字节
2. 目的端口 (Destination port)- 两个字节
TCP 报头中的源端口号和目的端口号同 IP 数据报中的源 IP 与目的 IP 唯一确定一条 TCP 连接.
3. 顺序序号 (Sequence Number)- 四个字节
4. 确认序号 (Acknowledgement Number)- 四个字节
顺序序号和确认序号是 TCP 可靠传输的关键部分. 序号是本报文段发送的数据组的第一个字节的序号. 在 TCP 传送的流中, 每一个字节一个序号. 一个报文段的序号为 300, 此报文段数据部分共有 100 字节, 则下一个报文段的序号为 400. 所以序号确保了 TCP 传输的有序性. 确认号, 即 ACK, 指明下一个期待收到的字节序号, 表明该序号之前的所有数据已经正确无误的收到. 确认号只有当 ACK 标志为 1 时才有效. 比如建立连接时, SYN 报文的 ACK 标志位为 0.
5. 偏移
6. 保留
7. 标志位 (TCP Flags)
(1)URG: 紧急指针标志, 为 1 时表示紧急指针有效, 为 0 则忽略紧急指针.
(2)ACK: 确认序号标志, 为 1 时表示确认号有效, 为 0 表示报文中不含确认信息, 忽略确认号字段
(3)PSH:push 标志, 为 1 表示是带有 push 标志的数据, 指示接收方在接收到该报文段以后, 应尽快将这个报文段交给应用程序, 而不是在缓冲区排队.
(4)RST: 重置连接标志, 用于重置由于主机崩溃或其他原因而出现错误的连接. 或者用于拒绝非法的报文段和拒绝连接请求.
(5)SYN: 同步序号, 用于建立连接过程, 在连接请求中, SYN=1 和 ACK=0 表示该数据段没有使用捎带的确认域, 而连接应答捎带一个确认, 即 SYN=1 和 ACK=1.
(6)FIN:finish 标志, 用于释放连接, 为 1 时表示发送方已经没有数据发送了, 即关闭本方数据流.
8. 窗口字段: 滑动窗口大小, 用来告知发送端接受端的缓存大小, 以此控制发送端发送数据的速率, 从而达到流量控制
9. 检验和: 奇偶校验, 此校验和是对整个的 TCP 报文段, 包括 TCP 头部和 TCP 数据, 以 16 位字进行计算所得
10. 紧急指针: 只有当 URG 标志置 1 时紧急指针才有效. 紧急指针是一个正的偏移量, 和顺序号字段中的值相加表示紧急数据最后一个字节的序号. TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式.
11. 可选和填充部分: 长度可变, 定义其他的一些可选参数
12. 数据部分: 可以存在, 也可以不存在
前十部分是 TCP 报文段头部一共 20 字节
来源: http://www.bubuko.com/infodetail-2946658.html