IP/TCP 层封装背后的硬件/软件

Gri*_*fin 4 networking internet tcp ip

我读过的每个教程都讨论各层如何相互“通信”,但从未提及硬件/软件接收、添加和发送每层控制数据的内容。

哪块硬件和软件接收/封装/发送与 IP/TCP 每层相关的数据?

例如,我的路由器工作在哪一层?什么软件可以将文本文件转换为 SMTP?我的计算机中的什么/哪里有用于流量控制/传输的软件?

Law*_*ceC 5

Layer 1 - Physical - Signaling 

Layer 2 - Data Link - Switching (Ethernet frames) 

Layer 3 - Network - Routing (IP packets)

Layer 4 - Transport - Multiplexing (TCP segments)

Layer 5 - Session

Layer 6 - Presentation

Layer 7 - Application
Run Code Online (Sandbox Code Playgroud)

之所以没有提及具体的软件/硬件实现,是因为这是开发标准的全部目的。每一层并不关心上面和下面的层如何处理其功能,只要数据按照标准呈现即可。它可以是软件、硬件、固件,通过机械非电子设备,甚至可以是人类手动的(一个不严肃的例子,谷歌“基于信鸽的TCP”)。

在现实世界中,所涉及的具体软件和硬件也有很大差异。完全有可能在软件中执行所有功能(便宜但速度慢)。也完全有可能在硬件中完成所有这些(快速但昂贵)。专用网络设备(例如 Cisco 路由器等)将在硬件中执行比配置为路由器的运行 Linux 的 PC 更多的功能。

一般来说,第 1 层和大多数第 2 层保证在硬件中执行。第 3 层主要在企业级路由器(例如 Cisco 的路由器)上的硬件中完成。许多 NIC 都具有称为“TCP 卸载引擎”的功能,可以通过 NIC 上的硬件加速大多数第 3 层和第 4 层。沃尔玛的消费级路由器通常完全通过软件来完成路由功能。第 5、6 和 7 层通常不是在硬件中完成的,如果是,则这样做的设备被称为“加速器”。