文章目录

  • Linux的网络模型
  • 1 网络模型概述
  • 2 Linux网络协议栈包含的网络协议
  • 3 Linux网络编程模型
  • 4 socket套接字编程模型


Linux的网络模型

1 网络模型概述

Linux使用的网络模型是TCP/IP四层网络模型,主要由应用程序、传输层、网络层、网络接口层组成。与OSI七层模型不同,但是又相互对应,它们之间关系如下图:

常见linux系统下的网站架构LNOP linux 网络架构_tcp/ip


OSI模型的应用层、表示层、会话层对应着TCP/IP模型的应用层,传输层对应传输层,网络层对应网络互连层,数据链路层和物理层对应主机到网络层(网络接口层)。linux中的网卡驱动属于7层模型中的数据链路层,属于四层模型中的最底层的网络接口层。


2 Linux网络协议栈包含的网络协议

Linux用到的网络协议主要有:TCP、IP、UDP、以太网协议等。这些协议之间的关系,体现在各类协议数据包之间的关系,主要是各类数据包之间的相互包含。如下图所示

常见linux系统下的网站架构LNOP linux 网络架构_常见linux系统下的网站架构LNOP_02


TCP数据包加上IP首部之后,称为IP数据报,IP数据报加上以太网首部,以太网尾部成为以太网帧。网络上传输的所有数据都是以太网帧的形式。


3 Linux网络编程模型

Linux采用统一的网络编程模型:利用Socket(套接字)抽象层进行网络编程。如果不采用统一的编程模型,那么linux的网络编程会是下图的情况:

常见linux系统下的网站架构LNOP linux 网络架构_linux_03



4 socket套接字编程模型

用户程序只需要调用socket抽象层提供的统一接口即可,无需考虑具体要使用哪个协议,这些事情内核会帮我们解决,我们只要调用socket抽象层提供的接口就行。这样,进程a、b、c都只要调用send方法就OK。这就使linux网络编程变得很方便了。socket又叫套接字编程模型。

常见linux系统下的网站架构LNOP linux 网络架构_网络_04