最后更新:2022-05-12 00:14:25 手机定位技术交流文章
计算机网络系统结构的实际水平、数据链层和网络层处理通过异构体网络连接主机时遇到的问题,导致主机与主机之间的通信。
然而,实际上,在计算机网络上互动的真正因素是通信双方的过程。
运输层的责任是提供直接通信服务,以便在单独的主机上运行应用程序。端对端协议是运输层协议的另一个名称。。
运输层保护高级别用户不受网络核心细节的影响,使申请过程仿佛两个运输层实体之间有端到端的逻辑通信联系。
在运输一级,有两个主要协定:TCP和UDP。
TCP是一种以字节为基础的传输层通信议定书,具有连通性和可靠性。

根据TCP议定书,转让控制议定书的目的是规范数据运输。
先来看看它的报头

让我们看看每个组成部分意味着什么,以及它是如何运作的。
URG: 确定紧急指针的有效性
识别来验证序列号的真实性, 我们引用这篇文章, 包括ACK标志作为确认部分。
PSH: 用于通知接收程序, tcp 缓冲区的数据必须迅速读取 。
RST: 重新连接请求: 带有RST标志的报告称为报告副本。
SYN 同步序列编号(同步安全编号): 连接请求。 一个同步段落是包含 SYN 标识的文本 。
FIN:告诉另一端,此端已准备关闭,带有FIN徽章的报告被称为最后一段。
通常, tcp 需要三个握手和四个波来连接。
那么,三次握手?什么是四次波浪?
三次握手
第一次:
客户端 - - > 服务器 此时服务器知道了客户端要建立连接了
第二次:
客户端 < - - 服务器 此时客户端知道服务器收到连接请求了
第三次:
客户端 - - > 服务器 此时服务器知道客户端收到了自己的回应
您可以假设客户端在到达时与服务器连接。
再来看个图.

最初,客户和服务器都处于CLOSE(关闭)状态。
在现阶段,客户积极向服务器提交连接请求,服务器被动接受。
1. TCP服务器程序首先构建了TCB传输控制区块(TCB为目前每个TCP连接提供控制值),并准备接收客户程序的连接请求,因此服务器进入了ListEN(收听)状态。
2. TCP客户程序还产生一个传输控制区块(TCB),并向服务器发送连接请求。SYN=1号电文第一部分的同步符号此时,当选择初始序列号后序号 = x时,TCP客户程序处于SYN-SENT州(同步发送)。TCP称,数据不能通过SYN报告(SYN=1)传送。然而,必须吃掉序列号。
3. TCP服务器收到请求后,如果连接被接受,即发出确认信息。当 TCP 服务器进程进入 SYN-RCVD (同步接收) 时, 确认 ACK=1, SYN=1, 确认序列号 x+1, 并为自己创建序列号后继 = y 。虽然本文无法传输数据,但它确实消耗了一个序列号。
4 收到确认后,TCP客户程序向服务器确认。确认ACK=1,确认序列号y+1及其自己的序列号x+1。
TCP 连接此时已建立,客户已进入已建立(连通)状态。 服务器收到客户确认后,服务器也处于已建立状态,双方都可以开始沟通。
主要目标是防止意外向服务器发送断层连接请求。从而产生错误。如果用两个握手来建立联系,假设有这种情况客户启动了连接,但并未放弃连接。只是他们上网太久了TCP客户不能这样做,因为他们很晚才收到确认信息。我以为服务器错过了目前,该员额已重新发送到服务器上。此后,客户和服务器通过两次握手连接。传输数据,然后关闭连接。连接请求与目前留在后面的连接请求无效 。自网络打开以来,它已经到达服务器 。这本应该是一纸空文但是,由于两个握手程序,客户端和服务器将能够重新连接。这将导致可避免的错误和支出。
即使无效电文发送了三次, 服务还是得到了无效电文, 并对确认作出了回应, 但客户将不再提交确认。 因为服务器没有收到确认, 已知客户并未寻求连接 。
因为三次是充足的,四次是多余的。
数据发送后,双方可以断开联系。
客户端和服务器目前都处于设定状态, 因此客户端主动断开, 服务器被动断开 。
1. 客户程序发出连接发布信息并停止数据传输。
释放数据报文首部,FIN=1,序号是后序号=u(等于先前交付数据的最后字节)加1。客户现已进入FIN-WAIT-1系统(终止延迟1号)。 TCP规定,金融情报处报告说,即使他们没有数据,也无法这样做。也要消耗一个序号。
2 收到连接发布信息后,服务器发出确认信息,即ACK=1,核查序列号u+1,并携带自己的序列号后继序列号,服务端此时进入CLOSE-WAIT(近距离等待)条件。
TCP服务器与高级别应用程序进行通信。客户被放行 并引导到服务器上。这是一个半封闭期。用户无进一步信息可发送 。然而,如果服务器提供数据,客户端依然要接受。目前的设想将持续一段时间。也就是说,CLOSE-WAIT状态的长度。
3. 客户收到服务器的确认请求后,即进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接发布信息(但需收到服务器提供的最后数据)。
4. 当服务器最终传输数据时,这篇文章是全球之声在线特稿的一部分。FIN=1,确认序号为v+1,由于在半关闭状态,服务器最有可能发送更多的数据 。如果当前序列号是后序号 = w,此时,服务器处于 LAST-ACK( 最后确认) 状态 。等待客户端的确认。
5. 客户收到服务器连接释放后,必须发出确认,ACK=1,确认序号为w+1,u+1是他的序列号此时,时间-时间(等待)是客户的状态。并不是说TCP的连接还没有被放弃在通过2 *MSL(报告期最长期限)之后,当客户撤回相关TCB时,我们只是现在处于封闭状态。
6 一旦收到客户的确认,服务器就将其状态改为封闭数据交换系统。同样,TCB的退出终止了TCP连接。从可以看出,服务器在客户之前终止TCP连接。
再来看一张图.

