前言
本文梳理计算机网络分层模型。
术语介绍
实体:第n层的活动元素成为n层实体,同一层的实体叫对等实体。
协议:为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。
接口:上层使用下层服务的入口。
服务:下层为相邻上层提供的功能调用。
SDU服务数据单元:为完成用户所要求的功能而应传送的数据
PCI协议控制信息:控制协议操作的信息
PDU协议数据单元:对等层次之间传送的数据单位
TCP/IP参考模型
(Transfer Control Protocol/Internet Protocol)
- 传输单元
应用层
决定了向用户提供应用服务时通信的活动。
- 主要功能:为用户提供接口、处理特定的应用;数据加密、解密、压缩、解压缩;定义数据表示的标准。
- 比如FTP(File Transfer Protocol)
DNS(Domain NameServer)域名服务的协议,提供域名到IP地址的转换,允许对域名资源进行分散管理。
HTTP;
SMTP(Simple MessageTransfer Protocol)简单邮件传输协议;
POP3(Post OfficeProtocol)邮局协议用于发送和接收邮件;
RIP(RoutingInformation Protocol)路由器用来在 IP 网络上交换路由信息的协议;
Radius(RemoteAuthentication Dial In User Service)拨号接入远端认证协议完成接入用户的认证、授权、计费功能的协议;
等;
传输层
提供处于网络连接中的两个进程的通信,即端到端通信。传输单位是报文段或用户数据报。
-
主要功能:
可靠传输、不可靠传输
差错控制
流量控制
复用分用- 复用:多个应用层进程可同时使用下面传输层的服务。
- 分用:传输层把收到的信息分别交付给上面应用层中相应的进程。
-
常用协议:
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol传输控制协议)和UDP(User Data Protocol用户数据报协议)。
网络层
用来处理网络上流动的数据报,源主机到目的主机的数据分组和路由与转发,为分组交换网上的不同主机提供通信服务。传输单位是数据报。
-
主要功能:
路由选择
流量控制
差错控制
拥塞控制 -
常用协议:
IP协议,IP为网络层最主要的协议,其功能即为网络层的主要功能,一是提供逻辑编址,二是提供路由功能,三是报文的封装和解封装。
ICMP、ARP、RARP协议辅助IP工作。
数据链路层
主要任务是把网络层传下来的数据报组装成帧,数据链路层的传输单位是帧。
-
主要功能:
封装接封装帧
差错控制: 帧错、位错
流量控制
访问(接入)控制: 控制对信道的访问 -
包括控制操作系统、硬件的设备驱动、网络适配器、及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围内。
-
数据链路层又分为MAC子层(media access controlsub-layer介质访问控制子层)和LLC(logic link control sub-layer逻辑链路控制子层)子层。
MAC子层负责指定数据如何通过物理线路进行传输,并向下与物理层通信,它定义了物理编址、网络拓扑、线路规范、错误通知、按序传递和流量控制等功能。
LLC子层负责识别协议类型并对数据进行封装以便通过网络进行传输。LLC子层主要执行数据链路层的大部分功能和网络层的部分功能。如帧的收发功能,在发送时,帧由发送的数据加上地址和CRC校验等构成,接收时将帧拆开,执行地址识别、CRC校验,并具有帧顺序控制、差错控制、流量控制等功能。此外,它还执行数据报、虚电路、多路复用等部分网络层的功能。 -
常用协议:
SDLC、HDLC、PPP、STP -
MTU
Maximum Transmission Unit,缩写MTU,中文名是:最大传输单元。
MTU限制的是数据链路层的payload,也就是上层协议的大小,例如IP,ICMP等。
由数据包封装成的数据帧其大小是受对应的数据链路层协议的MTU(最大传输单元)限制的,如以太网数据链路层封装网络层IP包的MTU值为1500字节(这是指帧中数据部分,也就是来自网络层整个数据分组,最大不能超过1500字节,但不包括帧头和帧尾部分)。
物理层
主要任务是在物理媒体上实现比特流的透明传输。物理层传输单位是比特。
-
主要功能:
定义接口特性
定义传输模式:单工、半双工、全双工
定义传输速率
比特同步
比特编码 -
常用协议:
Rj45、802.3
TCP/IP通信传输流
包是指通过网络传输的基本信息单元。
基本的包由头(包含发送系统和接收系统的地址)和正文或有效负荷(包含要传送的数据)组成。
当包经由 TCP/IP 协议栈时,每一层上的协议都会在基本头中添加或删除字段。当发送系统上的协议向包头中添加数据时,此过程即被称为数据封装。
此外,每一层对于已更改的包都有不同的称呼,如图中所示。
发送端
-
应用层:通信的起源
当一个系统上的用户发送消息或发出必须访问远程系统的命令时,即会开始包的历史记录。应用协议会设置包的格式,以便相应的传输层协议(TCP 或 UDP)可以对包进行处理。 -
传输层:
当数据到达传输层时,该层上的协议即会开始数据封装过程。传输层会将应用程序数据封装到传输协议数据单元中。- 使用TCP协议
TCP 使用段来确定接收系统是否准备好接收数据。TCP 将从应用层收到的数据分成多个段,再向每个段中附加一个头。
段头包含发送端口和接收端口、段排序信息以及称为校验和的一个数据字段。两台主机上的 TCP 协议都会使用校验和数据来确定数据传送是否出现错误。
使用三次握手来建立连接。 - 使用UDP协议
与 TCP 不同,UDP 不会检查数据是否已到达接收主机。相反,UDP 会将从应用层收到的消息的格式设置为 UDP 包。UDP 会向每个包中附加一个头。此头包含发送端口和接收端口、包含包长度的字段以及校验和。
发送 UDP 进程会尝试将包发送到接收主机上的对等 UDP 进程。应用层将确定接收 UDP 进程是否会确认包的接收。UDP 不需要任何接收通知。UDP 不使用三次握手。
- 使用TCP协议
-
网络层:准备传送包的位置
IP 协议将在该位置处理这些段和包。
IP 通过将这些段和包的格式设置为多个称为 IP 数据报的单元,准备对其进行传送。然后,IP 会确定数据报的 IP 地址,以便将其高效地传送到接收主机。
IP会向段或包添加** IP 数据包头**,IP 数据包头中的信息包括发送主机和接收主机的 IP 地址、数据报长度以及数据报排序顺序。如果数据报超过网络包允许的字节大小而必须进行分段,则会提供此信息。 -
数据链路层:成帧位置
数据链路层协议(如 PPP)会将 IP 数据报的格式设置为帧。
这些协议将附加第三个头和一个脚注,以便对数据报执行“成帧”操作。
帧标题包括CRC字段(循环冗余码校验 ,cyclic redundancy check, CRC) ,用于检查帧经由网络介质时是否出现错误。然后,数据链路层会将帧传递到物理层。 -
物理网络层:帧的发送和接收位置
发送主机上的物理网络层会接收帧,并且将 IP 地址转换为适合网络介质的硬件地址。然后,物理网络层会通过网络介质将帧向外发送。
接收端
当包到达接收主机时,包便会按照其发送顺序的相反顺序经由 TCP/IP 协议栈。
接收主机上的每种协议还会删除头信息,该信息通过发送主机上的对等协议附加到包中。
将会发生以下过程:
-
物理网络层接收帧格式的包。物理网络层会计算包的 CRC,然后将帧发送到数据链路层。
-
数据链路层检验帧的 CRC 是否正确,然后删除帧标题和 CRC。最后,数据链路层将帧发送到 Internet 层。
-
Internet 层读取头中的信息以识别传输。然后,Internet 层将确定包是否为分段包。如果分段进行传输,则 IP 会将分段重新汇编成原始数据报。然后,IP 将删除 IP 数据包头并将数据报传递到传输层协议。
-
传输层(TCP、SCTP 和 UDP)读取头以确定必须接收数据的应用层协议。然后,TCP、SCTP 或 UDP 将删除其相关的头。TCP、SCTP 或 UDP 将消息或流发送到接收应用程序。
-
应用层接收消息。然后,应用层将执行发送主机所请求的操作。