TCP协议
TCP提供一种面向连接的、可靠的字节流服务。三个关键字:面向连接、可靠的(有超时重传、流量控制、拥塞控制等机制)、字节流(TCP对字节流的内容不做任何解释)。具体来讲可靠性的保证由以下机制保证:
- 应用数据被TCP分割为最适合发送的数据块(主要是为了避免IP分片)(TCP数据段或者段segment),和UDP完全不同,应用程序产生的数据报长度将保持不变。
- TCP发出一个段后,启动一个定时器,等待目的端确认收到这个段。
- TCP的确认段不是立即发送出去的,通常会推迟几分之1秒(一般为200ms),这就是延迟确认或者捎带确认。
- TCP报文段会作为IP数据报来传输,IP数据报可能会失序到达,因此TCP报文段到达也会失序,TCP将对收到的数据进行重新排序。
- IP数据报会生重复,TCP的接收端必须丢弃重复的数据。 TCP提供流量控制(TCP首部拥有窗口大小数据)
- TCP拥塞控制(慢启动算法和拥塞避免算法)
TCP首部
TCP首部有6个标志比特位。
- URG
- ACK
- PSH
- RST:重建连接
- SYN:同步序号用来发起一个连接
- FIN:发端完成发送任务
TCP的流量控制由连接的每一端声明的端口大小来提供,这个窗口的大小最大是65535字节,可以动态的改变。
TCP校验和
校验的内容包含TCP首部和TCP数据;
TCP可选字段:Option
最长报文长度:MSS(Maximum Segment Size),每个连接的第一个报文段(包含SYN的那个报文段)中指定这个选项。
小结
- TCP提供了一种可靠的面向连接的字节流服务;
- TCP将用户数据按照合适的长度分割为TCP报文段(Segment),发送完毕后启动一个定时器,另一端收到后进确认对失序的数据进行排序;
- TCP提供端到端的流量控制,并计算和验证一个强制性的端到端的校验和;
- 许多应用层协议都使用TCP:FTP、SMTP、Telnet、Rlogin;