网络模型各层解析

网络模型的各层解析

物理层、数据链路层、网络层、运输层、应用层

物理层

计算机想要组件网络,那么首先就是把各个计算机连接起来,如何连接?

通过光纤、同轴电缆、双绞线、无限电波等方式,将各个计算机连接起来,连接起来的目的是负责传送0和1的电信号。

数据链路层

单纯的01信号没有意义,如何解读一串01信号?多少个电信号算一组?每个信号位有何意义?以太网协议统一了电信号的分组方式

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

img

“标头”(固定18字节)包含数据包的一些说明项,比如发送者、接受者、数据类型等等;“数据”(46~1500字节)则是数据包的具体内容。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

有了数据,要发送出去,如何表示数据的接收方?

以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。(以太网数据包必须知道接收方的MAC地址,然后才能发送。)

利用MAC地址表示接收方,那么如何获取接收方的MAC地址?也就是说一块网卡怎么会知道另一块网卡的MAC地址?答案是通过ARP协议,可以解决这个问题(后面说)

现在,假设我们拿到了接收方的MAC地址,如何将数据包发送出去?答案是通过广播的方式

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

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

网络层

我们知道了接收方的MAC地址,并打算一广播的形式发送出自己的数据,理论上说,网络中所有的计算机都会收到我们广播的数据,这显然不合理,如何解决?

将大网络划分为一个个子网络,同一个子网络中包含的计算机采用广播方式发送,否则就采用"路由"方式发送。

如何表示一个子网络?MAC地址本身并不能做到这一点,于是出现了网络层

网络层引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。

如何将全世界的网址进行统一化,方便管理?答案是通过IP协议

互联网上的每一台计算机,都会分配到一个IP地址。IP地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。如何解决?答案是通过子网掩码

子网掩码的作用就是用来区分每一个子网络,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

如何根据子网掩码计算两个IP地址是否在同一个子网?答案是通过AND运算

比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

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

知道了接收方的MAC地址,IP地址就可以找到对方,那么IP地址应该怎么加入要发送的数据中?

我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的规格。

具体来说,IP数据包也分为"标头"和"数据"两个部分。

"标头"部分(20~60字节)主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就变成了下面这样。由于标头+数据最长为65535字节,因此,一个IP数据包的"数据"部分,最长为65,515字节,但是以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

img

ARP协议

通常情况下,对方的IP地址是已知的(后文会解释),但是我们不知道它的MAC地址。如何获取MAC地址?

第一种情况,如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理。

第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方的MAC地址

ARP协议会”广播“ 一个数据包,其中包含了接收方的IP地址,同一个子网络的所有主机都会收到这个“广播”,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

传输层

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。

TCP UDP协议(待更)

应用层

待更

参考博客https://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值