OSI和TCP/IP

  • OSI网络模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  • TCP/IP网络模型:应用层、传输层、网络层、网络接口层

    网络包接收流程

  1. 内核分配一个主内存地址段(DMA缓冲区),网卡设备可以在DMA读写数据。
  2. 当一个网络包到达网卡后,网卡通过DMA的方式,将网络包放到收包队列中;然后通过硬中断,通知中断处理程序已经收到网络包。
  3. 中断处理程序会为网络帧分配内核数据结构(sk_buff),并将其拷贝到 sk_buff 缓冲区中;然后再通过软中断,通知内核收到了新的网络帧。
  4. 内核协议栈从缓冲区取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧。
  5. 最后,应用程序就可以使用 Socket 接口,读取到新接收到的数据了。

image.png

网络性能指标

  • 带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)
  • 吞吐量:表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。
  • 延时:表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP 握手延时),或一个数据包往返所需的时间(比如 RTT)。
  • PPS:是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS 可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。
  • 可用性:网络是否能正常通信
  • 并发连接数:TCP连接数量
  • 丢包率:丢包百分比
  • 重传率:重新传输的网络包比例

    TMP

  • 物理链路中不能传输任意大小的数据包,网络接口配置的最大传输单元(MTU),就规定了单个IP数据包的大小,常用以太网中,MTU的默认值是1500,也是linux的默认值。一旦网络数据包大于1500,就会在网络层分片。