OSI七层协议
零:OSI七层协议 - 五层协议 - 四层协议 大致介绍
1.七层协议 - 五层协议 - 四层协议 对照
2.各个层的大致功能
3.各个层的协议
一:物理层:负责发送电信号
具有:物理传输、硬件、物理 特性。
中间的物理链接可以是:光缆、电缆、网线(双绞线)、无线电波(WiFi)
中间传递的是电信号:即01001011....这些二进制单位,
1
代表高电平
,0
代表低电平
简介:将数据链路层发过来的数据,转换成电信号
作用:数据链路层 是将整个帧
从一个网络元素 移动到 邻近的网络元素,而物理层的任务就是将帧中的1个bit
从1个节点 移动到 下一个节点
协议:与数据链路层相关,并进一步与该链路(网卡、网线、光纤、交换机、集线器、中继器)的实际传输介质有关。
二:数据链路层:Ethernet以太网协议
数据链路层的由来:单纯的电信号0和1没有任何意义,必须规定电信号多少位是1组,每组是什么意思。
数据链路层的功能:定义了电信号的分组方式。
以太网协议:早起的时候,各个公司都有自己的分组方式,后来形成了统一的标准,即:以太网协议:
Ethernet
作用:负责节点之间 网络层数据报的传输,对电信号进行分组。
协议:以太网协议、WiFi协议、电缆接入网的DPCSIS协议。
1.Ethernet规定:
① 一组电信号 构成一个数据包,叫做 "帧
"
② 每一数据帧 分成:报头head
和数据data
2部分
head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
head(18个字节) | data(46-1500字节) |
---|---|
发送者/原地址:6个字节 接收者/目标地址:6个字节 数据类型:6个字节 |
数据包的具体内容 |
2.Mac地址
head中包含的源和目标地址由来:Ethernet规定接入Internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即Mac地址。
每一块网卡在出厂的时候,都被烧录上了世界上唯一的Mac地址,长度为48位二进制,通常由12位16进制数来表示(前6位是厂商编码,后6位是流水线编号)
3.局域网内的传输方式
有了mac地址以后,计算机就可以通信了。
假设一个教室就是一个局域网(隔离的网络),这个教室里面有几台计算机,计算机的通信和人的通信是一个道理。
把教室里面的人都比作一个个计算机,假设教室里面的人都是瞎子(计算机确实没眼睛),计算机通信基本靠吼(
广播
)。现在我要找教室里面的Ben要学习资料,然后我就吼(广播)一声,说我要找Ben要学习资料,学习资料就属于我吼出去的数据。
但是我在吼(广播)的时候我是不是要标识
我是谁
,我要找谁
,我是谁
就是我的mac地址
,我要找谁
就是Ben的mac地址
,这两个地址做数据包的头部
,再加上数据
(学习资料) 就构成了一个数据帧
。这个数据包封装好以后就往外发,到物理层以后就全部转成二进制。往外发是怎么发的呢?就是靠吼(广播)。即 “我是Darker,我找Ben要学习资料”。
这么吼了一嗓子以后,全屋子的人都能听到,这就是
广播
。计算机底层,只要在一个教室里(一个局域网),都是靠广播的方式,吼。局域网的理解:什么是互联网,互联网就是由一个个局域网组成,局域网内的计算机不管是对内还是对外都是靠吼,这就是数据链路层的工作方式-----广播。
4.非局域网的传输方式
广播出去以后,所有人都听得见,所有人都会拆开这个包,读 发送者是谁,接收者是谁,只要接收者不是自己就丢弃掉。
对计算机来说,它会看自己的Mac地址,Ben收到以后,他就会把学习资料发给我,发送回来同样采用广播的方式了,靠吼。
同一个教室(同一个局域网)的计算机靠吼来通信,那不同教室的计算机又如何?比如说局域网1的pc与局域网2的pc如何通信?你在教室1(局域网1)吼,教室2(局域网2)的人肯定是听不见的。
这就是跨网络进行通信,数据链路层就解决不了这个问题了,这就得靠网络层出面了。
5.以太网协议封装过程
三:网络层:IP协议
最复杂的一层。通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。
IP地址 ==> 标识一台计算机在哪个子网内
ARP:把IP解析成MAC地址,用来在子网内部通信
IP + MAC ==> 确定世界上唯一 一台计算机。
IP + PORT + MAC ==> 确定世界上唯一 一个基于网络通信的软件。
1.IP协议
简介:一台计算机通过网络发送到另一台计算机。数据被分割为多个小块,然后通过IP包发送出去。IP包的特点是按块发送,会经过多个路由,但不保证能送达,也不保证顺序送达**。一个IP包除了包含要传输的数据外,还包含源IP地址和目标IP地址,源端口和目标端口。
IP协议的2个特征:非可靠、无连接
非可靠:这意味着它并不保证所要传输的数据一定会到达目的地。(当路由出错导致某个数据传输失败时,会丢掉此数据并发回一个ICMP信息回去。可靠性需要由更上层的协议提供,如TCP协议)。
无连接:这代表 IP datagram(数据报)在传输中没有连接起来,他们是一块一块各自分开的,分开独立处理。(比如需要向某个地方发送两个数据报A、B,他们两个有可能会经由不同的路径去到达目的地,有可能B要比A先到达)。
ip地址分成两部分
网络部分:标识子网
主机部分:标识主机
注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网
例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网
2.子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。
子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。
对于A类地址来说,默认的子网掩码是255.0.0.0;
对于B类地址来说默认的子网掩码是255.255.0.0;
对于C类地址来说默认的子网掩码是255.255.255.0。
- 通过子网掩码,就可以判断两个IP在不在一个局域网内部。
- 子网掩码可以看出有多少位是网络号,有多少位是主机号
知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,
172.16.10.1:10101100.00010000.00001010.000000001
255255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
172.16.10.2:10101100.00010000.00001010.000000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
结果都是172.16.10.0,因此它们在同一个子网络。
总结:IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
3.ip数据包
ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分
head:长度为20到60字节
data:最长为65,515字节。
而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。
以太网头 | ip 头 | ip数据 |
---|---|---|
4. ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到
通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议
arp协议功能:广播的方式发送数据包,获取目标主机的mac地址
协议工作方式:每台主机ip都是已知的
例如:主机172.16.10.10/24访问172.16.10.11/24
①首先通过ip地址和子网掩码区分出自己所处的子网
场景 | 数据包地址 |
---|---|
同一子网 | 目标主机mac,目标主机ip |
不同子网 | 网关mac,目标主机ip |
②分析172.16.10.10/24与172.16.10.11/24处于同一网络(如果不是同一网络,那么下表中目标ip为172.16.10.1,通过arp获取的是网关的mac)
源mac | 目标mac | 源ip | 目标ip | 数据部分 | |
---|---|---|---|---|---|
发送端主机 | 发送端mac | FF:FF:FF:FF:FF:FF | 172.16.10.10/24 | 172.16.10.11/24 | 数据 |
③这个包会以广播的方式在发送端所处的自网内传输,所有主机接收后拆开包,发现目标ip为自己的,就响应,返回自己的mac
四:传输层:TCP、UDP协议
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。
该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。
我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
传输层就相当于公司中的负责快递邮件收发的人。
公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。
作用:建立端口到端口的通信
补充:端口范围0-65535,0-1023为系统占用端口
TCP协议 三次握手:
TCP协议 四次挥手:
五:会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
会话层提供了数据交换定界和同步功能,包括了建立检查点和恢复方案的方法
-
提供了:数据交换定界和同步功能
会话层的具体功能
1.会话管理:
允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
2.会话流量控制:
提供会话流量控制和交叉会话功能。
3.寻址:
使用远程地址建立会话连接。
4.出错控制:
从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。
六:表示层
对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等
1.数据格式处理:
协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
2.数据的编码:
处理字符集和数字的转换。
例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,
因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
3.压缩和解压缩:
为了减少数据的传输量,这一层还负责数据的压缩与恢复。
4.数据的加密和解密:
可以提高网络的安全性。
七:应用层:HTTP、FTP、自定义协议
是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。
此外,该层还负责协调各个应用程序间的工作。
应用层的信息分组:报文(message)
应用层为用户提供的服务和协议有:
文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。
上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。
应用层的主要功能如下:
1.用户接口:
应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
2.实现各种服务:
该层具有的各种应用程序可以完成和实现用户请求的各种服务。