TCP的三次握手和四次挥手
tcp是一种传输层通信协议,一个TCP连接通常分为三个阶段:连接,数据传输和关闭,通过三次握手来建立一个连接,四次挥手断开一个连接 目录 TCP报文头部介绍 三次握手建立连接 四次挥手断开连接 TCP的特点及使用场景 TCP报文头部介绍 TCP报文头部由以下几部分构成: 源端口号 目标端口号 序列号 确认号 头部长度 六个标志位 窗口大小 校验和 紧急指针 TCP头部选项 源端口号(16位) 标示报文的来源(客户端产生临时端口号) 目标端口号(16位) 标示报文的目的地(服务端指定端口号) 序列号(32位) 保证服务端接收到所有数据后能按正确顺序拼接起来,该序列号是由系统初始化的一个随机值ISN,一个报文的序列号=ISN+这个报文携带的数据的第一个字节的偏移量。 例子:要发5个报文,第一个报文的第一个字节的偏移量为0,序列号就是ISA+0;第一个报文携带的数据大小是1kb(1024),所以第二个报文的第一个字节的偏移量就是1024,序列号就是ISA+1024,以此类推。 (注意实际上三次握手时是会占据一个序列号的,所以实际上正式发送数据时第一个报文的序列号是ISA+1+0,这里为了方便理解就不考虑三次握手时占据的那个序列号)。 确认号(32位) 服务端收到客户端发来的报文后需要给客户端回复一个ack数据包,告诉客户端数据已经收到。回复报文的确认号=服务端收到的报文的序列号+1。