最后更新:2022-07-05 22:32:17 手机定位技术交流文章
TCP数据报格式
(一)序列数:序列数,占32位,识别从TCP源发送到目的地的字节流,当启动器发送数据时,这个标记。初始序列将设置为随机初始值(ISN),其次是整个节点流中的序列值 = ISN+数据转移
确认编号:确认编号为32位,需要确认符号的附带。确认编号字段仅有效,确认符号为1小时,整个字段为接收编号值+1。
(三)旗帜:总共六种,即URG、ACK、PSH、RST、SYN、FIN等。
URG: 紧急提示有效.
ACK: 确认序列有效性.
PSH:接收器应尽快将此消息提交到应用程序层。
RST:重置连接。
苏恩:启动新的连接。
FIN: 释放一个连接.
TCP通信主要基于图表上六个标志
下面的图表是TCP通信的时间序列

三个握手都是由内核完成的,用户看来是通过服务端接受()执行完成的,客户端则通过连接()函数完成的。
例如,客户端请求SYN=1创建连接(第一手握手),如果服务器终止直接创建此连接并返回包含SYN、ACK和Seq内容的包给客户端,由于网络传输,该包丢失了,在丢失后,客户端没有收到返回服务器的包,此时,客户端将检索创建连接的请求,因为连接尚未创建。服务器将重新打开端口连接.所以服务器上没有接收请求的数据的顶端端口总是打开的,长此以往,这样的端口多了,这将导致严重浪费服务器端费用。
另一个情况是,由于延迟或其他原因,已经不活跃的客户端发送的请求信息被发送到服务器端,服务器端假设正常客户端发送的有效请求是有效的,收到后会发生错误。
因此,我们需要一个“第三手握”来确认这一过程,允许客户端和服务器及时检测因网络问题而导致的连接失败,以便服务器的端口可以不等待地关闭。
服务不需每次答复,只有最后一次
为什么四次,为什么半关?
连接成立后, 是全职工作,客户要求服务终止,服务器要求客户端同意关闭,只是客户不能再把数据发送到服务器上,但是服务器仍然可以向客户端发送数据,这是关闭的插座中发送缓冲区,但是接收缓冲区仍然开放
当服务端想关闭到客户端后,客户端也可以向服务端发送数据,即使客户端已关闭发送缓冲区

本文由 在线网速测试 整理编辑,转载请注明出处。