TCP/IP 协议栈

0802 TCP/IP 协议栈

以太网帧

MAC Header 【以太网帧的数据】 MAC Ender

TCP 协议头

0802 TCP/IP 协议栈

First

Source Port :源端口
Destination Port:目的端口

Second

  • Sequence Number:保证有序处理。
    因为IP层不保证有序
  • TCP中数据不是按包排序,是按字节排序,每个包的Seq Number代表的是发送字节的起始序号。
  • 发送第一个包序号是随机的,三次握手中交换。

Third

  • Acknowledgment Number:应答num,保证可靠
    一个主机向另一个主机发送数据,目的主机接收后,回应收到,否则,一直发送。

Fourth

  • Data Offset:数据偏移量
    因为Options长度是不确定的,所以,从哪开始获取数据呢,就从这个来判断
  • Reserved:保留字
  • URG:紧急标识。(较少用)
    ACK:确认收到消息
    PSH:向对方发送真正的负载数据,这个设置为1
    RST:复位。比如,向主机未开通80端口而依旧发送数据的话,会收到此标识位为1.
    SYN:三次握手时用。每次握手都要用
    FIN:第四次挥手时用。互相告知,结束。
  • Window:一个窗口多大,比如:一个窗口4048,每个包1024,那么一次可以接收4个,当满时,必须停止。

Fifth

  • Checksum:校验和,与IP中的校验各类似。
  • Urgent Pointer:紧急指针。

Sixth

  • Options:选项。比如,可以设置传输的最大报文大小。
    TLV格式:type length value。
  • Padding:保证32位对齐。

Seventh

data:真正TCP数据段。

Ack Number

在TCP 中表示:希望对方发送数据的起始位置
如:A向B发送一个大小为100B的数据,其Seq Number=100,则B收到后,返回Ack Number为2001.

相关文章: