分层结构
体系结构&参考模型
分层结构
为什么要分层
- 发送通信的计算机必须要将数据通信的通路进行激活
- 要告诉网络如何识别目的主机
- 发送通信的计算机要查明目的主机是否开机,并且与网络连接正常
- 发起通信的计算机要弄清楚,对方计算机中文件管理程序是否已经做好准备工作
- 确保差错和意外可以解决
怎么分层
- 各层之间相互独立,每层只实现一种相对独立的功能
- 各层之间界面自然清晰,易于理解,相互交流尽可能少
- 结构上可分割开。每层都采用最适合的技术来实现。
- 保持下层对上层的独立性,上层单项使用下层提供的服务
- 整个分层结构能够促进标准化工作
对等实体之间才有协议
认识分层机构
- 实体:第n层中的活动元素称为n层实体。同一层的实体叫做对等实体
- 协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。(水平)
- 接口(访问服务点SAP):上层使用下层服务的入口。
- 服务:下层为相邻上层提供的功能调用(垂直)。
SDU服务数据单元:为用户所要求的功能而传送的数据
PCI协议控制信息:控制协议操作的信息。
PDU协议数据单元:对等层次传送的数据单元。
概念总结
- 网络体系结构是从功能上描述叫算计网络结构
- 计算机网络体系结构简称网络体系结构是分层结构
- 每层遵循某个/些网络协议以完成本层功能
- 计算机网络结构是计算机网络各层及其协议的集合
- 第n层在向n+1层提供服务时,此服务不仅包含第n层本身的功能,还包含由下层无语提供的功能
- 仅仅在相邻层间有接口,且所提供服务的具体实现细节对上一层完全屏蔽
- 体系结构是抽象的,而实现是指能运行的一些软件和硬件
7层OSI参考模型(法定标准)
名称 | 作用 |
---|---|
应用层 | 所有能和用户交互产生网络流量的程序,如:QQ |
表示层 | 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。这就是绘画,也是建立同步。功能:1.建立、管理、终止会话;2.使用校验点可以是会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步(适用于传输大文件)。 |
会话层 | 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。这就是绘画,也是建立同步。功能:1.建立、管理、终止会话;2.使用校验点可以是会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步(适用于传输大文件)。 |
传输层 | 负责主机种两个进程地通信,即端到端的通信。传输单位是报文段或者用户数据段。功能:1.可靠传输、不可靠传输;2.差错控制;3.流量控制;4.复用分用 |
网络层 | 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。功能:1.路由选择 ;2.流量控制;3.差错控制;4.拥塞控制。 |
数据链路层 | 主要任务是把网络层传下来的数据报组装成帧。数据链路层/链路层的传输单位是帧。功能:1.成帧(定义帧的开始和结束);2.差错控制(帧错+位错);3.流量控制;4.访问(接入)控制,控制对信道的访问。 |
物理层 | 主要任务是在物理媒体上实现比特流的透明传输。单位是比特。功能:1.定义接口特性;2.定义传输模式;3.定义传输速率;4.比特同步;5.比特编码 |
数据报:网络传输的基本单位,包含一个报头和数据本身
资源子网(数据处理):应用层、表示层、会话层
通信子网(数据通信)传输层、网络层、数据链路层、物理层
复用:多个应用层进程使用下面运输层的服务。
分用:运输层把收到的信息分别交付给上面应用层种相应的进程。
5层参考模型
名称 | 作用 |
---|---|
应用层 | 支持各种网络应用;FTP、SMTP、HTTP |
传输层 | 进程-进程的数据传输;TCP、UDP |
网络层 | 源主机到目的主机的数据分组路由与转发;IP、ICMP、OSPF |
数据链路层 | 把网络层传下来的数据报组装成帧 |
物理层 | 比特传输 |
4层TCP/IP参考模型(事实标准)
名称 | 作用 |
---|---|
应用层 | 应用层只需要专注于为用户提供应用功能,比如HTTP 、FTP 、Telnet 、DNS 、SMTP 等 |
传输层 | 应用层的数据包会传给传输层,传输层(Transport Layer)是为应用层提供网络支持的 |
网际层 | 负责将数据从一个设备传输到另一个设备 |
网络接口层(数据链路层) | 网络接口层(Link Layer)在 IP 头部的前面加上 MAC 头部,并封装成数据帧(Data frame)发送到网络上 |
面向连接分为三个阶段,第一是建立连接,在此阶段,发送一个建立连接的请求。第二,只有在连接成建立之后,才能开始数据传输。第三,当数据传输完毕,必须释放连接。而面向无连接没有这么多阶段,他直接进行数据传输。
数据链路层
数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(比如以太网、令牌环等)上的传输。不同的物理网络具有不同 的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统 一的接口
ARP协议
数据链路层两个常用的协议是ARP协议(Address Resolve Protocol,地址解析协议)和RARP协议(Reverse Address Resolve Protocol,逆地址解析协议)。它们实现了IP地址和物理地址(MAC地址)之间的相互转换
网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地
址,才能使用数据链路层提供的服务,这就是ARP协议的用途。
网际层
网络层实现数据包的选路和转发。WAN
(Wide Area Network
,广域网)通常使用众多分级的路由器来连接分散的主机或LAN
(Local
Area Network
,局域网),因此,通信的两台主机一般不是直接相连的,而是通过多个中间节点(路由器)连接的。
网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络拓扑连接的细节,使得在传输层和网络应用程序看来,通信的双方是直接相连的。
IP协议
网络层最核心的协议是IP
协议(Internet Protocol
,因特网协议)。IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目标主机,那么IP
协议就为它寻找一个合适的下一跳(nexhop
)路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP
协议使用逐跳(hop by hop
)的方式确定通信路径。
ICMP协议
Internet Control Message Protocol
,因特网控制报文协议它是IP
协议的重要补充,主要用于检测网络连接。ICMP
协议使用的报文格式
8位类型 | 8位代码 | 16位校验和 |
---|---|---|
报文内容 | 取决于报文 | 的类型 |
8位类型字段用于区分报文类型。它将ICMP报文分为两大类:
一类是差错报文,这类报文主要用来回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5);
另一类是查询报文,这类报文用来查询网络信息,比如ping程序就是使用ICMP报文查看目标是否可到达(类型值为8)的。
有的ICMP报文还使用8位代码字段来进一步细分不同的条件。比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机重定向。ICMP报文使用16位校验和字段对整个报文(包括头部和内容部分)进行循环冗余校验(Cyclic Redundancy Check,CRC),以检验报文在传输过程中是否损坏。不同的ICMP报文类型具有不同的正文内容。
传输层
传输层为两台主机上的应用程序提供端到端(end to end)的通传输层为两台主机上的应用程序提供端到端(end to end)的通和目的端,而不在乎数据包的中转过程。
应用层
应用层负责处理应用程序的逻辑。
数据链路层、网络层和传输层负责处理网络通信细节,这部分必须既稳定又高效,因此它们都在内核空间中实现。
而应用层则在用户空间实现,因为它负 责处理众多逻辑,比如文件传输、名称查询和网络管理等
应用层协议
ping
是应用程序,而不是协议,前面说过它利用ICMP
报文检测网络连接,是调试网络环境的必备工具telnet
协议是一种远程登录协议,它使我们能在本地完成远程任务OSPF
(Open Shortest Path First
,开放最短路径优先)协议是一种动态路由更新协议,用于路由器之间的通信,以告知对方各自的路由信息。DNS
(Domain Name Service
,域名服务)协议提供机器域名到IP
地址的转换,我们将在后面简要介绍DNS
协议。- 我们可以通过
/etc/services
文件查看所有知名的应用层协议,以及它们都能使用哪些传输层服务
封装
- 经过
TCP
封装后的数据称为TCP
报文段(TCP message segment
),或者简称TCP
段。经过UDP
封装后的数据称为UDP
数据报(UDP datagram
)。 - 经过
IP
封装后的数据称为IP
数据报(IP datagram
)。 - 经过数据链路层封装的数据称为帧(
frame
)。- 以太网上传输的是以太网帧(
ethernet frame
) - 而令牌环网络上传输的则是令牌环帧(
token ring frame
)。
- 以太网上传输的是以太网帧(
帧的最大传输单元(Max Transmit Unit,MTU
),即帧最多能携带多少上层协议数据(比如IP
数据报),通常受到网络类型的限制。的以太网帧的MTU
是1500字节。正因为如此,过长的IP数据报可能需要被分片(fragment
)传输。
帧才是最终在物理网络上传送的字节序列。至此,封装过程完成