计算机网络(自顶向下)第一章(中)

Aki 发布于 2023-02-11 262 次阅读


协议层次和服务模型、

计算机网络分层原因:

  1. 各层独立工作,层之间通过接口联系,降低协议工作的复杂程度
  2. 提高灵活性,任何一层的改变不影响其他层
  3. 每层的实现技术可以不同,减少了实现的复杂度
  4. 易于维护,每层可以单独进行调试
  5. 便于标准化

OSI七层模型、

在因特网协议栈出现以前,OSI模型是ISO组织研发的计算机网络结构模型。OSI的模型一共有7层,从下到上依次为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。相比因特网体系结构,OSI多了两层。

层次名称功能描述
7应用层(Application)主要为各种各样的网络应用提供网络服务,应用报文之间的交互(Email,FTP,微信)
6表示层(Presentation)将信息表示为一定形式的数据流(将信息转换为比特)完成的任务有压缩与解压缩,加密解密等
5会话层(Session)它负责通信主机间的会话的建立,管理和拆除(协调通信双方会话)
4传输层(Transport)是参考模型的核心层之一,负责通信主机间的进程到进程的区分,并负责提供可靠的传输(对于TCP来说,其还负责提供可靠的传输,差错恢复,拥塞控制等额外功能)
3网络层(Network)是另一个核心层,功能是通过IP地址以及最优路径,将每一个每一个分组从信源机一路送至目的机(以分组为单位,端到端的传输)
2数据链路层(Data Link)在相邻的两点间传输以帧为单位的数据(提供介质访问服务(通过物理地址识别通信主机,提供可靠的帧传递,并作差错控制,流控等))
1物理层(Physical)发送端将上层的帧转换为物理信号,通过介质传送到相邻的接收方,接收方将物理信号转换为还原为比特流数据(提供透明的比特流(光信号,电信号,无线信号…)传递,物理流只关心比特流传输,不关心比特流包含内容)

每一层都利用它下层的服务,为它的上层提供服务,因特网将两层的功能留给了开发者自行实现。因此因特网协议栈中没有表示层和会话层,如果需要这些服务,必须在应用层中实现。

相关层协议、

层次简介数据单元相关协议
应用层完成一个端系统与另一个端系统之间的信息交换。包含大量应用普遍需要的协议,支持网络应用报文(message)FTP、SMTP、HTTP
运输层在应用程序端点之间传送应用报文。主机到主机数据传输,负责从应用层接收报文段( segment ),并传输应用层的报文,到达目的后将消息上交给应用报文段(segment)TCP、UDP
网络层在完成网络中一台主机与另一台主机之间的通信。从源到目的地数据报(datagram)的选路有连接方式:分组(packet);无连接方式:数据报(datagram)IP、选路协议
链路层为网络层将分组从一个节点移动到下一个节点。在邻近网元之间传输数据帧(frame)PPP、以太网
物理层将链路层一帧中一个一个比特从一个节点移动到下一个节点。物理层负责将链路层帧中的每一位(bit)从链路的一端传输到另一端比特(bit)

 封装和解封装、

一个分组,在不同的层次有不同的称谓,是因为它们经过每一层的时候就被该层封装上了属于该层的相关信息,也就是前面提到的必要信息;于是,每一分层的分组有两种类型的字段:首部字段和有效负载;其中有效负载即为来自上一层的分组数据,而首部字段就是该层加上的必要信息;分组不断被封装以实现各层协议规定的相关功能。

接收方:进行解封装/解包,从最底层逐渐上行到最高层提取出信息(解封装的过程就是封装的逆向过程,在每层去掉头部信息,最终还原出应用层的输出:信息)

数据封包和拆包的过程、

对于数据包的封装和拆分过程,如果每层的协议,及协议的详细信息都由应用层程序员来处理的话,那有点太不友好了,且程序员的操作出错的概率还比较大。所以linux内核封装了各种协议栈,用户使用哪个协议,只需要调用系统提供的系统调用接口函数,传递对应的参数即可,剩下的封装协议的过程,由linux内核来完成。------拆分的过程同理。 

插一句:内核程序的五大功能:

  •         1.文件管理:将一堆 0 和 1 转换成我们人类好识别的字符
  •         2.进程管理:负责进程调度机制的,时间片轮转、上下文切换
  •         3.设备管理:linux下一切皆文件
  •         4.网络管理:网络协议栈
  •         5.内存管理:如栈上分配的空间由操作系统负责回收