MSL(Maximum Security Limited)报告在互联网上持续时间最长,此后将丢弃。 )TCP允许根据性能选择多个MSL值。
第一,客户先前的 ACK 信息保证访问服务器。可以想象这份ACK报告是错的从服务器的角度来说我要求关闭一份FIN+ACK报告客户尚未答复。我本想请求你破解这个信息 但它永远无法到达那里因此,服务器将再次发送。客户可以在 2MSL 内接收再次发送的信息。接着给出回应报文,此外,将重新启动2MSL时限。
第二,避免出现类似“三握手”中指定的“已失效连接请求”的外观。在客户发出最后确认信息后在这个2MSL时区在连接期间创建的任何文本信件将从网络中删除 。因此,对以前连接的要求将不出现在新的连接中。
收到连接请求的 SYN 信息后,服务器在连接建立时向 ListEN 中的客户端发送 ACK 和 SYN 。
而关闭连接时,在服务器接收了FIN的另一封信后这仅仅表明,相反一方可能不会发送数据,但仍然可以接收数据。另外,并非所有数据都是相互发送的。所以我们可以马上把它关掉我们还可以交流信息。除了向另一方发送FIN电文,要求立即关闭连接。因此,通常,ACK和FIN是单独发送的。从而导致多了一次。
TCP有一个运行中的计时器。显然,如果客户不成功服务器不能再等待了 。白白浪费资源。每次服务器收到客户端请求, 定时器都会重置 。标准时间是两小时如果你在两小时内没有从客户那里得到数据,将收取费用。服务器将发送检测器消息 。其后每75分钟印发一次。如果一连串的十份检测报告没有反应 很难找到摆脱困境的方法服务器相信客户端失败 。接着就关闭连接。

TCP为每个字节指定了一个序号。

每个ACK都有自己的序列号(背), 它告诉发件人我收到什么数据, 以及下次你从哪里开始。
例如,如果客户向服务器提供1005字节的数据,服务器返回确认序列号为1003,表示服务器只收到1-1002数据。
1003、1004和1005错过了它。
客户此时将从1003重新发行。

由于网络堵塞等原因,在主机A发送数据后,数据可能无法到达主机B。
如果主机A在规定的时间内没有得到主机B的确认答复,将重复请求。
但是,在确认ACK之前,主机A可能已经失去了它。

在这种情况下,东道主B将获得大量重复数据。
因此,TCP议定书必须确定包件是否重复并删除。
使用上面列出的序列号来权衡现在很简单了
超时时间如何确定?
在最佳情况下,规定一个时限,以确保答复回到该时限之内。
然而,这一时期的长短因网络环境而异。
如果花费的时间太长,整个再传送效率就会受到影响;如果花费的时间太短,可能会经常发送重复的包裹。
为了在每种情况下能够进行高性能交流,TCP不断计算这一最长超时。
我们最近检查了反应验证技术,对于提供的所有数据部分,为了确认答案,都需要使用ACK。在得到ACK后,发送下一个数据部分。
这在业绩方面有很大的不利之处,特别是当数据流动时间较长时更是如此。
那么,我们可以同时发送许多数据部分吗?
例如这样:

一个概念:窗口
无需验证即可传输数据的最大值称为窗口大小。
上述窗口大小为4,00字节(四段)。
在交付前四段之前,不必等待任何 " ACK " 。
获得初始的 ACK 确认回答后, 窗口返回到第 5678 段, 并继续传输数据..
幻灯片窗口之所以命名,是因为它向后滑翔。
要将这个幻灯片窗口保留在操作系统中,必须创建一个传输数据的缓冲器,以记录哪些数据尚未解答。
只有在 " ACK " 核实数据反应之前,数据反应才能撤出缓冲区。

