OSI 五层网络模型详解

OSI网络模型 是指:开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由ISO(国际标准化组织)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。

 

ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论,最终提出了作为通信协议设计指标的OSI参考模型。这一模型将通信协议中必要的功能分成了7层。通过这些分层,使得那些比较复杂的网络协议更加简单化。在这一模型中,每个分层都接收由它下一层所提供的特定服务

 

为了更好的理解,我们主要讲解五层协议:

从上往下分别是:

1.应用层

2.传输层

3.网络层

4.数据链路层

5.物理层

 

 

 

从下往上更容易理解,所以先从物理层开始:

一.物理层

电脑要联网,当然要把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。

 

这就叫做"物理层",它就是把电脑连接起来的物理手段
物理层中,将数据的0、1转换为电压和脉冲光传输给物理的传输介质

物理层主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

 

二.数据链路层

假设两台主机A和B,A和B已经有了连接的介质,现在A给B传输数据,这些数据其实就是一堆的0和1,B主机收到这一堆0和1 要怎么解析呢?多少个电信号算一组?每个信号位有何意义?到底是按8位还是按16位解析?如何解析就是数据链路层干的事情

早期的时候,每家公司都有自己的电信号分组方式。
逐渐地,一种叫做 "以太网"(Ethernet)的协议,占据了主导地位。

以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。

head包含:(固定18个字节)

  • 发送者(源地址,6个字节)
  • 接收者(目标地址,6个字节)
  • 数据类型(6个字节) 

Data:就是数据包的具体内容,最短为46字节,最长为1500字节

因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

 

2.1 MAC地址

以太网(Ethernet)协议规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址,MAC地址也称物理地址。

每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。

PS:MAC地址一共有FFFFFF FFFFFF=‭2^48次方=281474976710655‬ 多种可能,也就是有281万亿个MAC地址可以被使用,以目前的情况,根本不必担心会用完

2.2 广播

每块网卡都有了自己的MAC地址,那么发送端A网卡怎么知道另一块网卡的MAC地址?

答案是 以太网(Ethernet)协议 采用了一种很"原始"的方式,它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。

上图中,1号计算机向2号计算机发送一个数据包,同一个子网络的3号、4号、5号计算机都会收到这个包。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"(broadcasting)。

有了数据包的定义、网卡的MAC地址、广播的发送方式,"数据链接层"就可以在多台计算机之间传送数据了。

总结:

数据链路层 规定了互连设备之间解析数据帧。
数据链路层使用最频繁的协议就是以太网(Ethernet)协议,而以太网协议主要就是在标头中加入MAC物理地址

 

 

三 、网络层

以太网协议,依靠MAC地址发送数据,但是这仅局限于局域网,也就是一个小的网络段,这样才能通过广播的方式来通信。但是如果我想访问欧洲的主机,我们和欧洲肯定不在一个局域网里,我们的互联网是由无数个子网络组成的

就算我们和欧洲在同一个局域网内,通过广播的方式也是不切实际的,你每天会收到全世界各地的无数的请求包

 

因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由" 就是指如何向不同的子网络分发数据包)遗憾的是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

这就导致了"网络层"的诞生。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"或者IP地址。

 

判断是否是一个网络要用到子网掩码(subnet mask),一般为255.255.255.0

判断的方法是将子网掩码分别和不同的IP地址做AND运算,若结果相同,则在一个子网络内,若不同则代表不是一个网络,那么久采用路由的方式,发送给网关,让网关来处理。网关就是相当于子网络与外界通信的一个IP地址

IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络,使用子网掩码。

 

所以网络层主要就是IP地址管理和路由选择,以IP协议为主,在标头添加Ip地址

 

四、传输层

传输层就是规定了应用程序之间的通信,一台主机上运行着多个应用程序(如邮件,浏览器,QQ), 收到包了,怎么判断是要给哪一个应用程序用的,这时候就要用端口来区分了,每个应用程序都会有一个端口。

"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。应用程序会随机选用一个端口,然后与服务器的相应端口联系。

 

传输层就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了

传输层的协议主要有UDP和TCP。TCP就是比较可靠的UDP,因此远比UDP复杂
可以简单理解成TCP和UDP也是分为"标头"和"数据" , 标头就是端口,数据就是具体的内容

 

5.应用层

应用层很好理解,就是使用不同的协议,如HTTP,FTP等,这些协议规定了具体的数据解析方式。

 

比如HTTP协议,就会把HTTP包完整的放进TCP的Data部分,就是说HTTP是依赖传输层的协议(TCP或者UDP协议) 进行发送的

 

一个正常的以太网协议包,大概是下面这样的,一层套一层

以太网协议(数据链路层) 的标头存放mac地址,IP协议(网络层)的标头存放IP地址,TCP|UDP协议(传输层)的标头存放端口信息,而应用层就是具体的协议的完整数据包了。

 

七层网络模型和五层网络模型对于的各类协议,如下图:

 

七层网络模型的具体分工:

 

 

参考链接:

https://blog.csdn.net/taotongning/article/details/81352985
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
https://baijiahao.baidu.com/s?id=1606474671793061553&wfr=spider&for=pc

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值