网络基础知识

网络基础知识 知识量:6 - 28 - 111

6.2 服务器的接收操作><

网卡- 6.2.1 -

网卡是网络接口卡(Network Interface Card)的简称,是构成计算机网络的必备部件。网卡的作用是使计算机与局域网相互连接,它作为计算机和网络之间的中间媒介,负责接收和发送数据。

网卡的主要功能包括:

  • 实现网络连接:网卡使得计算机能够通过局域网(如以太网、令牌环网等)与其他计算机或设备进行数据交换。

  • 数据转换:网卡将计算机内部处理的数据格式转换为可以在网络上传输的格式,反之亦然。

  • 地址识别:网卡能够识别并接收发送到其MAC地址(也称为物理地址或硬件地址)的数据包,并将数据包传送到相应的应用程序或进程。

  • 数据缓存:网卡具有一定的数据缓存能力,可以存储接收和发送的数据,以便快速访问。

  • 流量控制:网卡能够控制数据的流量,避免因数据传输过快而造成网络拥堵或数据丢失。

网卡的种类有很多,根据不同的标准可以分为不同的类型。例如,根据传输速率可以分为10M网卡、100M网卡、千兆网卡等;根据连接方式可以分为有线网卡和无线网卡;根据接口类型可以分为PCI网卡、PCI-E网卡、ISA网卡等。

网卡的信号转换- 6.2.2 -

网卡将接收到的信号转换成数字信息的过程如下:

  1. 网卡接收到信号:当网络中有数据传输时,信号会以电信号或光信号的形式传输到网卡。网卡通过接收天线或光模块接收这些信号。

  2. 信号还原成数字信息:网卡接收到信号后,会根据信号的强弱和特征,将其还原成数字信息。这个过程包括将信号进行解调、解码等操作,将信号中的数字信息提取出来。

  3. 数字信息的处理:还原出的数字信息会被网卡进一步处理,包括校验、去重、排序等操作,以确保数据的完整性和准确性。

  4. 数字信息的传输:处理后的数字信息会被发送到计算机的处理器,由处理器进一步处理和应用。

IP模块的接收操作- 6.2.3 -

在网络通信中,当一个网络包到达协议栈时,IP模块是首先开始工作的部分,负责检查IP头部并处理相关的操作。以下是IP模块接收操作的详细解释:

  1. 检查IP头部格式:IP模块首先会验证IP头部的格式是否正确。这包括检查头部中的各个字段是否符合IP协议规范,以及是否满足最小/最大头部长度等要求。

  2. 检查接收方IP地址:IP模块会查看网络包的接收方IP地址,以确定这个包是否是发送给当前设备的。如果接收方地址不是本机地址或者广播地址,那么这个包通常不会被处理,而是被丢弃。

  3. 转发非目标包:当服务器启用路由功能时,对于那些不是发送给自己的包,IP模块会根据路由表进行转发。这个过程类似于路由器的工作,根据路由规则将包发送到下一个合适的跳点。

  4. 检查分片:由于IP层可能对原始数据包进行分片传输(特别是在跨越不同网络或传输介质时),IP模块需要检查包是否被分片。通过查看IP头部中的标志位和分片偏移字段,可以确定一个包是否被分片以及如何重新组装这些分片。

  5. 分片重组:如果包被分片,IP模块会将这些分片暂时存储在内存中,等待所有分片到达。一旦所有分片都到达,它们会被重新组装并还原成原始的未分片包。这个过程称为分片重组。

  6. 非分片包的直接接收:如果包没有被分片,IP模块会直接保留接收时的状态,不进行重组操作。这意味着数据包保持其原始形式,可以直接传递给更高级的协议层(如TCP或UDP)进行处理。

TCP模块如何处理连接包- 6.2.4 -

TCP模块处理连接包的过程如下:

  1. 接受连接请求:当TCP头部中的控制位SYN为1时,表示这是一个发起连接的包。TCP模块会执行接受连接的操作。

  2. 检查接收方端口号:在接受连接之前,TCP模块会检查包的接收方端口号,以确认在该端口上是否有与接收方端口号相同且正在处于等待连接状态的套接字。

  3. 确认等待连接的套接字:如果指定端口号没有等待连接的套接字,TCP模块会向客户端返回一个错误通知的包,拒绝连接请求。

  4. 建立连接:如果指定端口号存在等待连接的套接字,TCP模块会建立一个新的连接,并将套接字与新连接关联起来。

  5. 发送确认包:TCP模块会发送一个确认包(ACK)给客户端,确认连接请求被接受。

  6. 数据传输:一旦连接建立,应用程序就可以通过套接字读写数据。TCP模块负责将数据按照序号排序并传输,确保数据的有序性和可靠性。

  7. 关闭连接:当应用程序完成数据传输或需要关闭连接时,TCP模块会发送一个FIN控制包给对方,表示关闭连接的请求。对方收到请求后,会发送一个ACK包确认连接关闭,最终释放套接字和相关资源。

TCP模块的断开操作- 6.2.5 -

TCP模块的断开操作通常包括以下几个步骤:

  1. 发送FIN控制包:当一方想要断开连接时,它会发送一个FIN控制包给对方,表示关闭连接的请求。

  2. 确认收到FIN包:对方收到FIN包后,会发送一个ACK包给对方,确认连接关闭的请求。

  3. 等待TIME_WAIT状态:发送FIN包的一方会进入TIME_WAIT状态,等待一段时间以确保旧的数据包能够从网络中消失,避免出现数据包重传的问题。

  4. 释放套接字资源:经过一段时间后,处于TIME_WAIT状态的一方会释放套接字和相关资源,完成断开操作。

值得注意的是,TCP模块在执行断开操作时还需要考虑一些特殊情况,如主动关闭方发送的FIN包丢失、被动关闭方未收到主动关闭方的FIN包等情况。在这种情况下,TCP模块需要重新发送控制包或处理重复的关闭请求,以确保连接的可靠关闭。