计算机网络体系结构
常见的计算机网络体系结构
OSI制定周期长,复杂,运行效率低
TCP/IP 更简单,且有商业驱动,抢占市场,成为标准
计算机网络体系结构分层的必要性
计算机网络是个非常复杂的系统。早在最初的ARPANET设计时就提出了分层的设计理念。
”分层“可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
下面,我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。
1.若两台计算机用一根网线连接起来,有何问题
-
采用怎样的传输媒体(介质)
-
采用怎样的物理接口
-
使用怎样的信号表示比特0和1
归到物理层
2.若几台计算机都连到一根线上(总线型网络)
-
如何标识网络中的各主机(主机编址问题,例如MAC地址)
-
如何从信号所表示的一连串比特流中区分出地址和数据
-
如何协调各主机争用总线
归到数据链路层
3.若由几个网络和路由器组成一个小型互联网
-
如何标识各网络以及网络中的各主机(网络和主机共同编址的问题,例如IP地址)
-
路由器如何转发分组,如何进行路由选择
归到网络层
4.若一台主机开了一个浏览器进程和QQ进程(与网络通信相关的进程),一台服务器里运行着与网络通信相关的服务器进程,某时刻,主机收到了来自服务器的分组,要将分组交给哪个进程进行处理
-
如何解决进程之间基于网络的通信问题
-
出现传输错误时,如何处理
归类到运输层
5.通过上述,已经实现了进程间基于网络的通信,在此基础上,只需要制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。
归类到应用层
总结
分层思想举例
主机
应用层按http协议的规定构建一个http请求报文,
应用层将http请求报文交给运输层处理
运输层给http请求报文添加一个tcp首部(区分应用进程,实现可靠传输) 使之成为tcp报文段 运输层将tcp报文段交给网络层处理
网络层给tcp报文段添加一个ip首部(能在互联网上传输即能被路由器转发) 使之成为ip数据报 网络层将ip数据报交付给数据链路层处理,
数据链路层给ip数据报添加一个首部(能在一个链路或一个网络上传输)和一个尾部(让目 的主机检测接收到的的帧是否有误码)
使之成为帧 数据链路层将帧交付给物理层
物理层将帧看作是比特流(如果是以太网,还会加一个前导码,为让目的主机做好接受的准备)变换成相应的信号发送到路由器
路由器 物理层将信号变换为比特流,去掉前导码后,交付给数据链路层,实际上交付的是帧,
数据链路层将首部和尾部去掉后交付给网络层,实际上交付的是ip数据报,
网络层解析ip数据报的首部,从中提取出目的网络地址,然后查找自身的路由表,确定转发端口,以便进行转发,再将其交付给数据链路层
数据链路层给ip数据报添加一个首部(能在一个链路或一个网络上传输)和一个尾部(让目 的主机检测接收到的的帧是否有误码)(也是路由器自己的)
使之成为帧 数据链路层将帧交付给物理层
物理层将帧看作是比特流,变换成相应的信号发送到相应服务器
服务器
物理层将信号变换为比特流,去掉前导码后,交付给数据链路层,实际上交付的是帧
数据链路层将首部和尾部去掉后交付给网络层,实际上交付的是ip数据报
网络层去掉ip数据报的首部,交付给运输层,实际上交付的是tcp报文段
运输层去掉tcp报文段首部,交付给应用层,实际上交付的是http请求报文
应用层收到http请求报文后,进行解析,如何向主机发回http响应报文
过程同理。再倒过来
计算机网络体系结构中的专用术语 实体,协议,服务
实体:任何可发送或接收信息的硬件或软件进程。
对等实体:收发双方相同层次中的实体。
如,通信双方的网卡,正在进行通信的应用进程就是对等实体
协议:控制两个对等实体进行逻辑通信的规则的集合。
协议的三要素:语法 语义 同步
-
语法:定义所交换信息的格式
-
语义:定义收发双方所要完成的操作
-
同步:定义收发双方的时序关系
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下面一层所提供的服务。
协议是“水平的”,服务是“垂直的”。
实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是”透明“的。
服务访问点 在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务
-
数据链路层的服务访问点为帧的“类型”字段。
-
网络层的服务访问点为IP数据报首部中的“协议字段”。
-
运输层的服务访问点为“端口号”。
服务原语 上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
协议数据单元PDU ** 对等层次之间传送的数据包**称为该层的协议数据单元。
服务数据单元SDU 同一系统内,层与层之间交换的数据包称为服务数据单元。
多个SDU可以合成为一个PDU;一个SDU也可划分为几个PDU。