层次结构设计的基本原则:
- 各层之间是相互独立的;
- 每一层需要有足够的灵活性;
- 各层之间完全解耦。
结构
OSI7层
1.物理层(Physical Layer)
物理层主要是由双绞线、光缆、电缆、无线电波组成,其作用很简单,就是连接不同的计算机,并传递底层电信号,高电压: 1 ,低电压: 0 。简单的说,物理层确保原始的数据可在各种物理媒体上传输。
2.数据链路层(Data Link Layer)
作用——封装成帧!
在发送数据的时候,这时我们就要对要发送的 01 进行分组,规定前面 xxx 位是地址,后面 xxx 位是数据,并且,大家想互相都能通信,就必须都遵守这样的规则(协议),这个协议叫以太网协议。
以太网协议规定:一组电信号构成一个数据包,叫帧,每一帧分为报头( head )和数据( data ) 两部分。
- 报头(head):固定 18 个字节
- 发送者/源地址: 6 个字节
- 接收者/目标地址: 6 个字节
数据类型: 6 个字节 数据( data ):最短 46 个字节,最长 1500 字节 数据包的具体内容(发送给女朋友的话/快递货物)。
MAC 地址
以太网协议中的地址叫 MAC 地址, MAC 地址是每台计算机唯一的物理地址,是被写在网卡上的。以太网协议规定,每一台接收和发送数据的设备必须要装有网卡,负责发送和接收数据的设备,发送端和接收端的地址,指的就是网卡的地址,即 MAC 地址。
交换机
我们说两个电脑要通信要先连根线,但是如果电脑多了之后,电脑间通信连的线也就多了,这样太乱了,我介绍的这个东西就是交换机,它是负责组建局域网,研究的是 MAC 地址,它有什么用你看下面图片中的接口就知道了。
有了 MAC 地址,以太网就可以进行工作了.理论上讲,我们可以和世界上的每一台连接了互联网的计算机进行通信了,此时通信的方案是:广播。
广播
广播又是怎么一回事?其实广播的方式很原始,基本通信就是靠吼。就像你想跟女朋友求婚一样,你会大喊:“ xxx ,嫁给我吧”,旁边能听到这句话的人有很多,但是只有你女朋友会回复你。其他人会把你当傻逼一样看待。没错,广播就是这样进行通信的。首先组织好了一个数据包之后,把这个数据包通过电信号发出去,这时整个网络上所有的人都会收到你发的这条数据,然后看看这个数据是不是自己的。如果不是就当他不存在,如果是,就接收。虽然效率低点,但毕竟能通信了。
广播带来什么问题呢?如果是在一个小的网络环境里。比方说,你们宿舍几个人,一起玩 CS ,没问题,你喊一嗓子,你室友也能回应你,也就效率低点。但是如果你连接到全世界的互联网上,还使用广播的方式来通信,就不是效率问题了,而是一个巨大的通信灾难。全世界 60 多亿人,每个人吼一嗓子,每个人发送一条信息,那每个人都会收到 60 多亿条信息,网络瞬间瘫痪,这种问题被称为广播风暴,那如何解决呢?
3.网络层(Network Layer)
路由器
路由器是负责组建广域网,研究的是 IP 地址。
现在我们要实现局域网和局域网之间的通信,比如此时位于青海的你要给河南的朋友送东西,你不可能用广播的方式了,你只能快递,这个青海和河南以及还有很多不同的省份是我国的土地划分中的一部分,每一个省也可以看作是一个个局域网,那在网络中,我国就相当于广域网,那不同的局域网是如何划分的呢? MAC 地址是没办法区分的,因为 MAC 地址上只有厂商的流水号,这就引出我要说的网络层,网络层引出了一套新的地址来区分不同的局域网/子网,这一套地址就是网络地址。
规定网络地址的协议叫 IP 协议,它定义的地址叫 IP 地址。其实跟我国的省份名差不多,继续说送快递,你要把送的东西包装好,在外面写上你自己的地址和省份地址,还有朋友的地址和省份地址,交给青海的快递公司,然后青海的快递公司转交给河南的快递公司,最后由河南的快递公司分配给你朋友,你朋友就收到快递了。在这有两点需要注意:
- 你要同时写两个地址,自己的地址( MAC 地址)和省份地址( IP 地址),这样就能确定所要 接收和发送人的具体的位置了。
- 青海的快递公司和河南的快递公司就相当于路由器
子网掩码
在这给大家普及一下子网掩码,我们上面说有了 IP 地址和 MAC 地址,我们就能让任何计算机之间进行通信了,那现在再想想,如果我要用我的计算机给另外一台计算机实现通信,我是不是要判断要通信的计算机是否和我的计算机在同一个 IP 地址中,相当于上面例子中我和我要送东西的朋友是否在一个省,这个时候就需要用子网掩码,我拿着我的 IP 地址和对方的子网掩码通过计算,判断是否在同一个 IP 地址下,如果在同一个IP 地址下,我可以用广播的形式进行通信,如果不在同一个 IP 地址下,我可以先把数据传给我方的路由器,再由我方的路由器把数据传给对方的路由器,最后由对方的路由器把数据传给要接收数据的计算机。这样说,再联系上面已经说过的,我想不难理解了。
IP地址
IPV4 ,它规定,一个网络地址由 32 位二进制组成,把 32 位平均分成四份,每一份 8 位, 8 位最大能表示的数据是 255 ,所以IP地址的范围:0.0.0.0——255.255.255.255.
IPV6,由128位二进制组成的。
一个IP地址分为两部分,分别是网络位和主机位。
网络位用来标识不同的子网;主机位用来标识子网下主机的编号。
为什么要分两部分呢?很简单,就好比你想写信给你的女朋友,假设你女朋友的地址是西宁市平安路128号,那么网络位就会直接找到西宁市,主机位帮你找到你的女朋友。
网络位和主机位是如何划分的?使用子网掩码来划分。子网掩码和IP地址差不多,都是由32位二进制数来表示,子网掩码也分为网络部分和主机部分,网络部分由1组成,主机部分由0组成。
IP协议是如何发送数据的?协议规定,IP协议使用IP数据包进行发送 数据。IP数据包同样把数据分为了两部分,head和data,并且在发送数据的时候,直 接用IP数据包直接装载以太网的data部分。
head:长度为 20 到 600 字节
data:最长为 65515 字节
而以太网数据包的“数据”部分,最长只有 1500 字节,因此,如果IP数据包超过了 1500 字节,它就需要分割成几个以太网数据包,分开发送了。
再回顾一下啊,以太网的头是包含了自己的 MAC 地址和目标 MAC 地址的,那如何查 找目标 MAC 地址呢?前辈们弄了一个叫 ARP 协议的东西专门来解析目标 MAC 地址。 它是如何工作的?首先,它是数据链路层的东西,在我们发送一个数据包的时候是包含着对方的 IP 地址的。例如我(172.13.4.58)想发送一条数据给女朋友(172.13.4.90),首 先,我得先拿到女朋友的MAC地址才可以通信。此时,我们会先计算一下我和女朋友 是否在一个子网内(子网掩码)
在一个子网内,直接广播发送一个数据包
子网内的计算机发现了这个包之后会返回一个数据包并且带有 MAC 地址,这样就通过 IP 地址找到了目标主机的 MAC 地址,接下来就可以进行数据传输了。
不在一个子网内,单纯的用广播就不行了,因为广播只是针对自己内网而言。那怎么办,此时会把数据包发给网关,由网关发给其它路由,这样在整个万维网里就可以找到你想要的那个计算机的 MAC 地址了。
总结
- ARP 就是通过 IP 地址来查找 MAC 地址的一套固定协议,它是数据链路层的内容。
- ARP协议(Address Resolution Protocol,地址解析协议)
- 网络层的意义:定义了子网, 区分各个局域网
- IP 地址:网络地址
- 子网掩码:计算是否是同一个子网