如果袋子掉下来了,我们如何重新传送?
此时此刻有两种会谈:

在这种情况下,失去部分ACK并不是一个大问题, 因为验证通过后续ACK收到的数据包也是可行的。

当部分信息丢失时,发送者会像提醒发送者一样得到1001个这样的背包:“我要1001个”。
如果发件人主机收到同一“ 1001” 三次的相同响应, 数据 1001 - 200 将重新发送 。
接收器此时收到1001, 后回回至ACK 7001。
由于以前曾收到2001-700个接收端,因此分配给接收端操作系统的接收端缓冲区。
这一方法称为“高速再发射控制”(有时称为“快速再发射”)。
接收器只能以一定速度处理数据。 如果发送者发送速度太快,接收端的缓冲器满满, 将会导致包件丢失, 并因此导致一系列连锁反应, 如包件被丢弃 。
因此,TCP支持发件人相对于接收端处理能力的速度。
流动控制是给这种技术命名的名称。
在TCP的第一部分,接收器指定了在“窗口大小”字段中可能接收的缓冲的大小。
通知发件人;
窗口大小越大,网络输送量越大。
当接收器意识到其缓冲剂已接近满载时,它会缩小窗口的大小,并向发送者发出通知。
当发送者被告知此窗口的大小时, 它会降低自己的发送速度 。
如果接收方完全满载,窗口将被重置为零。
发送器此时将不再发送数据,但需要定期发送窗口检测数据段,以便接收器能够调整窗口的大小并将其发回发送者。

那么,接收器如何将窗口的大小告知发件人?
我们的 TCP 前端有一个16位数的窗口大小字段, 持有窗口大小信息 。
TCP 最大窗口大小为 16 位数 65536。 65536 字节是 65536 字节?
实际上,TCP最初的40字节包含一个窗口扩展因子M, 实际窗口大小是窗口字段移到M-bit左侧的值( 向左移动一等于2乘以2) 。
尽管有一个大的滑冰窗口,但TCP能够有效和可靠地传送大量数据。
但如果你马上传输大量数据 可能会引起一些问题
当网络上有这么多机器时, 网络可能已经人满为患了。
在不了解网络目前状况的情况下发送大量数据,很可能使情况恶化。
因此,TCP包括一个缓慢的启动机制,它能够首先发送少量数据,以探索路线,确定目前的网络拥堵程度,然后决定传输数据的速度。

这是对压缩窗口概念的介绍。
在发送的起始处,定义压缩窗口大小为 1;
当你收到ACK的回答时,你将它插进窗口。
在发送数据包的同时,将压缩窗口的大小与接收器对主机的反馈进行比较,并使用较小的数字作为真正的发送窗口。
与上面那些一样的螺旋形窗口的数量 正在以指数速率增长
"缓慢的开始"只是: 缓慢的开始, 但它正在迅速扩张。
为了避免增长过快,在这里引入了一个称为缓慢启动门槛的词,当压缩窗口大于这一门槛时,它会直线增长,而不是指数增长。

当 TCP 启动时, 慢启动阈值等于最大窗口值 。
每次你超过缓慢的起始阈值,就会减少一半,而冷凝窗口则返回一个。
我们基本上在一段时间内使用少量的投放袋 启动再传输系统
有很多空投袋, 我们认为是因为互联网堵塞。
随着TCP对话的开始,互联网的性能将提高。
随着网络的拥挤,吞吐量急剧下降。
最后,TCP同意尽快相互发送数据,同时避免妥协,以免给网络带来太大的压力。
UDP缺乏全面控制机制,而是依靠IP提供“无连通”的通信服务。
用户数据报告协议(UDP)是UDP的全名。 User Datagram Protocol),UDP 允许程序提供密封的 IP 数据包而不建立连接 。如果应用程序开发者在 TCP 上选择 UDP, 它则不是 TCP 。因此,申请等于直接处理知识产权。
联合民主党协议的区别在于不相干、不可靠和以数据为导向的报告,整个程序与邮件程序类似,每次收到和发送数据时,都发送完整条款,不相干、不可靠和以数据为导向的报告,整个程序与邮件程序类似,每次收到和发送数据时都发送完整条款。
联合民主党协议非常直截了当,头部8字节(64比特),联合民主党头条格式如下:

1:连接
2:服务对象
3:可靠性
4: 选区管理、交通管理
5:首部开销
由于TCP是相连的,并保证可靠的数据传输,它经常被用于:
由于UDP没有连接,它可随时提供数据,它自己的处理简单而有效;它经常用于:
本文由 在线网速测试 整理编辑,转载请注明出处。