TCP.传输控制协议
是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。
特点:
1.TCP是面向连接(虚连接)的传输层协议
2.每一条TCP连接有且只能有两个端点。
3.可靠、有序、无丢弃和不重复。
4.TCP协议提供全双工通讯。
发送缓存
存放发送方TCP准备发送的数据。
TCP已发送但是没有收到确认的数据。
接收缓存
存放发送端发送来的不按照顺序到达的数据
按照顺序到达的数据,但并未被应用程序读取
5.TCP是面向字节流的。TCP将应用层数据仅看做是一串无结构的字节流。
TCP连接的四元组
源IP、源端口、目IP、目端口
确认序列号
接收方期望收到发送方发送的下一个字节的序号**。**
1.接收方希望接收到的报文序号;
**2.该序号之前的数据以全部接收。-----**累积确认机制。
选项字段:长度可变。MSS数值、窗口扩大因子、时间戳、选择确认机制。
确认位ACK:当ACK=1时,确认号有意义。在连接建立以后,所有传输的报文段都必须将该标志位置为1.
同步位SYN:SYN=1时,代表该数据段是一个连接请求报文。
终止位FIN:当FIN=1时,表明此报文段发送方数据已发送完毕,要求释放连接。
复位RST:表明TCP连接出现严重错误,需要释放连接并重新建立连接。
紧急位URG:代表该报文中存在高优先级的数据,应尽快处理。需要配合紧急指针使用。
推送位PSH:接收方应尽快将接收到的数据交付给对应应用程序。
TCP的可靠性
确认、重传、排序、流控。
MTU:最大传输单元--->以太网环境下1500字节--->数据包大小。
MSS:最大数据段长度
RTT--->往返时间(指发出端将数据发送后,到本端接收到对端反馈的确认报文的时间总和)
RTO--->超时重传时间
RTO取值略大于RTT值。
RTO数值是动态变化的数值。超时间隔加倍。
快速重传机制
根据接收方的反馈信息进行数据重传。客户端需要连续接收到三次确认序列号相同的ACK报文,则认为数据丢失,需要进行数据重传。
快速重传机制会导致部分数据重复传输,降低数据传输效率。
解决思路:使用选择确认机制。
在TCP首部的选项字段中,添加上未接收到的数据信息。发送方接收到该确认报文后,会根据选项字段内容,重新传输缺少的数据部分。
选择确认机制是否可以执行是需要通讯双方进行协商的。在三次握手的前两次SYN报文中进行协商。
窗口
窗口的大小是可以指定的,窗口大小指的是无需等待确认报文,而可以直接发送的数据包的最大值。
rwnd(接收窗口)
最开始等于整个缓存区的大小,浮动变化。