TCP提供一种面向连接的,可靠的字节流服务。
TCP 通过如下方式来提供可靠性:
- 应用数据被分割成TCP认为最适合发送的数据块。
- 超时重传机制。TCP发出一个段后,启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到确认,将重发报文段。
- TCP收到数据后,将发送一个确认。这个确认不是立即发送,通常推迟几分之一秒。
- TCP将保持首部和数据的校验和。用于差错检验,如果收到的数据出现差错,TCP将丢掉这个报文段并且不确认。(希望超时重传)
- 既然TCP作为IP数据报来传输,而IP数据报的到达可能失序,因此TCP报文段也可能失序。如果必要,TCP将对收到的数据进行重新排序,收到的数据以正确的顺序交给应用层。
- 既然IP数据报会发生重复,TCP的接收端必须丢掉重复的数据。
- TCP能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机只是较慢主机的缓冲区溢出。
TCP 首部
TCP数据被封装在一个IP数据报中。
TCP首部的数据格式,如果不计任选字段,通常是20个字节。
抓一个包:
TCP首部的源端口号和目的端口号 与IP首部的源IP地址和目的IP地址唯一确定一个TCP连接。