TCP协议

1.TCP报文格式说明

  TCP协议在涉及到网络开发时,是接触的非常的频繁的。TCP报文时TCP层传输的数据单元,也就是报文段。 图片示意: TCP封装于IP内,IP数据报最大长度65535,头部最小20,TCP头部长度最小20, 所以最大封装数据长度为:65535-20-20=65495个。 源端口,目标端口 TCP源端口:源计算机的应用程序的端口号,占16位 TCP目的端口:目标计算机的应用程序的端口,占16位 CP序列号:sequence number,占32位 Header Length:TCP头偏移,指示何处数据开始

2.说明

2.1 TCP滑窗机制

  客户端和服务器之间的通信是一个数据传输过程,通信的消息将以数据包形式 进行传输。数据包从一个主机传输到另外一个主机需要经过路由器,网关等设备。   这些设备都需要对经过的数据进行处理。由于这些设备处理数据有一定的限制,不能 超过额定字节的数据,所以发送的时候需要确定发送数据包的最大字节数。 这个最大字节数被称为最大消息长度(Maximum Segment Size,MSS),当需要发送 的数据超过该值,就需要将数据分成多个包,依次发送,该操作称为数据分片。 MSS是TCP数据包每次能够传输的最大数据量,通常,最大值为1460字节,如果发送的数据 包大小大于MSS值,数据包将会分片传输。   为了更有效的进行通信,TCP协议在数据进行数据传输时,使用滑动窗口机制来同事发送多个 数据包,当数据包丢失时,TCP协议利用数据重发功能进行重新发送数据包,因为接收端接收 数据包的能力不同,TCP流量控制会根据接收端的能力发送适当数据的数据包。 滑动窗口机制,在进行数据传输时,如果传输的数据比较大,就需要拆分成为多个数据包进行 发送。TCP协议需要对数据进行确认后,才可以发送下一个数据包。因此发送端每发送一个数据包, 都需要接收端的确认应答以后,才可以发送下一个数据包,这样一来,就会在等待确认应答包环节 浪费时间,因此为了避免这种情况,TCP引入窗口概念,窗口大小指的是不需要等待确认应答包而可以继续 发送数据包的最大值