TCP和UDP一样是基于IP的传输层协议,但是不同于UDP的是TCP是一种面向连接的,可靠的字节流服务。
面向连接就是说两个使用TCP协议的用户在数据交互前先要建立一个TCP连接。
TCP的可靠性来源:
1. 应用数据是被分割成TCP认为合适发送的数据块,和UDP不同的是应用程序所产生的数据报长度不变。有TCP传递给IP的信息单位称为报文段。
2. TCP发送一个后启动一个定时器,等待目的端确认接收此报文段。乳沟在固定时间内没有收到确认报文将重发此报文段。(超时重传)
3. 当TCP收到对端的数据后会返回一个确认报文。
4. TCP使用首部和数据的校验和来检测数据在发送过程中的变化。如果校验和有差错,TCP将丢掉这个报文段和不确认收到此报文希望对端重发。
5. TCP会对收到的数据排序
6. 丢弃重复的数据
7. 提供流量控制。TCP的首部
每个TCP包都含有源端口号和目的端口号来寻找发送端和接收端的应用进程
序号用来标识从TCP收端发送的字节流,它表示这个报文段中的第一个数据字节
当建立一个连接时SYN变为1,SYN是发起连接的标志;
当断开一个连接时FIN变为1,FIN是断开连接的标志;
ACK是返回 确认的标志;
TCP为全双工服务。这意味着数据能在两个方向上独立的进行传输,因此连接的每一端必须保持每个方向上的传输数据序号。
TCP的流量控制是有窗口大小提供的。
校验和覆盖了整个TCP的报文段:TCP首部 和数据。
只有当URG为1时紧急指针才有效。