文章目录
- 一:计算机网络结构分层的必要性
- (1)分层思想
- (2)计算机网络分层思想
- ①:如何让两台计算机通过网线传输数据
- ②:如何让分组在单个网络内传输
- ③:如何让分组在网络间传输
- ④:如何实现进程间基于网络通信
- ⑤:如何让进程正确解析和处理数据
- 二:计算机网络体系结构分层思想举例
- (1)浏览器到路由器
- (2)路由器处理
- (3)路由器到Web服务器
- (4)Web服务器到浏览器
本节相关视频
- 【计算机网络微课堂(有字幕无背景音乐版)】
- 【计算机网络微课堂(有字幕无背景音乐版)】
一:计算机网络结构分层的必要性
(1)分层思想
分层思想:软件工程基本定理(FTSE)告诉我们计算机领域的任何问题都可以通过增加一个间接的中间层来解决,这句话概括了计算机领域系统设计时都是按照严格的层级结构设计的。分层思想也是工业领域的通用准则,由于人的记忆能力和大脑处理速度有限,所以不得不把一些无关紧要的细节隐藏起来,让人专注更重要的东西,就像汽车,虽然其内部结构和原理非常复杂,但基本人人都会开车。计算机领域的分层思想比如有
-
计算机体系结构
-
JVM体系结构
-
Spring5架构
-
Android系统架构
(2)计算机网络分层思想
计算机网络分层思想:计算机网络是一个非常复杂的系统,涉及硬件、软件、操作系统、应用等诸多方面,所以必须使用分层的思想,将这个庞大而复杂的问题转化为若干较小的易于解决和处理的局部问题。下面我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,然后层层处理
①:如何让两台计算机通过网线传输数据
两台计算机通过一条网线连接起来:需要考虑的问题有
-
需要怎样的传输媒体(介质) :例如采用常用的双绞线作为传输媒体
-
计算机上采用怎样的物理接口来连接传输媒体: 例如使用RJ45以太网接口连接双绞线
-
使用怎样的信号表示比特0和1:例如使用方波信号表示0和1,分别代表低电平和高电平
这些问题可以划归到我们后面会说到的物理层,至此我们便实现了让两台计算机通过网线传输数据。注意
- 严格来讲,传输媒体并不属于物理层,它并不包含在体系结构中
- 计算机网络中传输的信号并非方波信号,这里仅为了简化问题
②:如何让分组在单个网络内传输
以多台主机构成单个总线型网络为例:需要考虑的问题有
-
如何标识网络中的各主机(主机编址问题):例如使用网卡中的MAC地址进行标识,主机在发送数据时会给数据附加目的地址,当其他主机收到后,根据目的地址和自身地址来决定是否接受数据
-
目的主机如何从信号所表示的一连串比特流中区分出地址和数据(分组封装格式问题)
-
如何协调各主机对总线的争用问题
这些问题可以划归到我们后面会说到的数据链路层,至此我们便实现了分组在网络内传输
- 上面所展示的总线型网络早已淘汰,取而代之的是使用以太网交换机将多台主机互连所形成的交换式以太网
③:如何让分组在网络间传输
以由多个网络通过路由器连接形成的小型互连网络为例:需要考虑的问题有
-
如何标识各网络以及网络中各主机的问题(网络和主机共同编址的问题):例如使用IP地址进行标识,下图中,网络N1的网络号为
192.168.1
,连接到该网络中的各主机的主机号分别为1、2、254
;网络N2的网络号为192.168.0
,连接到该网络中各主机的主机号分别为1、2、254
-
分组从源主机到目的主机可选路径有很多条,应该如何选择(路由器如何转发分组和路由选择)
这些问题可以划归到我们后面会说到的网络层,至此我们便实现了分组在网络间传输
④:如何实现进程间基于网络通信
不同主机运行着不同的进程,它们需要通过网络进行通信:需要考虑的问题有
-
如何解决进程之间基于网络的通信问题:例如下图,服务器上的进程将数据发送给目的主机后,这个数据应该交付给Chrome还是QQ
-
传输中如果出现错误应该如何处理:例如下图,数据在传输过程中出现了误码、丢包等问题
这些问题可以划归到我们后面会说到的传输层,至此我们便实现了进程间基于网络通信
⑤:如何让进程正确解析和处理数据
主机上运行着各种各样的进程,它们解析或处理数据的方式也不相同,需要考虑的问题有
- 如何通过应用进程间的交换来完成特定的网络应用:例如支持万维网应用的HTTP协议、支持电子邮件的SMTP协议等
这些问题可以划归到我们后面会说到的应用层
现在,我们把实现计算机网络中可能遇到的各种各样的问题分别划归了到了物理层、数据链路层、网络层、应用层
二:计算机网络体系结构分层思想举例
计算机网络体系结构分层思想举例:接下来我们通过请求网页的例子来说明上面计算机网络分层思想
主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程和Web服务器应用进程之间基于网络的通信,这个过程中,体系结构的各层发挥的作用也不相同
- 浏览器应用进程和Web服务器应用进程需要用到完整的五层结构,因为它们要实现的是端到端通信,数据必须完整无误的交付给对方解析和处理
- 路由器等中间系统不需要应用层和传输层,因为它只负责信息的存储和转发等问题,不需要解析数据等操作,实现的是点到点通信
(1)浏览器到路由器
应用层:按HTTP协议要求构建HTTP请求报文,然后交付给传输层处理
传输层:给HTTP请求报文添加TCP首部,使之成为TCP报文段(格式如下图),然后交付给网络层处理。其中TCP首部主要作用
- 区分应用进程
- 实现可靠传输
网络层:给TCP报文段添加IP首部,使之成为IP数据报(格式如下图),然后交付给数据链路层处理。其中IP首部主要作用是为了让IP数据报可以在互连网上传输,也即被路由器转发
数据链路层:给IP数据报添加首部和尾部,使之成为帧(格式如下图),然后交付给物理层处理。其中帧首部和帧尾部作用如下
- 帧首部:让帧能够在一段链路上或一个网络上传输,可以被相应目的主机接收
- 帧尾部:让目的主机检查所接收的帧是否有误码
物理层:将帧看作比特流,然后在该比特流前面加入前导码(格式如下图)。前导码作用是让目的主机做好接收帧的准备
最后,物理层将含有前导码的比特流变换为相应的信号发送到传输媒体,然后路由器接收
(2)路由器处理
物理层:将信号变换为比特流,去掉前导码后将其交付给数据链路层(注意交付的是帧)
数据链路层:将帧首部和尾部去掉之后,将其交付给网络层(注意交付的是IP数据报)
网络层:解析IP数据报首部,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,然后将IP数据报交付给数据链路层
数据链路层:给IP数据报添加首部和尾部,使之成为帧,然后交付给物理层
物理层:将帧看作比特流,然后在该比特流前面加入前导码
最后,物理层将含有前导码的比特流变换为相应的信号发送到传输媒体,然后Web服务器接收
(3)路由器到Web服务器
物理层:将信号变换为比特流,去掉前导码后将其交付给数据链路层(注意交付的是帧)
数据链路层:将帧首部和尾部去掉之后,将其交付给网络层(注意交付的是IP数据报)
网络层:将IP数据报去掉之后,将其交付给传输层(注意交付的是TCP报文段)
传输层:将TCP报文段去掉之后,将其交付给应用层(注意交付的是HTTP请求报文)
应用层:对HTTP请求报文进行解析,然后给主机发回HTTP响应报文
(4)Web服务器到浏览器
与浏览器到Web服务器类似,Web服务器到浏览器也是这样的一个层层封装和解包的过程,最终浏览器拿到HTTP响应报文后会对其进行解析,然后将网页呈现在我们面前