网络是怎样连接的(七)—— 协议栈的内部结构

780 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

往期文章

前言

在接下来的文章中,我们将探索操作系统中网络控制软件(协议栈)和网络硬件(网卡)是如何将浏览器的消息发送给服务器的。同浏览器不同,协议栈的工作我们从表面上是看不见的,可能比较难以想象,因此在实际探索之前,我们先来了解下层协议栈的内部结构,看看里面到底有些什么。

协议栈介绍

协议栈是指网络中各层协议的总和,其形象的反映了一个网络中数据传输的过程:由上层协议到底层协议,再由底层协议到上层协议。

如一个 HTTP 请求,HTTP->TCP->IP,先转化成 TCP 数据包,再转化成 IP 数据包,再通过网卡传输过去;接收方通过网卡接收到 IP 数据包,去掉 IP 数据头,检测到是一个 TCP 数据包,就把 TCP 数据包传到 TCP 协议处理层,去掉 TCP 数据头,检测到是一个 HTTP 数据包,就把 HTTP 数据包传到 HTTP 协议处理层。

所有的网络数据都是通过这样一层层的堆叠起来的协议来传送的,像栈一样,所以叫协议栈。

常见协议栈介绍

常见的协议栈有 OSI 七层协议、五层协议、TCP/IP 四层协议。我们先来看一下这几种协议栈的对比。(注:空白位置同上)

OSI 七层网络模型TCP/IP 四层概念模型五层协议模型对应网络协议
应用层应用层应用层HTTP、TFTP、FTP、NFS、SMTP、WAIS
表示层Telnet、Rlogin、SNMP、Gopher
会话层SMTP、DNS
传输层传输层层(TCP、UDP)传输层TCP、UDP
网络层网络层(IP)网络层IP、ICMP、ARP、RARP、AKP、UUCP
数据链路层网络接口层数据链路层FDDI、Ethernet、Arpanet、PDN、SLIP、PPP
物理层物理层IEEE 802.1A、IEEE 802.2 到 IEEE 802.11

TCP/IP 协议栈介绍

协议栈的内部分为了几个部分,分别承担不同的功能。我们以 TCP/IP 四层协议为例,来介绍下每一层主要的作用。

应用层

最上层为应用层,这一层是最靠近用户的一层,也就是浏览器、电子邮件客户端、Web 服务器、电子邮件服务器等程序,它们会将收发数据等工作委托给下层的部分来完成。当然,除了浏览器之外,其他应用程序在网络上收发数据的操作也都是类似上面这样的。也就是说,尽管不同的应用程序收发的数据内容不同,但收发数据的操作是共通的。

传输层

再下面一层是传输层。传输层包括 TCP 协议和 UDP 协议。

  • TCP(transmission control protocol):传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据;
  • UDP(user datagram protocol):用户数据报协议,与 TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据。如 QQ 聊天数据就是通过这种方式传输的;

传输层的作用主要是接受应用程序的委托执行收发数据的操作,并将数据传递给下一层;反之亦然。

像浏览器、邮件等一般的应用程序都是使用 TCP 收发数据的,而像 DNS 查询等收发较短的控制数据的时候则使用 UDP

网络层

传输层下面一层是网络层。网络层一般用 IP 协议控制网络包收发数据。在互联网上传送数据时,数据会被切分成一个一个的网络包,而将网络包发送给通信对象的操作就是由 IP 来负责的。此外,IP 中还包括 ICMP 协议和 ARP 协议等;ICMP 协议用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 协议用于根据 IP 地址查询响应的以太网 MAC 地址;

物理层

网络层下面的一层是物理层,物理层中主要作用就是屏蔽不同的传输媒体和通信手段的差异,完成数据的收发。

总结

本文主要介绍了什么是协议栈,以及协议栈中的每层的作用,让我们对协议栈的内部结构有一个基本的认知,方便我们后续学习!

参考文章

  • 协议栈
  • 《网络是怎样连接的》—— 户根勤