一. 网络层次划分-标准
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自上而下依次为:
- 应用层(Application Layer)
- 表示层(Presentation Layer)
- 会话层(Session Layer)
- 传输层(Transport Layer)
- 网络层(Network Layer)
- 数据链路层(Data Link Layer)
- 物理层(Physics Layer)
其中第四层(传输层)完成数据传送服务,上面三层面向用户(应用层、表示层、会话层)。
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
资源分享(主要是两个博客)
https://blog.csdn.net/xqhadoop/article/details/79634854#_labelTop
https://blog.csdn.net/m_buddy/article/details/74178200
https://baike.baidu.com/item/TCP/IP%E5%8D%8F%E8%AE%AE
https://baike.baidu.com/item/TCP/33012?fromtitle=TCP%E5%8D%8F%E8%AE%AE&fromid=8988699
https://baike.baidu.com/item/IP/224599
二. OSI七层网络模型
- 首先看一下在一端的应用层给另外一端的应用层发送数据,需要经过的模型层。如下图所示:(这张图展示了应用层数据之间传输的流程)
- 标准的OSI模型和TCP/IP模型之间的对应关系和相关的协议是这样的
三、各层介绍
对于TCP/IP中的各个模型的解释是这样的
(1)物理层
- 所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如亮度、电压或者振幅。对于数字应用来说,我们只需要两种物理信号来分别表示0和1,比如用高电压表示1,低电压表示0,就构成了简单的物理层协议。针对某种媒介,电脑可以有相应的接口,用来接收物理信号,并解读成为0/1序列。
- 激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
有关数据链路层的重要知识点:
- 数据链路层为网络层提供可靠的数据传输;
- 基本数据单位为帧;
- 主要的协议:以太网协议;
- 两个重要设备名称:网桥和交换机。
(2)链路层(连接层)
链路层作用:在这一层中主要将传输过来的数据转换为数据帧。
链路层功能:在连接层,信息以帧(frame)为单位传输。所谓的帧,是一段有限的0/1序列。连接层协议的功能就是识别0/1序列中所包含的帧。
帧中有什么: 比如说,根据一定的0/1组合识别出帧的起始和结束。在帧中,有收信地址(Source, SRC)和送信地址(Destination, DST),还有能够探测错误的校验序列(Frame Check Sequence)。当然,帧中最重要的最重要是所要传输的数据 (payload)。这些数据往往符合更高层协议,供网络的上层使用。与数据相配套,帧中也有数据的类型(Type)信息。
注意:连接层协议不关心数据中到底包含什么。帧就像是一个信封,把数据包裹起来。(包装、打包)
数据链路层需要实现的操作:数据链路层在物理层提供的服务的基础上向网络层提供服务(层层相依),其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。
为达到这一目的,数据链路必须具备一系列相应的功能:主要有:
- (翻译)如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;
- (控制)如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;
- (通道管理)以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
- (稳定性)数据链路层在不可靠的物理介质上提供可靠的传输。
该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
(3)网络层
如何让WiFi上的一台计算机和以太网上的另一台计算机通信呢?我们需要一个“中间人”。这个“中间人”必须有以下功能:
- 能从物理层上在两个网络的接收和发送0/1序列
- 能同时理解两种网络的帧格式。路由器(router)就是为此而产生的“翻译”。
-
路由器实现原理
明确一:一个路由器有多个网卡(NIC,Network Interface Controller),每个NIC(网卡)可以接入多个网络并理解相应的连接层协议。
明确二:在帧经过路由到达另一个网络(一个终端就是一个网络)的时候,路由会读取帧的信息,并改写以发送到另一个网络。所以路由器就像是在两个社区都有分支的邮局。
当在路由器WIFI接口上的计算机1,需要发送数据到同一路由器以太网接口的计算机2时,整个通信过程如下:
总体上:WiFi上的计算机1 -> 路由WiFi接口 -> 路由以太网接口 -> 以太网上的计算机2(蓝色表示WiFi网络,绿色表示以太网络)
层次上 *个人理解*:会话层发起会话(HTTP&HTTPS)->传输层(TCP协议)包装->网络层(IP协议)寻找目标地址->链路层(对数据进行处理并搭建通道)->物理层(通过物理介质有效传播)->路由器的链路层(翻译、处理)->路由器的网络层(IP协议)寻找目标地址->路由器的链路层(翻译、处理)->物理层(通过物理介质有效传播)->以太网计算机链路层(翻译、处理)->此计算机的网络层(IP协议)->传输层(TCP协议和UDP协议)->会话层(HTTP&HTTP...)
IP协议存在的意义:在连接层,我们的一个帧中只能记录SRC和DST两个地址。而上面的过程需要经过四个地址 (计算机1,WiFi接口,以太网接口,计算机2)。显然,仅仅靠连接层协议无法满足我们的需要。由于连接层协议开发在先,我们无法改动连接层协议,只能在连接层的数据(payload),也就是信纸内部下功夫了。IP协议应运而生。
流程:计算机1,路由器和计算机2都要懂得IP协议。
- 当计算机1写信的时候,会在信纸的开头写上这封信的出发地址和最终到达地址 (而不是在信封上),而在信封上写上要送往邮局。(网络层写地址IP协议,链路层翻译、包装、运输)
- WiFi网的邮差将信送往邮局。(物理层交流)
- 在邮局,信被打开,邮局工作人员看到最终地址,于是将信包装在一个新的信封中,写上出发地为邮局,到达地为计算机2,并交给以太网的邮差(路由器内部实现)
- 由以太网的邮差送往计算机2。(IP协议还要求写如诸如校验等信息,交通状况等信息,以保护通信的稳定性。)
网络层目的:网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层(TCP协议)不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是“路径选择、路由及逻辑寻址”。
重点协议:网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。有关网络层的重点为:
- 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
- 基本数据单位为IP数据报;
- 包含的主要协议:
- IP协议(Internet Protocol,因特网互联协议)
- ICMP协议(Internet Control Message Protocol,因特网控制报文协议)
- ARP协议(Address Resolution Protocol,地址解析协议)
- RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)
- 重要的设备:路由器。
(4)传输层(TCP和UDP)
-
实现
应用进程发起会话(HTTP&HTTPS),会话提交到传输层(TCP),传输层将HTTP会话请求分成报文段,传输层为报文段添加源和目的端口,输入到网络层(出本机端口),网络层(IP协议)进行IP寻址查找目的端,通过查找路由表找到可靠、高效的通道,提交给链路层,链路层翻译、打包成能够进行传输的模式。
/*
头脑风暴一
会话层发起会话--传输层先接收会话,然后针对不同的应用(进程),对数据进行包装,
并对信息进行修改(添加必要信息),添加上所对应的进程信息,将包装好的数据提交给网络层
--网络层接收传输层的数据,利用IP协议对数据进行再次修改,给他地址等一些信息
*/
/*
头脑风暴二
在遥远的海边有一间别墅(一个终端、一个内部网络),里面住了许多人(进程)
有一天“微信”(某一个进程)想要给远在万里之外的家人(另一台计算机的微信端)写封信(数据)表达自己对家人的思恋
于是“微信”(进程)写好了信(发起了会话),交给了公寓管理员(传输层)并告诉他要寄出去地址等信息,
让他(传输层)帮忙寄出去
管理员(传输层)收到了以后,先在信(数据)里面空白的部分写上了目的地址,然后用信封包装,
交给了邮局的工作人员(网络层)
工作人员写上邮局的名称以后送到了所对应的邮局。在邮局信封被打开,工作人员(网络层)知道了信要送往的地址,
工作人员(网络层)将信放到一个新的信封中,并写上出发地为邮局,到达地为计算机2的信息,并交给此区域的邮差
邮差把信送到了目的地公寓的公寓管理员(传输层)手上
管理员将信拆开知道了是寄给谁的信,将信交给了最终的目标。
*/
上面的三层协议让不同的计算机之间可以通信。但计算机中实际上有许多个进程,每个进程都可能有通信的需求(参看Linux进程基础和Linux进程间通信)。这就好像一所房子里住了好几个人(进程),如何让信精确的送到某个人手里呢?(如何确保数据提交给应该接收的进程?)
- 遵照之前相同的逻辑,我们需要在信纸上写上新的信息,比如收信人的姓名,才可能让信送到。
- 所以,传输层就是在信纸的空白上写上新的“收信人”信息。
- 每一所房子会配备一个管理员(终端)(传输层协议)。
- 管理员从邮差手中接过信,会根据“收信人”,将信送给房子中的某个人(进程)。
传输层协议,比如TCP和UDP,使用端口号(port number)来识别收信人(某个进程)。在写信的时候,我们写上目的地的端口。当信到达目的地的管理员手中,他会根据传输层协议,识别端口号,将信送给不同的人。
TCP和UDP协议是两种不同的传输层协议。UDP协议类似于我们的信件交流过程。TCP协议则好像两个情人间的频繁通信。一个小情人要表达的感情太多,以致于连续写了好几封信。而另一方必须将这些信按顺序排列起来,才能看明白全部的意思。TCP协议还有控制网络交通等功能。
(5)会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
(6)表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
(7)应用层
通过上面的几层协议,我们已经可以在任意两个人(进程)之间进行通信。然而每个人实际上从事的是不同的行业。有的人是律师,有的人外交官。比如说律师之间的通信,会用严格的律师术语,以免产生纠纷。再比如外交官之间的通信,必须符合一定的外交格式,以免发生外交误会。再比如间谍通过暗号来传递加密信息。应用层协议是对信件内容进一步的用语规范(协议)。应用层的协议包括用于Web浏览的HTTP协议,用于传输文件的FTP协议,用于Email的IMAP等等。
为操作系统或网络应用程序提供访问网络服务的接口。
会话层、表示层和应用层重点:
1> 数据传输基本单位为报文;
2> 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。