【网络是怎样连接的】第六章 请求到达服务器以及响应给客户端(完结)

      最后更新:2022-07-02 14:30:42 手机定位技术交流文章

      1.服务器架构
      当网络包到达网络服务器时,服务器将接收包并处理它。服务器有很多种类,它的硬件和操作系统与客户端不同.但与网络有关的部分,如网卡,协议栈,索克库与客户端无关。不管硬件或操作系统如何改变,TCP和IP的功能是相同的。(当然,索克库的使用和服务器程序的结构是不同的。

      如图所示,服务器的程序结构可以分成两个模块,一个等待连接模块a,另一个等待与客户端模块b的通信。

      在这里插入图片描述

      等待连接模块在服务器启动时将运行,这个模块负责创建一个插座,然后进入等待连接的暂停状态。当客户端启动连接时,模块A将恢复操作并接收连接,然后启动通讯模块b,完成B接口的连接。然后,b使用连接的插座来与客户端通信。每次有一个新的客户端连接,就会启动一个b,因此,客户和B是单一的关系。

      2.与服务器建立连接的过程

      接下来我们将具体研究服务器如何接受连接。

      首先,当服务器程序启动时有一个模块,首先,协议堆栈将调用接口来创建接口,输入将用于插座的端口号码。接下来,协议堆调用听器将等待连接状态控制信息写入接口,这样,插座进入等待连接状态。然后协议堆调用“接受”来接受连接,然后立即停止程序运行。等待网络包真正到达,再继续进程。

      一旦客户端包到达,程序返回相应的包并接受连接操作。 模组A复制等待连接接口的复印件,并将客户端接口连接到该复印件。

      为什么复制一个接口的拷贝,而不是向b发送它? 因为如果你没有创建一个新接口,没有接口在接口交付到b模块后等待连接,如果其他客户端启动连接,就会有问题。

      因此,由于接口是从母接口复制出来,所以这些接口的端口数不可避免地相同。 因此,当网络包到达时,如果协议堆只查看TCP顶端的接收端口数,它不能决定给该包的哪个接口。

      解决办法不仅仅是查看接收器的端口号码,协议堆将使用客户端的IP地址、端口号码、服务端口IP地址和端口号码来确定交付哪些包。

      在这里插入图片描述

      3.服务器接收操作
      5.在这里插入图片描述

      下面详细描述服务器接收网络包时的操作,假设它是TCP网络包。

      MAC模块

      首先,网络卡中的MAC模块负责。接收信号后,网络卡根据信号变化提取时钟信号,然后使用这个时钟信号获取数字信息。
      在这里插入图片描述

      接下来,在包末端检查帧检查序列FCS,检查是否错误,如果发现数据因噪声等原因导致信号错误,则丢弃网络包。

      当FCS被检查时,检查MAC头部的接收机MAC地址,看看是否发送到您自己。

      如果是自己的,为存储网络卡缓冲区的信息,调用中断,允许CPU处理接收的网络包。CPU根据MAC头的Ethernet字段判断协议类型,这里,类型的值代表IP协议,因此调用TCP/IP协议堆栈,并将包转交给它。

      IP模块

      然后,您进入IP模块,开始工作。 IP模块检查IP头字格式是否标准化,然后检查接收机的IP地址是否写入自己。 当服务器具有与路由器类似的包 transfer功能时,如果不是服务器本身,则包也根据路由表向路由器传输。

      若它本身,则检查是否已经分离(如果分离,IP头部将有一个标记),如果分离,它将暂时存入内存,直到所有分离都到达并重新组装。

      TCP模块
      如果TCP头条的SYN为1,则表示这是启动连接的包,并且TCP模块在TCP消息中检查接收机的端口号码,以确认有相同的端口号码和端口正在等待连接。

      如果有套接字,然后复制这个插座的副本,然后发送者的IP地址,端口号,序列号初始值,必要参数如窗口大小在副本中写入,发送和接收缓冲器的内存空间分配得很好.然后生成代表确认收据的ACK号,用于从服务器到客户端发送数据的序列初始值,显示接收缓冲区剩余容量的窗口大小,并用此信息生成TCP头条,委托IP模块给客户端.

      这个包到达客户端之后,客户将返回其已收到确认的ACK号码,当ACK返回服务器时,连接操作就完成了。这是服务器程序应该输入的调用接受状态,当新接口的描述符转移到服务器程序时,服务器程序将重新启动。

      在这里插入图片描述

      如果TCP模块正在接收一个包,然后在IP模块和TCP模块中检查IP地址和端口号码信息,然后为所有这些信息找到匹配的插座。然后根据在插座上存储的最后一个序列和数据长度计算接收的包的序列,然后把序列与TCP头比较,看看有没有丢包。如果一直,然后TCP将从包中提取数据,放到接收缓冲区中,连接到缓冲区接收的最后一个数据块。

      然后,TCP生成一个确认响应包,根据数据序列和数据长度计算ACK号,并委托IP模块给客户端。

      然后是TCP模块的切断操作,具体指的是前面写的内容,非常详细。

      5.服务器返回响应消息

      当服务器完成所有请求消息的处理时,可以返回响应消息。 这里的过程与客户端向服务器发送请求消息一样。

      首先,网络服务器要求索克库写字,向协议堆栈发送响应消息。这时,你需要告诉协议堆栈应该向谁发送此响应消息,但是我们不需要直接告诉客户IP地址,等等,相反,只需要给出一个描述性的字符,以表示用于通信的音节。所有通信状态都保存在插座中,它还包括有关通讯对象的信息,所以如果有说明的话就很好。

      接下来,堆栈将数据分成多个网络包,并随添加的标题发送出去。 这些包包含接收客户端的地址,这些地址将通过交换机和路由器传输,最终通过互联网到达客户端。

      整个网络包的全行程

      在这里插入图片描述

      在这里插入图片描述

      这是整个书的结尾,我只是简要地总结了这本书的总内容,并省略了一些我认为不必要的东西。 这是一本非常好的初级书,读完之后,我觉得我掌握了整个计算机网络的框架。
      这条路很长,很远,我要往上往下走。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29013.html

          热门文章

          文章分类