最后更新:2022-06-19 02:28:35 手机定位技术交流文章
TCP(Transmission Control Protocol)是一种面向连接、可靠和基于字节流的传输层通信协议,定义为IETF的RFC 793。
TCP设计为适应支持多网络应用的层级协议层次结构。一台主机中的两个进程连接到一个不同但相互连接的计算机通信网络,依靠TCP来提供可靠的通信服务。TCP假设它可以从较低级别的协议中获得,不可靠的数据报告服务。 原则上,TCP应该能够通过从硬线连接到一个子集交换或电路交换网络的多种通信系统进行操作。
(一)基于流动的办法;
(2)面向连接;
(三)可靠的通讯方法;
(四)在网络状况不佳时,尽量尽量减少系统再传输所造成的带宽费用;
(五)通信连接维护为两个面向通信的终端,不考虑中路网段和节点。
图1显示了第一个TCP格式:

--源端口是源端口,16位。
--目的地端口是目的地端口,16位。
--序列数是发送的包中第一个字符的序列数,32位。
--确认数是一个32位确认序列数。
--数据偏差是4位元的数据偏差,其值是第一个TCP(包括选项)长度减4。
--标记位置:6个位置,表明紧急标记字段有意义:
ACK表示认可号码字段的含义
PSH代表 Push函数,RST代表多个TCP连接
SYN代表SYN消息(在建立TCP连接时使用)
FIN表示不需要发送数据(在关闭TCP连接时使用)
窗口代表接收缓冲区的16位自由空间,用于告诉TCP连接自己可以接收的最大数据长度。
--检查sum是检查sum和16个数字。
--紧急指针是一个具有16位的紧急指针,这意味着该字段只有在设置URG标记位时才具有意义,表示紧急数据相对序列数的移动(序列数字段的值)。
客户端将SYN(SEQ=x)消息发送到服务器端,并输入SYN_SEND状态。
服务器端接收SYN消息,响应SYN(SEQ=y)ACK(ACK=x+1)消息,并输入SYN_RECV状态。
客户端从服务器端接收SYN消息,响应ACK(ACK=y+1)消息,并输入建立状态。
1.第一波:主机1(可以让客户,也可以是服务器端),设置序列数和确认数,向主机2发送 FIN 消息; 此时,主机1输入Fin_WAIT_1状态;这意味着主机1没有发送到主机2的数据;
2.第二波手势:2号主机收到1号主机发出的 FIN消息,返回一个ACK消息给主机,确认数是序列数加上1;主机1输入Fin_WAIT_2状态;主机2告诉主机1,我没有送任何数据。连接可以关闭;
3.第三波:2号主机向1号主机发送结束消息,请求关闭连接,2号主机输入CLOSE_WAIT状态;
4.第四波:主机1接收由主机2发送的 FIN消息,向2号主机发送ACK消息,然后 host 1 输入 TIME_WAIT 状态; host 2 从 host 1 接收 ACK 消息,就关闭连接;此时,主机1等待2MSL,但仍未收到答复。证明服务器端正常关闭,那好,主机1也可以关闭。
参考资料:
网络通信TCP协议三手_鱼-1226的博客-CSDN博客_TCP三手
记者,别让我三次握手,四次挥手
TCP-Three Shakes_Ching Bing's Blog's Blog-CSDN Blog_tcpThree Shakes
本文由 在线网速测试 整理编辑,转载请注明出处。