1. TCP介绍
TCP 是面向连接的、可靠的、基于字节流的
传输层通信协议。
2. TCP头格式
- 源端口号/目的端口号
- 序号
解决包乱序问题 - 确认序列
目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达,这个是为了解决丢包的问题。 - 首部长度
表示TCP首部有多少个(4字节)的值。 - 状态位
- URG ( urgent pointer) :紧急指针,当URG标志位被设置为1时,紧急指针被用来告诉设备发送的数据包的紧急程度。当标志位被设置为0时,紧急指针不产生任何效果。
- ACK (acknowledgment):确认,当ACK标志位被设置为1时,确认号字段有效。TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1。
- PSH (push):该位为 1 时,接收设备应该立即将这个数据包交给应用程序,而不是缓冲它。
- RST (reset):该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
- SYN (synchronize):该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
- FIN (finish):该位为 1 时,表示今后不会再有数据发送,希望断开连接。
- 窗口大小
双方都维护一个窗口(缓存大小),标识自己当前能够的处理能力。解决流量控制及拥塞控制问题。 - 校验和
TCP头部和数据部分的校验和,这是一个强制性的字段,由发送端计算和存储,并由接收端进行验证。其主要功能是检查数据在传输过程中是否发生了错误。 - 紧急指针
只在URG位字段被设置时才有效。这个“指针”是一个必须要加到报文段的序列号字段上的正偏移,以产生紧急数据的最后一个字节的序列号。TCP的紧急机制是一种让发送方给另一端提供特殊标志数据的方法。