TCP是一种面向连接的可靠传输协议
TCP特点
·TCP是面向虚连接的传输层协议
·每一条TCP连接有且只能有两个端点
·可靠、有序、无丢失、不重复
·TCP提供全双工通讯
·TCP是面向字节流的
TCP报文段
1、确认序列号: ·该确认序列号表示接收方期望收到发送方发送的下一个字节的序号 · 代表接收方已收到该确认序列号之前的所有字节 2、 窗口值 :指发送方可以不需要接受确认报文,就可以连续发送的数据最大值 3、选择字段:MSS、时间戳、选择确认机制、窗口因子
TCP的标记位
1、确认位ACK
当ACK=1时,确认序列号字段有意义。在TCP连接建立后,所有传输的报文段都必须将ACK置为1.
2、同步位SYN
当SYN=1时,代表请求连接
3、终止位FIN
表明此报文段发送方数据已全部发送完毕,要求释放连接
4、复位RST
表明TCP连接出现严重错误,必须释放连接,并重新建立新的传输连接
5、紧急位URG
当URG=1时,表明此报文中存在紧急处理的数据,是高优先级数据,应尽快交付应用程序处理。与紧急指针配合使用
6、推送位PSH
接收方应尽快交付接收应用进程,不在等待缓冲区填满在向上交付
TCP的可靠机制
1、排序机制
MTU:最大传输单元【包含数据部分、传输层头部、网络层头部】以太网中默认值为1500字节
MSS:最大段长度【仅包含数据部分】
2、确认机制
接收方通常采用累计确认模式,即在连续收到几个包后,对顺序到达的最后一个包序号发送ACK,表明该数据包及之前的所有包都已经正确收到
选择性重传:对于顺序的包发送累积确认,对于跳跃的包,发送ACK,发送端只重传真正丢失的数据包
3、重传机制
RTT:往返时间,指的是发送方将数据发出后,到他接受到对端反馈的确认报文的完整时间段
RTO:超时重传时间,略大于RTT时间【RTO时间是动态变化的时间,会进行超时间隔时间加倍】
超时重传----快速重传机制
客户端通过服务端的反馈信息从而进行数据重传的方式被称为快速重传机制,此时的重传并非是因为RTO时间到达而触发,而是因为客户端连续接收到3个冗余ACK报文。
为了加快重传效率,将累积确认机制修改为SACK机制(选择确认机制),在TCP首部中的选项内容中携带未收到的数据字段,从而引发客户端重传。
4、流量控制机制
接受方会在接受建立之前创建一个接受缓存,用以存放发送方发送的数据。而窗口大小在最初等于接受缓存大小。之后窗口大小等于缓存大小减去已缓存中的数据量(rwmd---接受窗口大小)
TCP连接管理
1、TCP连接的建立
【TCP建立连接的前置条件或需要解决的问题】
·每一端知晓对端的套接字
·进行参数协商(MSS、窗口值、是否使用选择确认机制、窗口扩大因子、时间戳)
·设备对资源进行分配
2、TCP连接释放
·是为了释放在之前分配给TCP进程的资源
·本地所有数据已传输完毕