1. 宏观上理解网络模型-在直升飞机上看网络
今天是轻解计算机网络系列第一解,从宏观上了解网络。主要介绍网络分成模型、基本传输过程。
学习任何一种新技术都应该是这样的顺序,先从宏观上了解这门技术的基本原理和作用。这就好像生物学家研究一种生物,不能上来就解刨吧,一定是从整体上观察了这种生物的体貌和形态。这里的宏观就像是一具动物骨骼模型、神经模型、肌肉模型,一直摆在那里,到最后装进科学家的脑袋里。
学技术切忌直接扣到一个细节里,扣细节,既可能是一丝不苟的工匠精神的提现,也可能直接被魔鬼代入深渊。我们是坐在天上的直升飞机找路比较容易,还是一头钻进一个胡同儿里比较容易呢。
今天要讲的网络模型,就像是生物学上的整体动物模型。
分层网络模型
为了让全世界的计算机有效的互联起来,就要制定标准,分层模型就是这种标准的定义,有了这种标准,全世界的软硬件开发者才能开发出通用的程序来,要不然就像现在的手机充电口,苹果就是要用它独特的雷电接口,我要是再有一部安卓手机,就要有两条充电线。
有两种网络模型,一种是 OSI 7层模型,还有一种是 TCP/IP 模型,前者是一种概念话的模型,后者是事实上的标准。事实标准也就是当今网络世界里普遍使用的模型。
OSI 7层模型
国际标准化组织提出了一种概念化的网络模型,开放式系统互联模型(Open System Interconnection Model),简称 OSI 模型。
自上而下依次为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
每一层都有一种或多种协议,这些协议都有标准的 RFC 文档,可以到https://www.rfc-editor.org/retrieve/ 这里查看各个协议的最原始说明。
应用层
应用层提供为应用软件而设计的接口,以设置与另一应用软件之间的通信。例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3等。
表示层
表示层把数据转换为能与接收者的系统格式兼容并适合传输的格式。
会话层
会话层负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。
传输层
传输层把传输表头(TH)加至数据以形成数据包。传输表头包 含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
网络层
网络层决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等。
数据链路层
数据链路层负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。
分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。
物理层
物理层在局部局域网上传送数据帧,它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。
OSI 模型是国际标准模型,是指导互联网模型的概念标准。而在实际的设计实现过程中,最后形成了 TCP/IP 四层模型结构。我们在平时的一些书籍、文章中最常看到的也是 4 层模型,而非7 层模型。
TCP/IP 4层模型
TCP/IP 模型实际上并不单单指 TCP 和 IP,实际上这一个协议簇,还包含了其他的一些协议,比如 UDP、ICMP、IGMP 等。
TCP/IP 模型是事实上的标准模型,在 7 层模型的基础上将最上面三层的应用层、表示层、会话层统一为应用层,将数据链路层和物理层统一为链路层或者叫网络接口层。
实际应用中还是以 4 层模型为准,毕竟这才是事实上的标准。还有一种 5 层模型的说法,实际上就是把 7 层中的应用层、表示层、会话层合并为应用层,其他层保持不变。
应用层
将7层模型中最上层的应用层、表示层、会话层合并。
应用层主要运行我们平时经常使用的一些应用,比如 FTP、SSH、SMTP、HTTP、Telnet,也是我们开发过程中经常会打交道的,比如 HTTP,HTTP 在传输层仍然使用的是 TCP 协议,但是将 TCP 的细节做了封装。
传输层
传输层主要就是 TCP 和 UDP 这两个协议,负责将应用层的用户数据传输到目的端。
TCP 是有状态高可靠的的传输协议,有三次握手和重传机制最大程度上保证数据能够顺利的到达目的端。
UDP 协议是无状态的高性能的协议,因为它不保证数据能够顺利的到达目的端,所以不用三次握手建立连接,传一次,数据到不到就不管了。
其实从传输层开始,往下 每一层都要负责将数据传输到目的端的一部分工作,只不过下面两层根据其特性和主要作用又分为了网络层和链路层。
网络层
网络层最主要的协议就是 IP 协议,负责将上一层「传输层」过来的 TCP 包或 UDP 包封装成 IP 数据报。通过 IP 协议,根据 IP 地址可以定位到一个网络主机。
除了 IP 协议外,ICMP 协议、IGMP 协议也工作在网络层。
ARP 和 RARP 协议也认为工作在网络层。
链路层
将 7 层模型中的最底两层数据链路层和物理层合并为链路层。
链路层也叫做网络接口层,它由多种网络接口标准和对应的驱动程序组成。一般我们说的数据链路层都是以太网链路层。
数据发送和接收过程
数据包放封装和解封装过程
TCP/IP 模型每个层都有各自的功能和分工,当有用户数据想要发送给另一台设备的时候,数据自上而下,从应用层向链路层传递有一个复杂的过程。
以 Telnet 为例,Telnet 在传输层是使用 TCP 协议的。