吞吐量是什么意思(吞吐量和传输速率的区别)
推荐视频:Linux内核网络协议栈解析
linux后台开发工作面试关于tcp/ip有什么好问的?
C/c linux服务器开发学习地址:C/C Linux服务器开发/后台架构师【零音教育】-学习视频教程-腾讯课堂
和CPU、内存、I/O一样,网络是Linux系统的核心功能 。网络是一种连接不同计算机或网络设备的技术 。本质上是一种进程间通信方式,尤其是跨系统的进程间通信,必须通过网络进行 。随着高并发、分布式、云计算、微服务等技术的普及,网络的性能越来越重要 。
那么,Linux网络是如何工作的呢?衡量网络性能有哪些指标?接下来,我们一起来学习一下Linux网络的工作原理和性能指标 。
网络模型说到网络,我们肯定经常提到七层负载均衡,四层负载均衡,或者三层设备,两层设备等等 。那么,这里的二、三、四、七层是什么意思呢?
实际上,这些层都来自于国际标准化组织制定的开放系统互连参考模型(OSI网络模型) 。
为了解决网络互连中异构设备的兼容问题,解耦复杂的网络数据包处理流程,OSI模型将网络互连的框架分为七层:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,每层负责不同的功能 。其中包括:
应用层,负责为应用程序提供统一的接口 。表示层,负责把数据转换成兼容接收系统的格式 。会话层,负责维护计算机之间的通信连接 。传输层,负责为数据加上传输表头,形成数据包 。网络层,负责数据的路由和转发 。数据链路层,负责 MAC 寻址、错误侦测和改错 。物理层,负责在物理网络中传输数据帧 。然而,OSI模型仍然太复杂,不能提供一个可实现的方法 。所以在Linux中,我们实际上使用的是另一种更实用的四层模型,即TCP/IP网络模型 。
TCP/IP模型将网络互连的框架分为四层:应用层、传输层、网络层和网络接口层,其中:
应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS 等 。传输层,负责端到端的通信,比如 TCP、UDP 等 。网络层,负责网络包的封装、寻址和路由,比如 IP、ICMP 等 。网络接口层,负责网络包在物理网络中的传输,比如 MAC 寻址、错误侦测以及通过网卡传输网络帧等 。为了帮助你更好地理解TCP/IP和OSI模型之间的关系,画一张图如下:
当然,虽然Linux实际上是按照TCP/IP模型来实现网络协议栈的,但是我们在平时的学习和交流中习惯用OSI七层模型来描述 。比如说到七层和四层负载均衡,它们对应的是OSI模型中的应用层和传输层(而它们对应的是TCP/IP模型,实际上是四层和三层) 。
Linux 网络栈采用TCP/IP模型,网络传输时,数据包会按照协议栈逐层处理 。然后封装这一层的协议头,发送到下一层 。
当然,各层网络数据包的处理逻辑取决于各层采用的网络协议 。比如在应用层,一个提供REST API的应用可以使用HTTP协议,将需要传输的JSON数据封装到HTTP协议中,然后向下传递到TCP层 。
封装做的事情很简单,只是在原始有效载荷的前后添加固定格式的元数据,原始有效载荷数据不会被修改 。
例如,以通过TCP协议通信的网络数据包为例 。从下图中,我们可以看到各层应用数据的封装格式 。
其中包括:
传输层在应用程序数据前面增加了 TCP 头;网络层在 TCP 数据包前增加了 IP 头;而网络接口层,又在 IP 数据包前后分别增加了帧头和帧尾 。这些新的页眉和页脚是根据特定的协议格式填充的 。要了解具体格式,可以查看协议文档 。例如,您可以在这里检查TCP报头的格式 。
这些新的报头和报尾增加了网络数据包的大小,但是我们都知道任何大小的数据包都不能在物理链路中传输 。网络接口配置的最大传输单元(MTU)指定了最大IP数据包大小 。在我们最常用的以太网中,MTU的默认值是1500(这也是Linux的默认值) 。
一旦网络数据包超过MTU大小,它将在网络层被分段,以确保分段的IP数据包不大于MTU值 。显然,MTU越大,需要的分包就越少,自然网络吞吐量就越好 。
在了解了TCP/IP网络模型和网络数据包的封装原理后,我们很容易认为Linux内核中的网络栈其实类似于TCP/IP的四层结构 。如下图所示,是Linux通用IP网络栈的示意图:
从上到下查看这个网络堆栈,我们会发现:
最上层的应用程序,需要通过系统调用,来跟套接字接口进行交互;套接字的下面,就是我们前面提到的传输层、网络层和网络接口层;最底层,则是网卡驱动程序以及物理网卡设备 。网卡是发送和接收网络数据包的基本设备 。在系统启动时,网卡通过内核中的网卡驱动程序注册到系统中 。在网络收发过程中,内核通过中断与网卡进行交互 。
推荐阅读
- 空调水滴是什么模式(遥控器上雨滴什么模式)
- q是什么集合(无理数集用什么表示)
- 成都为什么叫蓉城(成都的蓉城是什么意思)
- mj是什么单位(mj是什么意思啊)
- a4纸是什么纸(a4纸属于卡纸吗)
- 委托人是什么意思(房屋买卖委托人是什么意思)
- 什么是学籍(个人学籍是什么)
- 胤是什么意思(与胤字结合的名字)
- 公虾米是什么歌(闽南语歌曲大全1首)
- 公积金面签是什么意思(公积金贷款通知面签了)