计算机网络协议 OSI七层协议
首先写这篇博客的目的是为了和大家一起交流以下自己对这一部分的认识与见解,在我学习之后,总结的一些知识点,以及我个人认为的重点与捷径,希望可以帮住到后来看到这篇博客的人们,如果我有认识错误,希望大家可以指出来,谢谢!
首先咱们直入主题,从OSI七层协议开始,一步一步的来说一说这其中的细节!
OSI七层协议是一个开放性的通信系统互连参考模型,它是一个定义得非常好的协议规范。有了规范,才方便人们沿着这一标准来进行自己应用的开发,其中7、6、5、4层是开发应用程序的时候,开发人员需要参考的标准,而下面3层,3、2、1层便主要是操作系统负责的区域了。人们各司其职,沿用着统一标准,这便才有了网络技术的日新月异,迅猛发展。
OSI模型有7层结构。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 。这一点我们在图中可以很清晰的看出来,那我们下面就来说说每一层的具体作用吧!
- 第七层 应用层
这一层是我们用户可以接触到的一层,我们在可以看到由这一层反馈给我们的信息,我们也可以与计算机进行交互,它的主要作用就是定义了应用程序如何进入这一层的沟通接口,以及如何接收应用程序传递下来的数据,以及把下一层的数据返回应用程序。 - 第六层 表示层
这一层是进行了把上一层传递下来的数据进行重新编码,或者说是进行格式转换,转换为可以进行网络传输的标准格式,就是在这一层,数据进行压缩等一些操作,解决两个系统间交换信息的语法与语义问题。还有,数据的加密和解密也是在这一层进行的。 - 第五层 会话层
这一层主要是定义进行通信双方的连接的建立与中断,比如ssh服务的连接,就是在这一层进行的。它就是为了确认双方是否可以建立连接。 - 第四层 运输层
这一层需要判断数据是否可以正常到达对方主机,或者是以什么方式到达,它规定了数据传输的方式,比如大名鼎鼎的TCP,UDP协议就是在这一层,定义了发送端与接收端的连接技术。另外,它还负责数据的检查,对收到的顺序不对的数据包的重新排序,是否存在数据丢失的情况,如果丢失请求重发。 - 第三层 网络层
我们的IP协议便是在这一层定义的,也控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。还有数据包传输路径的选择,所以在这一层,出来有IP协议需要学习,还有就是路由的概念了。逻辑地址IP就是工作在这一层的。 -
第二层 数据链路层
这一层是比较特殊的,它介于这软件与硬件之间,在偏向硬件方面,它负责MAC,会把数据包包裹成MAC数据帧,MAC是网络接口设备能处理的主要数据,会在物理层被编码成比特流,而MAC必须要通过通信协议才能获得网络介质的使用权,最常用的协议便是以太网网络协议。在偏向软件的部分,是由逻辑链接层控制,它会把上层数据转换为MAC格式,主要负责信息交换,流量控制以及失误处理。 - 第一层 物理层
网络介质是只能传输0和1的比特位的,于是物理层便定义了传输设备的电压与信号,把MAC数据帧转换为了比特流,再连接传输介质,将比特流传输走。
但是,OSI只是一个理论上的参考模型,也就是说知识在实际应用中作为参考的,我们也方便学习与理解。我们现在流行的TCP/IP协议族选用了四层结构,把会话层和表示层的功能整合在了应用层,这样更加有助于给开发人员。层次太多增加协议的复杂性也造成效率的折损。在OSI参考模型中,会话层的功能是会话控制和同步,表示层是解决两个系统间交换信息的语法与语义问题,还有数据表示转化,加解密和压缩与解压缩功能。这两层在实际应用中很难保持统一性,应用通常会选择不同的加解密方式,所以这两层的功能交给应用开发人员作为应用层的一部分功能开发是比较合适的。而留下的四层中,数据链路层和物理层也进行了整合,运输层还是运输层,网络层也还是网络层,只不过数据链路层和物理层合在一起叫了网络接口层,这一点我们在下一片详细介绍,这一篇我们只说七层模型!
既然我们是网络基础,便主要是先讨论下四层的一些问题,那我们就从物理层和数据链路层开始说起,在物理层可以识别的便是MAC数据帧,而文中也说了数据链路层把上层数据包转化为MAC数据帧格式,以太网的传输协议叫做冲突检测的载波监听多路访问,英文简称CSMA/CD,以太网的技术标准是由IEEE组织的IEEE 802.3标准制定的。而它就是工作在数据链路层和物理层的。我们来看下面这张图片!
这便是MAC数据帧的机构组成示意图,MAC数据帧的帧头包括六个字段。第一个字段表示前导码,第二和第三个字段分别为6字节长的目的地址字段和源地址字段,目的地址字段包含目的MAC地址信息,源地址字段包含源MAC地址信息。第四个字段为2字节的类型字段,里面包含的信息用来标志上一层使用的是什么协议。例如,IP数据报协议;IPX 分组交换协议。当然现在使用导大部分都是IP数据报协议。而MAC数据帧的数据部分只有一个字段,其长度在46到1500字节之间,如果传输的信息不够46个字节,它会自动补齐,使用一些填充码。在第五个字段,包含的信息是网络层传下来的数据。MAC数据帧的尾部,最后一个字段,只有4个字节长,它所包含的信息是帧校验序列FCS(使用CRC校验),用来简称数据是否完整。
现在我们又有了一个新的问题,MAC地址是什么?他有什么作用呢?看下图!
MAC地址也叫物理地址、硬件地址,它是由网络设备制造商生产网卡时写在网卡上面的,即出厂自带。MAC地址与IP地址一样,在计算机里都是以二进制表示的,只不过IP地址是32位的,而MAC地址则是48位的。
它在我们计算机中通常表示为12个16进制数,如:18:65:90:dc:e4:31这就是一个MAC地址,(这里如图也可以进行换算,MAC是有六个二位十六进制数的,一位十六进制数等于思维二进制数,所以,MAC为48位位二进制数)。其中前6位16进制数18:65:90代表的是网卡制造商的自己产品的编号,这个是由国际组织IEEE(电气与电子工程师协会)规定,分配的,而后6位16进制数dc:e4:31代表这个网卡制造商所制造的网卡的系列号。只要不更改自己的MAC地址,MAC地址在世界是具有惟一性的。但是现在有时候你会发现,有一些人的MAC地址是相同的,但是也丝毫不影响它们上网,这是因为他们的计算机不在同一个局域网内,所以才能不受影响,MAC地址是工作在局域网之内的,那就是说,MAC只能在局域网内进行通信,一旦出了局域网,那就需要IP地址来参与了。所以只要保证同一个局域网内没有相同的MAC,通信就不会被干扰。
还有一点需要说的就是在数据链路层数据会被包裹上源MAC地址和目标MAC地址等一堆杂七杂八的额外数据,其实不止这样,在每一层都会有属于它们这一层的包裹,如下图!
它们在进行一层一层的封装,对数据写入自己特点的包头,打上自己的标签之后,才会交给下一层。就比如上文说的MAC数据帧,其实那个结构图里面的46-1500字节范围的数据包含了上面五层自己的标记。
这幅图便是数据到达接收端之后的场景,物理层对比特流进行解读,转换为数据帧,并进行CRC循环校验位的简称,如果有错,他会根据协议CRC规定要求发送方重新发送,它只能只能检错,不能纠错。如果没问题,便向上发送,在进行一层一层的解封装。
在数据链路层,双方停留在这一层的数据叫数据帧,而在上一层网络层呢?数据的名字又叫什么,下图有介绍!
在不同的一层,有不同的叫法,在网络层叫数据包,而在传输层,名字又变为网段。这便是PDU,协议数据单元。
协议数据单元,是指在分层网络结构,例如在OSI,TCP/IP等模型中,在传输系统的每一层都将建立协议数据单元。
而下层只为相邻的上一层提供服务。
再回到物理层,数据的传输首先得要求物理条件满足,比如网线是否通畅等因素,下面我们就来说一下网线!
网线是连接局域网必不可少的设备。在局域网中常见的网线主要有双绞线、同轴电缆、光缆三种。 双绞线,是由许多对线组成的数据传输线。它的特点就是价格便宜,所以被广泛应用,如我们常见的电话线等。它是用来和RJ-45接口水晶头相连的,其中也分为UTP和STP两种,STP更贵一点,它在线皮上有金属保护层,可以进行电磁感应的相互抵销,一般的传播距离为100米。同轴电缆分为粗线和细线,粗线可以传播500米,细线185米,粗线的横截面大,电阻小,不过这种线现在使用的已经不多了,它和双绞线一样是铜制的。
我们主要说说双绞线
双绞线端接有两种标准:T568A和T568B,而双绞线的连接方法也主要有两种:直连线和交叉线。直连线的水晶头两端都是T568B标准线序,为:白橙,橙,白绿,蓝,白蓝,绿,白棕 棕;而交叉线的水晶头一端为T568A线序,而另一端则采用T568B线序,即白绿,绿,白橙,蓝,白蓝,橙,白棕,棕。
下图为双绞线每一根线的作用。
在网速100Mbps以内,由图可以看到我们只使用4跟线,白绿,绿,白橙,橙。白绿,绿负责发送,白橙,橙负责接收。而在以前就有其他四根做电话线的作用。现在网速都高达1000Mbps,八根线都得起作用了,这就为线序要求很严格了,不能有一点错,不然会造成电磁干扰,数据会丢包。所以网线也是工作在物理层的网络设备。
说到MAC地址的通讯便得说局域网,人们在局域网中的通讯又是如何的呢?
下图:
首先看集线器Hub
他的工作原理是基于半双工,和广播机制的。这种设备非常老旧,现在基本不用了,都使用交换机来替代,它会把收到的每一份信息都会向其他接口方向的主机传递,比如:计算机1需要连接计算机2,这个时候计算机1的广播信息发出,传到集线器,集线器会把这条广播消息再传给计算机2,3,4。每一个计算机都会传一遍,这便是广播机制。这也造成了网络冲突,说到冲突,便有了冲突域的概念,如同,这四台计算机就处在一个冲突域之中。在计算机1和2通信的时候,其他计算机如果再进行通信就会造成数据冲突。而半双工便是,先把计算机1的信息传给2,传过去之后才会把计算机2的信息传给1,不能同时进行传输。它的宽带共享,也是信息传递速度降低的主要原因。而网桥是介于集线器和交换机的中间产物,他比集线器智能一点,他会记录穿过它的信息的MAC地址与端口的对应关系,从而生成MAC地址表,比如:A想要发送到B,信息传到网桥,一开始它的表里没有目标MAC地址的信息,它便会把信息传给B,C,D计算机,但是它学习到了MAC地址为00000CAAAAAA的计算机在自己的一号端口,从而加入MAC地址表。但是C,D计算机接收到之后因为目标MAC不是它们自己,所以把信息丢弃了,(但是这只不过是网卡的默认模式,你也可以把网卡设置为混杂模式,这样只要到达你计算机的数据都会接受,这也翻译出了这种信息通信没有安全可言。)在信息到达B之后,B给回复信息,同理,网桥也学到了B的MAC与端口对应信息,当所有的全学会的时候,网桥就起到了它的作用,隔断冲突域,下次A给B发信息,网桥收到之后只会转发给B,不会再向下传递,从而把一个冲突域分成两个部分,A和B,C和D之间的通信不再想和影响。不过网桥一般与集线器连着使用。还有一点,如果A发送的是广播信息,那目标MAC地址会是48个连续的1,网桥收到之后也会老老实实的向各个方向传播,因为它学不到48个1的MAC到底是哪个端口的,因为他就不存在。
这便是局域网内的信息传播
但是这些还是远远不够的 ,所以我们在下一篇说说TCP/IP协议和在实际工作中的每一层中的一些协议!