tcp报文头

TCP和UDP使用相同的网络层,但是TCP提供的是面向连接的,可靠的字节流服务。

在一个TCP连接中,只有两方进行彼此通信。广播和多播不适用于TCP。

TCP通过以下方式来提供可靠性:

  1. 应用数据被分割成为最适合传输的数据块;
  2. TCP发送一个段后,它启动一个计时器,等待目的端确认收到这个报文段,如果超时没有收到确认,则重新发送;
  3. TCP会保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的变化。如果数据发送变化,会丢弃数据包并不发送确认,等待重传;
  4. TCP会对收到的数据进行重新排序,以正确的顺序发给应用层;
  5. 数据报发生重复时,接收端会丢弃重复的数据;
  6. TCP提供流量控制,防止缓冲区溢出。

TCP数据在IP数据报中的封装



tcp报文头_第1张图片
TCP包首部

源端口号和目的端口号用于寻找发端和收端应用进程,这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP进程;

序号用来标识从TCP发端向TCP收端发送的数据字节流,它是32位无符号数,序号达到最大值后重新从0开始;

确认号应是上次成功收到的数据字节号加1;

6个标志比特位:

URG:紧急指针有效;

ACK:确认号有效;

PSH:接收方硬尽快将这个报文发给应用层;

RST:重建连接;

SYN:同步序号用来发起一个连接;

FIN:发端完成发送任务。

 

流量控制由声明的窗口大小控制;

检验和覆盖了整个TCP报文段,TCP首部和TCP数据,由发端计算和存储,由收端验证。

 

你可能感兴趣的:(linux,tcp)