一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情。
往期文章
- 网络是怎样连接的(一)—— 浏览器访问 Web 服务器过程概览
- 网络是怎样连接的(二)—— 浏览器生成 HTTP 消息
- 网络是怎样连接的(三)—— 通过 DNS 服务器查询 IP 地址
- 网络是怎样连接的(四)—— DNS 服务器工作介绍
- 网络是怎样连接的(五)—— 委托操作系统进行收发消息过程概览
- 网络是怎样连接的(六)—— 协议栈内部探索步骤
前言
在接下来的文章中,我们将探索操作系统中网络控制软件(协议栈)和网络硬件(网卡)是如何将浏览器的消息发送给服务器的。同浏览器不同,协议栈的工作我们从表面上是看不见的,可能比较难以想象,因此在实际探索之前,我们先来了解下层协议栈的内部结构,看看里面到底有些什么。
协议栈介绍
协议栈是指网络中各层协议的总和,其形象的反映了一个网络中数据传输的过程:由上层协议到底层协议,再由底层协议到上层协议。
如一个 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 地址;
物理层
网络层下面的一层是物理层,物理层中主要作用就是屏蔽不同的传输媒体和通信手段的差异,完成数据的收发。
总结
本文主要介绍了什么是协议栈,以及协议栈中的每层的作用,让我们对协议栈的内部结构有一个基本的认知,方便我们后续学习!
参考文章
- 协议栈
- 《网络是怎样连接的》—— 户根勤