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