个人学习笔记之OSI七层协议

理想中的模型

OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有所有的7层,并完全遵循它的规定。
在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。
虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考。

四层参考模型

模型简单结构图(由上至下):

分层 部分协议
应用层 dns snmp http ftp telent 等
传输层 tcp udp spx等
网络层 ip ospf rip 等
网络接口层 arp/rarp ppp 等

1 物理层

所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。
其主要作用是屏蔽传输媒体和通信手段的差异,实现相邻计算机节点之间比特流的透明传送,为数据链路层提供服务。
(物理层的传输的是电信号/比特流)

2 数据链路层

因为物理层的比特流传入链路层,想要通信,就必须要别人接受你的信息,要让这些010010101001能让别人看懂,这就需要数据链路层来做了。数据链路层就是来对电信号来做分组的。把物理层传来的电信号分为8个一组,根据以太网协议Ethernet规定,分好的1组电信号称为一个帧,亦或者叫一个数据包。

一个帧的结构图:

头(head) 数据(data)

一个帧由两段组成,head包含:(固定18个字节,data包含:(最短46字节,最长1500字节),其中head中的固定字节是:

1. 发送者的地址
2. 接受者的地址
3. 数据的类型

head长度+data长度=最短64字节,最长1518字节,如果数据超过最大限制就分片发送。

3 网络层

不同的社区之间该如何通信呢? 换句话说,如何让WiFi上的一台计算机和以太网上的另一台计算机通信呢?我们需要一个“中间人”。这个“中间人”必须有以下功能: 1. 能从物理层上在两个网络的接收和发送0/1序列,2. 能同时理解两种网络的帧格式。路由器(router)就是为此而产生的“翻译”。
这就像旺仔广告中的妈妈给小明送牛奶,妈妈从家到学校就是计算机1发送的信息从路由器出来到计算机2的网关。然后妈妈在学校里找到3年2班的小明,就像是数据根据mac地址找到自己的目的地一样。
数据就变成了这个样子:
在这里插入图片描述
那么问题就来了,小明妈妈怎么知道小明在3年2班(mac物理地址)呢?有人说孩子的班级妈妈当然知道!那要是妈妈第一次去学校呢?其实很简单,那就是用广播。学校大喇叭一喊:谁叫小明啊? 小红听见没反应,小刚也没反应,哎小明听到了。也回应一声:谁找我啊 我在3年2班啊!这就是根据目标ip获取目标mac地址。
ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到MAC地址的转换。
在计算机间通信的时候,计算机要知道目的计算机是谁(就像我们人交流一样,要知道对方是谁),这中间需要涉及到MAC地址,而MAC是真正的电脑的唯一标识符。

4 传输层

到此为止,以下三层主要是进行数据传输,以上三层主要的任务是数据处理,传输层处于中间,是面向数据最高层也是面向对象最底层,起到承上启下的作用。
前三层进行了数据传输,但是网络世界无限大,每人都有不同的需求,计算机里也一样,一台计算机有好多进程,他们都可能需要通信,那我们怎么保证数据不会传输混乱,保证每个ip的每个应用进程收到的是自己需要的信息。

他们自然又他们的办法:建立端口到端口的通信,使用端口号来识别接收者。传输层的另一种功能就是当网络使用不同的要求包大小各异的协议时,将消息分段为较
小的单元.发送网络上由传输层分割的数据单元被接收端的传输层重新以正确的顺序组合,以便网络层解释。

5 会话层

我们已经在前几层确保数据正确封装,确定接收方的ip,建立端口连接发送信息,虽然过程明了,但是我们不可能每次都去调用各种协议封装发送,所以就要会话层代替我们完成这繁琐的工作了!
会话层的主要功能

  1. 会话的建立
  2. 会话的保持
  3. 会话的结束
  4. 接受下层传来的数据分析纠错

6 表示层

对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。表示层的具体功能如下:

  1. 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
  2. 数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
  3. 压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
    数据的加密和解密:可以提高网络的安全性。

7 应用层

应用层功能主要:规定应用程序的数据格式,该层具有的各种应用程序可以完成和实现用户请求的各种服务。因为并不是所有人都了解各种协议,但是所有人都可以使用电脑,用电脑里的应用程序进行工作、学习、娱乐。用户要的是体验,以上六层各种协议就是为传输数据,就是为应用层服务的。例如tcp协议可以为各种各样的程序传递数据,比如email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
你要查资料,打开浏览器,输入一个网址,就进入了相应的网站,那么这个浏览器就是我浏览网页的应用工具,也是工作在应用层的。浏览器是基于HTTP协议开发的,HTTP是一个应用层的协议。
你要用ftp下载一个文件,会首先打开ftp客户端,然后去连接服务器,这个客户端,就是应用层的工具。ftp客户端是基于FTP协议开发的,FTP协议也是一个应用层的协议。
你要发一封E-mail,当然会在电脑装一个foxmail、outlook等邮件客户端软件,然后编辑邮件,发送给相应的人。outlook、foxmail是基于SMTP和POP3协议开发的,SMTP、POP3也是应用层的协议。

数据在各层之间传递过程

1的进程ap1向2的进程ap2传递信息

  1. 交给1的应用层加上控制信息H5
  2. 发给1的运输层加上本层的控制信息H4
  3. 交给1的网络层加上本层的控制信息H3
  4. 交给1的数据链路层加上本层的控制信息H2和T2(尾部)
  5. 第一层由于是比特流传输,不加控制信息
  6. 进入计算机2逐层剥去控制信息,主机2得到数据 :)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44926231/article/details/93318538