TCP提供的服务和首部详解
TCP是一个面向连接的、可靠的字节流传输协议。
- 面向连接:两个TCP应用在传输数据前必须建立连接。就像打电话一样。也就是在一个连接中传输的数据是有关系状态的,比如需要确定传输的对端正处在等待发送或接收的状态上
- 可靠:主要是指数据在传输过程中不会被损坏或者丢失或乱序,保证数据可以正确到达。
- 字节流:数据以字节流的形式传递给接收者的,没有固有的”报文”或”报文边界”的概念。即读取TCP数据就像从串行端口读取数据一样–无法预先得知在一次指定的读调用中会返回多少字节
TCP实现可靠性的一些手段:
- 分段:应用数据会被分割成TCP认为最适合发送的数据块
- 重传:当TCP发送一个段后,启动一个定时器,开始等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。
- 确认:TCP收到发自TCP连接一端的数据,会发送一个确认。(这个确认不是立刻发,而是稍微推迟几分之一秒(目的是为了减少发送的ACK数量))
- 校验和:TCP首部和数据部都有校验和,用来检测数据是否正确传输,如果校验和出错则直接丢弃该报文段并再次请求该报文
- 有序:TCP会对收到的的数据进行重新排序,将收到的数据按照正确顺序传递给应用层
- 去重:IP数据包可能会重复,TCP接收端将丢弃重复数据
- 流量控制:接收端和发送端都有对应的缓冲空间,只发送接收端能容纳的数据量大小。防止较快主机使较慢主机缓冲区溢出
- 拥塞控制:用于应对复杂的网络环境,通过拥塞控制实现
TCP的数据标识&#x