TCP总结及CSTP协议介绍
TCP是在OSI七层模型的传输层,用于为网络应用服务提供端到端的通信,与UDP一同作为传输层最长用的两个协议,两个协议各有特点,各自适用于不同的场景。
TCP的特点
面向连接—TCP在传输数据之前需要通过三次握手,建立一条虚拟的链路
可靠传输服务—TCP有ACK机制,对所以的数据包要进行响应确认机制,要确保对方收到数据包,而且根据滑动窗口协议,根据网络负载,自动调节发送的数据量
面向字节流—TCP对于上层传输下来的数据,以字节为单位,根据滑动窗口的大小发送,与上层传输下来的数据大小是无关的
TCP报文
源端口:2字节
目的端口:2字节
序号:4字节,TCP是面向字节流的,指发送数据的第一个字节的序号
确认号:4字节,期望收到对方下一个报文段的第一个字节序号
数据偏移:4bit,实际上指TCP首部的长度,单位4字节
保留:6bit,置零
紧急URG:为1时,表明紧急指针有效,告诉系统有紧急数据需要传送
确认ACK:为1时,确认号有效,在连接建立后所有传送的报文段ACK为1
推送PSH:为1时,接收方就立即发送TCP字节流,而不是等到缓存满
复位RST:为1时,表明需要释放连接,并重新建立
同步SYN:用来建立连接,为1时,表示是一个连接建立请求或接受报文段
终止FIN:用来释放连接,为1时,表示要求释放连接
窗口:2字节,接受窗口,从报文段的确认号算起,接受方容许对方发送的数据量
校验和:2字节,检验范围包括首部和数据,与UDP检验方法一样
紧急指针:2字节,指出报文段中紧急数据的字节数,窗口为0时,也可发送紧急数据
选项:扩展TCP的功能,最大为40字节
填充:使选项满足4字节的整倍数
数据:数据载荷
TCP三次握手四次挥手
三报文握手
第一次握手:建立连接时,客户端发送syn包(到服务器,并进入SYN_SENT状态,等待服务器确认
第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,客户端和服