TCP 的头部报文结构

OSI 模型或 TCP/IP 模型中的传输层一样,都是提供数据传输的服务,传输层上最重要的两个协议是 TCP 和 UDP。TCP 是面向连接的协议(Connection-Oriented),UDP是无连接的协议(Connection-Less)。下面我们着重说一下 TCP 协议。

TCP(Transmission Control Protocol,传输控制协议):TCP 在传输数据之前必须先建立一个连接。TCP 做了很多工作来提供可靠的数据传输,包括建立、管理和终止连接,确认和重传。同时 TCP 还提供分段和重组,流量控制(Flow Control)等。下面看一下TCP 的头部报文结构:

Source Port(源端口)源端口号(占用16位),发送端程序端口

Destination Port

(目的端口)

目的端口号(占用16位),接收端程序端口

Sequence Number

(发送数据序号)

用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节在数据流中的序号;主要用来解决网络报乱序的问题;(占用32位)
Acknowledgment Number(ACK 确认号)32位确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志(下面介绍)为1时该确认序列号的字段才有效。主要用来解决不丢包的问题;

Data Offset

(数据偏移量)

数据偏移量(4位)给出首部中32bit字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是20字节;如果有额外的TCP的option选项,还得加上option的长度。
Reserved(保留字段)保留字段,目前还没有使用。
TCP Flags(控制位)TCP控制位(6位),每一位代表一个控制位,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。
Window(窗口)窗口大小(16位),表示接收端可用缓冲区大小,根据缓冲区大小和每次包大小,就可以计算出同时处理的TCP包的个数。同时处理的包个数越多,则网速越快。
Checksum(校验和)用来检查TCP包是否完整(16位)

Urgent Pointer

(紧急指针)

表示应紧急处理的数据位置(16位)。路由器可以把紧急的数据包优先处理
Options(可选字段)可选字段,可变长度,最长为40字节。(因为Data Offset最多能表示60个字节长度的TCP头信息,固定的TCP头部为20字节)
Padding(填充)填充位。因为Data Offset 只能表示TCP头部的长度必须是4字节的整倍数。如果Options选项不足4字节的整倍数,就需要Padding填充为4字节的整倍数。

TCP Flags(控制位)中的控制位的解释如下:

URG此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据
ACK此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0
PSH这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队
RST这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包
SYN表示同步序号,用来建立连接。SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手;
FIN表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值