osi 七层协议的理解 ---物理层/数据链路层 --- 理论基础
osi 七层协议,知识点需要掌握程度: 了解/熟悉.
最近在研究网络的七层协议,但是这七层协议,我们重点分析其中的五层协议:
物理层/数据链路层/网络层/传输层/应用层
首先我们需要阐述的是七层协议是并不存在的,是人为的进行设计区分的。
1.局域网内的传输.
上面的图是我们局域网内的传输模型.
物理层:
上图中,每个主机和路由的连接都是通过网线来完成的,网线要干的作用很简单,就是传递主机发送出去的消息,这个就是物理层的作用.
在网孔和网孔之间传递二进制数据.
数据链路层:
我们在物理层传输的数据都是一段一段的二进制的数据(先就简单理解吧,不同的传输介质传输的东西不一样,比如光缆就是传递的光缆信号,需要把二进制转化为光缆信号,类似那个猫眼,接收端收到光缆信号后也需要把光缆信号转为二进制信号)。
这些数据,会通过物理层,也就是网线传递到接收方,但是接收方看到这些二进制数据,其实是很懵逼的!
哪里是数据的开始?哪里是数据的结束?,因为我们需要一层协议,帮助接收方来把这些二进制数据进行拆分,因此这就引发了我们的数据链路层的作用:
但是这些数据传递给另一台主机后,接收方也是需要解析的? 这个就是数据链路层该干的活.
数据链路层的协议是固定的: head + data的组成方式,大致如下:
数据链路层传输的是MAC帧,后面我们会讲为什么是传递的是MAC帧,而不是局域网的IP,以及MAC是什么?
head固定18个字节----
源MAC地址:6个字节,MAC地址固定就是6个字节的.
目标MAC地址:6个字节
数据类型: 6个字节
data最小46个字节最大1500字节,也就是一个MAC帧最小是46+18个字节,最大是1500+18个字节
上面是数据链路层传输的协议,下面我们来讲数据链路层的实践部分:
局域网传输广播理论基础:
局域网内的数据传输靠广播,广播广播,字面意思就很清楚,广而告之.
通俗的理解:
一个子网可以理解为一个教室,子网内的主机可以理解为教室内的学生。
一个教室内的同学,比如同学A想找萌萌要昨晚他看的岛国动作片的地址,这个时候A直接喊一声(萌萌,把你昨天晚上收藏的岛国地址发给我)。
这个时候全班都能听到同学A的请求,但是只有萌萌会答复A,并回复说,地址是XXXXX。(这个动作就是广播)
上面就是广播的理论基础,那么系统怎么判断这条消息是发送给我的呢? 答案是通过MAC判断.
假设我们一个局域网内有4台设备,当其中一台设广播了一条消息的时候,另外三台都会收到这条消息.
这条消息被分成了三分,通过网线(物理层)分别传输到了三台主机上,我们的网线是直接插到网卡上的网孔的,这个时候我们的网卡会提取MAC和自己的MAC进行比较,看是否一致,如果是一致,把数据接着往应用层传递,如果不是一致的话,此条消息直接丢弃.(p2p打洞就是让网卡以为这条消息是发送给我的)
所以MAC就是:
每台主机的网卡在出厂之前都会分配一个6字节的唯一标识符,前24位是像协会申请的,后24位由厂家自己分配.
所以用MAC理由就很简单了,就像多层漏抖一样,它是最近的一层。
OK,局域网内的主机要给其它用户发送消息的时候,必须首先知道对方的MAC地址,那么怎么知道的呢?
答案是ARP协议,这个协议后面进行补充说明,是借助IP进行实现的.
接下来我们进行测试,通过wireshark进行局域网的抓包分析,通过对抓到的包进行分析.