【网络是怎样连接的】—— TCP/IP 传输数据

      最后更新:2022-03-23 07:07


      协议栈的工作原理

      一. 协议院的内部结构

      如图所示,操作系统中的网络管理软件(协议仓库)在内部有多个部分,用途各异,图中自上而下的关系有具体的规定,上述部分分配到以下部分,以下部分分配到任务,并实际执行。

      在这里插入图片描述

      • 图的上半部分是网络应用程序,即浏览器、电子邮件客户、网络服务器、电子邮件服务器等等,这些应用程序代表了接收和向下层发送数据等活动。
      • Socket 库位于应用程序旁边,其中包括向 DNS 服务器发送请求所需的解析器。
      • 然后是操作系统的内部运作。其中包括协议栈。协议的上一节有两个组成部分。这些是负责通过TCP协议接收和发布数据的部分,以及负责通过UDP协议接收和发布数据的部分。他们将接受委托进行数据进出操作的应用程序。后半部分是IP控制网络包业务的一部分。在数据通过互联网传输时,没有解决问题的方法。信息将压缩成单一的网络包。IP用来传输网络包到通信对象 。
      • 网卡驱动器控制网络卡硬件,而网底负责实际进出行动,即发送和接收网络信号

      2. 套接字

      我们了解了协议仓库的内部结构 以及综合系统 在接收和交付数据方面起着关键作用

      控制信息储存在协议箱内的一个内存区。控制通信活动所需的控制安装装置存放在这一地点。例如,通信对象的IP地址、港口号、通信运作状态等等。它只是一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念,一个概念并不存在实体,如果必须分配给某个特定实体,这一控制信息称为包装实体。反之,包含软件包的实体是保存控制信息的内存区域。在礼宾仓库运作期间,必须审查这种控制信息。

      三,洛克的电话号码

      当您确定软件包的精确结构时, 当浏览器引用软件包库中的程序组件时, 请调查协议存储的内部是如何运行的 :

      • Socket 图书馆向礼宾室提供一系列活动,例如,浏览器委员会礼宾室利用TCP协议接收和传输数据。
      • 要构建套接字, 程序会调用套接字程序 。
      • 协议牌分配持有软件包和写入第一个状态控制信息所需的内存空间。
      • 通知该包件所代表的说明的应用情况。
      • 在将进出数据委托给协议仓库时,应用程序必须说明这一点,以便完成数据连接。

      连接服务器

      1. 连接的含义

      创建套接字之后,程序( 浏览器) 发布连接命令 。在此之后, 协议将连接本地的 Socket 和服务器的 Socket 。联系实际上是两个通信伙伴之间的控制信息交流。所谓控制信息,需要某些信息来规范数据的接收和交付。实例包括IP地址和端口号。此外,随着数据的接收和发送,我们还需要临时存储将要转移和接收的数据的记忆空间。缓冲区是给这个记忆区命名的名称。它也用于有关程序。它是与这个词的联系。

      2. 控制信息

      控制信息被广泛分为两类:

      • 头部中记录的信息
      • 套接字中记录的信息

      第一个是客户与服务器互动时传送的控制信息,不仅在连接时,包括数据发送和断开程序,而且在整个通信过程中都有必要,并在TCP协议标准中作了说明。

      在这里插入图片描述

      此数据将附加在客户端和服务器之间发送的网络软件包的起始部分。 由于数据接收和发送尚未在连接阶段开始, 网络软件包只包含控制信息。 由于控制信息位于网络软件包的起始部分, 它被称为头 。

      第二类控制数据是:储存在一个插座里用于管理协议仓库业务的数据。此处保存程序提供的信息以及从来文对象收到的信息。此外,关于数据传输和接收实施等情况的资料将保存在这里。议定书依靠这一信息来完成整个过程的每个阶段。

      3. 实际过程

      此程序始于与索克茨图书馆合同联系的申请程序。

      上述呼叫返回服务器的 IP 地址和端口号 。此信息将发送到协议仓库的 TCP 模块 。然后,IP地址与TCP模块相关。这是与服务器上的 TCP 模块交换控制信息。这一互动进程包括以下步骤:

      • 客户端生成一个信头,包括标有开始接收和发送数据操作的控件信息,将SYN头部控制位置设定为1,并表明它可能连接,以及相应的序列号和窗口大小。
      • TCP模块向IP模块发送信息,然后委托这些模块进行传播。
      • 服务器收到的数据通过 IP 模块发送到 TCP 模块 。
      • 服务器的 TCP 模块定位与 TCP 信头中的信息对应的端口号, 写入相关数据, 并更改连接状态 。
      • 服务器的 TCP 模块通过更新 TCP 信头中的发件人和接收端口号,并将 SYN 设置为 1 来返回答案。 另外, ACK 控制位置必须设置为 1, 表明收到了匹配的网络包 。
      • 客户将收到网包。使用 IP 模块, 连接到 TCP 模块 。此外,TCP头条信息确认服务器连接成功。如果SYN为1, 连接成功 。此数据将用于生成服务器的 IP 地址、 端口号等 。现在我们将状态设定为"完全连接"
      • 客户端也必须设置 ACK 到 1, 并将其发回服务器, 以便通知它响应软件包已经收到 。 此服务器收到此返回软件包后, 连接就已完成 。

      收发数据

      一. 礼宾室应收到HTTP请求函。

      申请程序要求以书面形式将数据传送到协议仓库,从而启动数据接收和发送程序。当协议柜台收到数据时,即进行发送操作。在收到数据后,没有立即发出协议。都是为了维持内部分配缓冲区的数据然后等待申请的以下段落。在数据累积到特定数量后,发送。关于需要收集的数据数量,以传达:不同类型和不同版本的操作系统将有所不同。

      2. 数据确认

      在交付网络包件后,还需要进行验证作业,以确认对方成功收到网络包件。

      首先,当 TCP 模块将数据分开时, 将数据分成两半 。首先将确定每件数据从一开始就等于初始字节。然后,在传送这个数据后,将估计的字节放入TCP的头部,当使用序列号字段时。然后,还必须告知接收人所提供数据的期限。但是,这不在TCP的大脑里。数据长度可用,因为整个网包的长度减少了头部的长度。因此,接收者可以使用这种方法进行计算。有了上面两个数值,正如我们可以看到的那样,传输的数据从第一个字节开始。长度是多少了

      通过这些信息,接收者可以检查是否缺少任何收到的网络软件包。如果确认没有遗漏,迄今为止收到的数据长度将由接收者加起来。我很久没有确定 我收到多少字节了 收到多少字节了此值随后返回到TCP头部的ACK 中的发件人。确认回复指的是返回ACK的程序。通过这样的方式,发送者将能够核实收到的数据数量。

      在这里插入图片描述

      在上次连接期间,进行了一项操作,将SYN控制位置设为1并将它传送给服务器,服务器将在此阶段相互告知序列号的起始值。

      我们刚刚查看了单向数据传输, 但是TCP数据是双向接收和传送的, 它被发送到客户和服务器, 所以我们需要做的就是逆转它。

      3. 实际过程

      首先,连接时, 客户端必须计算与客户端通信到服务器方向相关的第一个序列号值 。并将此值传输到服务器接下来,以此初始值, 服务器计算 ACK 并提供给客户端 。同时,此外,服务器必须计算与从服务器到客户方向的通信有关的初始序列号值。然后将此值转发给客户接下来像刚才一样,客户端必须根据服务器提供的初始值另外计算并返回 ACK 。到这里,序列号和ACK都完整了之后,我们可以进入数据接收和分发阶段。数据本身可以同时发送和接收。另一方面,客户首先向服务器提出请求。序号也随数据一起传送。然后,当服务器收到数据时, 它返回 ACK 。从服务器向客户传输数据的程序在另一个方向运作。

      在这里插入图片描述

      四。 Windows 用来正确处理 ACK 。

      等待ACK是传输包件的最简单和最易理解的技术。因此,在等待ACK的时候,如果我们什么都不做,我们就是在浪费时间。为了减少这些废物,TCP使用滑动窗口控制数据发送和ACK程序。所谓滑动窗口,在你寄了个袋子之后别等ACK回来相反,向受援国直接交付了一系列后续项目。这样一来,等待ACK将会被很好地使用。

      在这里插入图片描述

      这样做可能会减少等待ACK的时间,然而,必须解决一些令人关切的问题。在一来一回方式中,当接收程序完成后,接收者返回ACK。然后,发件人等待着ACK,然后寄出以下包件。因此,接收器不会提供太多他们无法处理的袋子。但是,如果没有收到ACK, 包将无限期传送。在某些情况下,包装的频率可能超过接收者的处理能力。

      让我更详细地解释一下。当盒子被送到收货人的房子时,数据将首先保存在接收缓冲区。然后,接收器必须计算ACK。将数据块组合起来, 将数据块恢复到原始内容, 并将其发送到程序 。你不必担心,如果你 不完成下一个。由于以下交付也将在接收缓冲地带短暂交付,获得一揽子计划的人数将增加。如果数据比处理和提供给申请的速率更快,所以,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多,在缓冲区内,你收到的数据越多最后就会溢出。缓冲区溢出之后,这样,数据就不会收到。因此,收货人将无法获得袋子的剩余部分。和中途错误是一样的这意味着它超出了接收方的处理能力。我们可以通过采取以下步骤来避免这种情况。首先,接收方必须告知发送方可以收到的最大数量的数据。基于此值, 发送器然后控制数据发送程序 。它是窗口滑翔方式的基本概念。

      关于幻灯片窗口的精确操作,即便如此,读起来也比较简单。在这张图中,接收方暂时将数据储存在接收缓冲地带,然后执行接收行动。当接收操作完成后,缓冲区的接收空间将予提供。我们可以收集更多的数据, 我们可以收集更多的数据。通过TCP页眉中的窗口字段,接收方然后将可能收到的数据数量告知发送方。这样一来,发送者不会发送过多的数据。它不再掌握在接收者或处理者手中。

      此外,单从图上看,很容易相信接收方在缓冲区满前什么都没做实际上并不是这样。这是为简洁的缘故这是故意试图模拟没有时间处理所收到货物的接收方。导致缓冲区被填充的情况。实际上,接收器一收到数据,即开始处理数据。如果接受者的表现优美,处理速度快于袋子到达的速度。缓冲区不久将耗尽。通过窗口字段通知发件人( N)

      在这里插入图片描述

      五、与窗口 ACK合并

      为了提高接收和接收数据的效率而需要审查的另一个问题是返回ACK和刷新窗口的时间,如果认为这两个参数不同,并且分两个不同的包件执行,结果会如何?

      首先,收件人收到发件人发送的数据。收到手术后,ACK将返回发件人。而再经过一段时间,当数据发送到程序时, 窗口大小必须修改 。但是,如果它是按照这个设计完成的,每收到一个包,两个独立的包件必须分别向发件人发送ACK和窗口,以更新更新。这样一来,收件者将太多的袋子还给发件人。导致网络效率下降

      因此,在发送确认和窗口更新时,它不会马上把袋子送出去这是一个耐心的问题。在整个过程中,预计将进行其他通知作业。然后可以将这两种警报集中起来,作为单一的一揽子发出。举个例子,窗口必须在等待收到 ACK 时刷新 。然后,在那个时候,ACK和窗口可以更新并装在袋子中交付。从而减少包的数量。当它被要求连续发送许多 ACK 时,减少包装数量也是可行的。这是因为 " ACK " 具体说明了所收到数据的数量。也就是说,在一天结束时,它告诉发送者目前收到数据的地点。因此,当必须连续传送ACK时,只是发送最后的ACK,就是这样。中间那些可以完全跳过当需要连续发送多个窗口更新时减少包装数量也是可行的。因为连续的窗口更新意味着程序持续要求数据,缓冲区的剩余面积不断扩大并加到缓冲区内。它与cock编号相对应。可以省略中间过程,仅仅发送最后结论。

      6. 接收响应

      浏览器必须接收操作,以便发送回复信息,这也需要协议柜台的参与。

      收看者从委员会柜台发来请求函。为获取回复信息,请使用阅读程序。然后,控制进程将被读取并发送到协议柜台。在达成协定后,将进行以下行动。和发送数据一样,接收数据需要在接收缓冲区临时储存数据。

      协议试图从缓冲区获取数据并将其发送申请。尽管如此,最近才发出索取资料的要求。可能回复还没回复需要一些时间才能回复回复信息。因此,缓冲区目前没有数据。此后不能恢复接收数据的程序。这时,申请将作为交易的一部分委托使用。换句话说,将数据从缓冲区移出并送交方案的进程已经开始。当服务器的回复信息到来时, 继续接收操作 。

      该协定将审查所收到的数据区块以及TCP头部。我们又不能弄清楚 是否缺少任何数据如果没有困难,ACK会被退回。然后,该协定暂时将数据区块储存在接收缓冲区。其后,为了恢复原始数据,您将连续加入数据区块。最后,把数据给计划。


      从服务器断开

      一. 数据传输后断开连接

      在应用程序认为所有数据均已收到后,客户将开始拆解过程,这一决定由应用程序作出,协议的制定是为了允许任何一方首先启动拆解过程。

      完成数据发送器的一方将启动中断过程,例如,服务器一方将启动中断过程:

      1. 服务器应用程序引用了 Socket 库的近距离功能 。
      2. 服务器上的协议仓库将制造TCP信头,提供断开信息,特别是控制位置的FIN比率临时为1。
      3. 协议仓库将指示 IP 模块向客户端发送数据, 解密将记录在服务器的带子中 。
      4. 当客户从 FIN 设置为 1 的服务器获得 TCP 信头时, 它会将其合成单词标记为处于断开状态 。
      5. 客户向服务器发送 ACK, 通知其已收到 FIN 1 号的软件包 。
      6. 客户端创建 TCP 软件包, FIN 位元设为 1, 然后将 IP 模块委托给服务器 。
      7. 服务器将返回 ACK 。 客户端和服务器的交互作用遍布此地 。

      在这里插入图片描述

      2. 删除套接字

      与服务器的通信结束后, 用于通信的路径将不再使用, 路径将撤回。 尽管如此, 插座不会立即被清除, 但会在一段时间后被删除 。

      同时,我们一直在等待这一刻 以避免管理不善程序失败有几个原因。例如,如果上一个客户端的 ACK 号码缺席,服务器没有收到 ACK 。FIN可能会重新印发。这时,客户端的套接字已被删除 。线条中的控制信息消失了连接插座的端口号将被解开 。如果另一个程序想要打开套接字,新的线条被分配到相同的端口号。服务器更新的FIN刚来这个FIN在新的设置中将会失败 。新的机制将启动中断程序。

      从等待需要多长时间来看,这是因为该包重新发送的方式所致。互联网自丢失以来首次被再次传送。这一程序通常需要几分钟时间。如果再发送几分钟后仍无效,则无法重新发送。则停止重传。在这段时间内,网络可能含有重新传送的物品。如前所述,也可以想象这种不当行为会发生。因此,你必须等到重新传送完成。协议没有对这一等待期作出明确规定。我们通常要等几分钟再删掉包裹


      总结

      以下是整个TCP进程:

      在这里插入图片描述


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

          热门文章

          文章分类