一、简述
本系列将对面试中与计算机网络相关的知识进行讲解与分析。
本篇为 OSI 七层网络模型的相关知识。
二、概念
OSI 七层网络模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
也可以被细化为 TCP \ IP 五层模型和四层模型。但后两者都是基于先者产生的,所以,优先从泛化的讲起。
如图所示
这七层分别为
- 应用层
- 表示层
- 会话层
- 运输层
- 网络层
- 数据链路层
- 物理层
这七层功能主要是将数据层层打包,最后实现整个数据交互的流程。
那么,这七层究竟是如何打包的呢?
三、模型细节
出于方便记忆的考虑。我将从下到上讲这七层模型,按照信息被打包传递的逻辑进行讲解。
1. 物理层
他可以看做实际的数据传输线。作用主要是实现计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。说人话就是让上面的数据层不用管数据是用啥传输的了,物理层会负责的。
2. 数据链路层
主要负责物理寻址与封装 IP 数据报。
物理层已经解决了如何发的问题。数据链路层就负责解决从哪发到哪的问题,即,确定发送点的位置和接受点的位置。
以及他还会将网络层传下来的 IP 数据报组装成帧,用于在物理层发送。
2.1 相关协议
从这层开始,就有一些比较重要的协议需要了解了。
这层主要关注两个协议,ARP 和 RARP
ARP 协议 又称 地址解析协议。负责将 IP (逻辑)地址转换成 MAC (物理)地址。因为数据链路层的工作就是将网络层传下来的逻辑地址转换成物理层能使用的物理地址。
而这种地址转换有两种方法。
- 静态映射:
创建一张 ARP 表记录 IP 和对应的 MAC 地址。将这张表存储在每台机器上。因为逻辑地址不长变,但物理地址可能经常变。所以要定期更新,变换对应的物理地址。 - 动态映射:
就是通过 ARP协议,通过对 IP 地址获得对应的 MAC 地址。具体方法是将 IP 地址进行广播,对应的主机就会返回消息,获得对应的物理地址。这个对应关系会进行缓存,可以用于加快反应并减少资源。
RARP协议 又称反向地址解析协议。做的工作就和 ARP 协议相反了。负责将 MAC 地址转换成对应的 IP 地址。方法类似,不再复述。
3. 网络层
负责选择合适的网间路由和交换结点, 确保数据及时传送。
主要使用的是 IP 协议,所以分组的数据叫 IP 数据报。
IP 协议 很关键,是整个TCP/IP协议族的核心,也是构成互联网的基础。
给上层提供了无状态,无连接,不可靠的服务。
- 无状态:IP通信双方不同步传输数据的状态信息,因此所有IP数据报的发送,传输,和接收都是相互独立的,没有上下文关系的。
- 无连接:IP通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数据的时候,都必须明确指定对方的IP地址。
- 不可靠:IP协议不能保证IP数据报准确地到达接收端,它只是承诺尽最大努力(best effort)。 很多种情况都能导致IP数据报发送失败。
IP 协议的具体流程:基于 IP 协议,主机收到 IP 数据报时,会校验并解析数据报的头部,看看这个数据报是否是发给本机的,是就放到输入队列等待处理。否就进行转发。转发的下一跳是哪个物理机则是基于路由表。因为地址会更新,所以路由表也会根据路由协议或 route 命令更新路由,确保数据报转发正常。
说到 IP ,那么必然要了解 IPV4 和 IPV6。这两个都是 IP 协议,但是版本不一样。但区别不止于此。主要有以下几点
- 协议地址:
- 地址长度不一致:IPV4只有 32 位的地址长度,而 IPV6 有 128 位地址长度,能涵盖的网络地址远远大于 IPV4
- 地址表达方式不一致:V4 是十进制表示的二进制数,V6是十六进制表示的二进制数
- 地址配置方式不一致:V4 可以通过手动配置,也可通过 DHCP(动态主机配置协议:应用层)进行设置。但 V6 只能基于 DHCP 或 ICMPV6 (Internet 控制消息协议)进行自动配置
- 地址解析协议:
V4 使用的是ARP 协议进行映射。而 V6 使用 NDP (邻居发现协议:网络层)进行替代。NDP 会进行 IP 地址转换,路由的维护和使用。
IPV6 的优点:
- IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,最大地址个数为232;而IPv6中IP地址的长度为128,即最大地址个数为2128。与32位地址空间相比,其地址空间增加了2128-232个。
- IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类的原则,这使得路由器能在路由表中用一条记录表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
- IPv6加入了对自动配置的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
- IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,在IPV6中的加密与鉴别选项提供了分组的保密性与完整性。极大的增强了网络的安全性。
- 允许扩充。如果新的技术或应用需要时,IPV6允许协议进行扩充。
- 更好的头部格式。IPV6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。
4. 传输层
负责向两台主机进程之间的通信提供通用的数据传输服务。应用程序利用该服务传送应用层报文。
在该层运行的协议就是 TCP 和 UDP。本文只对这两个协议进行基础的概念讲解,将在下一篇文章中进行具体分析。
TCP:传输控制协议。提供面向连接的,可靠的数据传输服务。
UDP:用户数据协议。提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)
5. 会话层
负责建立、管理和终止表示层实体之间的通信会话。该层提供了数据交换的定界和同步功能,包括了建立检查点和恢复方案的方法。
三次握手和四次回收就发生在本层。RPC 调用也在本层进行。还有HTTPs 的加密协议:SSL(安全套接字层协议)和 TLS(传输层安全协议)也在这一层。
三次握手:
过程:
- 一次握手:客户端发送带有 SYN =1 的数据包到服务端
- 二次握手:服务端发送带有 SYN/ACK (SYN为新值,ACK 为 SYN值+1)标志的数据包到客户端
- 三次握手:客户端发送带有带有 ACK (ACK 为 SYN值+1)标志的数据包到服务端
为什么要三次握手呢?
是为了确保双方的发送和接受都是正常的。
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
为什么要传回 SYN?
为了告诉发送端,我接收到的信息确实就是你所发送的信号了。
为啥还要传 ACK?
接收方到发送方的通道还需要 ACK 信号来进行验证
四次挥手
过程:
- 一次挥手:客户端发送一个 FIN,用来关闭客户端到服务器的数据传送
- 二次挥手:服务器收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
- 三次挥手:服务器关闭与客户端的连接,发送一个FIN给客户端
- 四次挥手:客户端发回 ACK 报文确认,并将确认序号设置为收到序号加1
为什么要四次挥手呢
任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。
为何要等待 2MSL(最大报文生存时间)
客户端发送 ACK 报文后,要等待 2MSL 时间,确定服务端收到了所以没发送确认报文
SSL 与 TLS
这是俩加密方法,是 HTTP 与 HTTPs 的区别之一,具体不在这详述了,请听下文分解。
6. 表示层
使通信的应用程序能够解释交换数据的含义。提供的服务主要包括数据压缩,数据加密以及数据描述。这使得应用程序不必担心在各台计算机中表示和存储的内部格式差异。
7. 应用层
由程序员写的应用软件实现,比如需要传输什么内容,怎么传等等。作用是通过应用程序间的交互来完成特定的网络应用。该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。
主要存在的协议为 DNS,HTTP,SMTP。
- DNS:域名交换系统。负责将域名转化为 IP
- HTTP:超文本传输协议。指定了客户端能给服务端发送怎样的消息。得到怎样的响应
- SMTP:电子邮件传输协议。一种提供可靠且有效的电子邮件传输的协议。建立于 FTP 文件传输服务之上。