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