Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TCP格式 #1

Open
itcuihao opened this issue Mar 11, 2018 · 1 comment
Open

TCP格式 #1

itcuihao opened this issue Mar 11, 2018 · 1 comment
Assignees
Labels

Comments

@itcuihao
Copy link
Owner

TCP首部格式

  • Source Port, Destination Port(源端口号,目的端口号):分别占用 16 位,用于区别主机中的不同进程;由于 IP 地址用来区分不同主机,所以源端口号、目的端口号与 IP 首部中的源 IP 地址和目的 IP 地址,技能确定唯一的一个 TCP 连接;

  • Sequence Number(发送序号):32 位数据,用来标识从 TCP 发送端向 TCP 接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节在数据流中的序号,主要用来解决网络报乱序问题;

  • Acknowledgment Number(确认序号):占用 32 位,由接收端的计算机使用,将分段的报文重组成最初形式;如果设置了控制位 ACK = 1,则这个值表示下一个准备接受的包的序列码;

  • Offset(数据偏移量):占用 4 位,给出首部中 32bit 字的数目,需要这个值是因为任选字段的长度是可变的(如果没有任选字段,正常的长度是 20 字节);

  • Reserved(保留位):占用 6 位,且必须是 0,为了将来定义新的用途而保留;

  • TCP Flags(TCP 标志位):用于标志 TCP 的某些状态,它们中的多个可同时被设置为 1,主要用于操控

  • TCP 的状态机,6 个标志位依次为 URG, ACK, PSH, RST, SYN, FIN。每个标志位的意义如下:

  1. URG:紧急标志(Urgent),该标志表示 TCP 包的紧急指针域有效(后面将会说到紧急指针域的内容),用来保证 TCP 连接不被中断,并督促中间层设备要尽快处理这些数据;
  2. ACK:确认标志 (Acknowledge),该标志表示应答域有效,就是说前面提到的 TCP 应答信号会包含在TCP 数据包中;ACK 可以由两个取值( 0/1 ):应答域有效为1,反之为0;
  3. PSH:推标志 (Push),表示 Push 操作,即在数据报到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;
  4. RST:复位标志 (Reset),用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据报;
  5. SYN:同步标志 (Synchronize),用来建立连接。该标志经常与 ACK 标志搭配使用: 连接请求时,SYN = 1, ACK = 0;连接被响应时,SYN = 1, ACK = 1;SYN 的数据报经常被用来进行端口扫描,扫描这发送一个只有 SYN 的数据包,此时若对方主机相应了一个数据包回来,就表明这台主机存在该端口;
    这种扫描方式只是进行 TCP 三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器并不安全,一台安全的主机将会强制要求一个连接严格的进行 TCP 三次握手;
  6. FIN:结束标志 (Finish),表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描;
  • Window(窗口大小):用来进行流量控制(问题比较复杂,本博文中并不总结);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant