目录
是一种面向连接的可靠传输协议(需要逻辑通道)
一、特点:
①TCP是面向虚连接的传输层协议
②每一条TCP连接有且只能有两个端点,即每一条TCP连接只能是点对点的
③可靠、有序、无丢失、不重复
④TCP提供全双工通讯:发送缓存:应用程序发送给发送方TCP准备发送的数据,TCP已发送但是尚未收到确认的数据;接收缓存:按序到达但尚未被应用程序处理的数据,乱序到达的数据
⑤TCP是面向字节流的
注:TCP连接的四元组:源IP、源端口、目IP、目端口(两两对应为套接字)
套接字--->IP:port
二、TCP报文段:
(4B一单位)(伪首部12B,加源目IP)
序列号大小=上一个报文的序列大小+数据大小
1、确认序列号:
①该序列号表示接收方期望收到发送方发送的下一个字节的序号
②代表接收方已收到该确认序列号之前的所有字节
数据偏移大小=TCP首部大小(数据开端)
保留字端6B
2、窗口值:
指发送方可以不需要接收确认报文,就可以联系发送的数据最大值量
选项字段:MSS、时间戳、选择确认机制、窗口因子
TCP的确认机制被称为累积确认
3、标记位:
⑴确认位ACK:当ACK=1时,确认序列号字段有意义;在TCP连接建立后,所有传输的报文都必须将ACK置为1
⑵同步位SYN:代表连接请求
⑶终止位FIN:表明此报文段发送方数据已全部发送完毕,要求释放连接
⑷复位RST:表明TCP连接出现严重错误,必须释放连接,并重新建立新的传输连接
⑸紧急位URG:当URG=1时,表明此报文中存在紧急处理的数据,是高优先级数据,应尽快交付应用程序处理;与紧急指针配合使用
⑹推送位PSH:当PSH=1时,接收方应尽快交付接收应用进程,不再等待缓冲区填满再向上交付
三、TCP的可靠性机制
1、排序机制:
①MTU:最大传输单元--->包含数据部分、传输层头部、网络层头部--->以太网当中默认值为1500字节
②MSS:最大段长度--->仅包含数据部分
在本地设备上,如果进行了分段操作,则无法进行分片操作
2、确认机制
3、重传机制:
①RTT:往返时间,指的是发送方将数据发送后,到他接收对端反馈的确认报文的完整时间段
②RTO:超时重传时间,略大于RTT时间,RTO时间是动态变化的时间,会进行超时间隔时间加倍
超时重传---快速重传
客户端通过服务端的反馈信息从而进行数据重传的方式被称为快速重传机制,此时的重传并非是因为RTO时间到达而触发,而是因为客户端连续接收到3个冗余ACK报文--->快速重传机制会在RTO定时器超时之前重传报文段,从而解决超时重传时间加倍导致的延迟增大问题
为了加快重传效率,将累积确认机制修改为SACK机制(选择确认机制),在TCP首部中的选项内容中携带未收到的数字字段,从而引发客户端重传
4、TCP流量控制机制
窗口:指发送方可以在不接受确认报文的前提下,一次性发送的数据最大值
接收方会在连接建立之前创建一个接收缓存,用以存放发送方发送的数据,而窗口大小在最初等于接收缓存大小,之后窗口大小等于缓存大小减去已存在储存中的数据量(rwnd---接收窗口大小)
发送方根据每一次接收到的确认报文中的窗口字段,及时调整发送缓存大小,确保发送缓存用于小于等于窗口值
四、TCP连接管理
TCP连接的建立:TCP建立连接的前置条件或需要解决的问题:①每一端知晓对端的套接字②进行参数协商(MSS、窗口值、是否使用选择确认机制、窗口扩大因子、时间戳)③设备对资源进行分配
TCP存在一个保活计算器,该计算器2小时时间,若该计算器时间内没有收到任何客户端的数据,服务端会发送一个探测报文段,并每隔75秒发送10个探测报文仍没有反应,则服务器认为客户端出现故障,关闭连接
TCP连接的释放:①是为了释放在之前分配给TCP进程的资源②本地所有数据已传输完毕