网络层IP协议与数据链路层以太网协议

目录

一、IP协议

二、以太网协议

一、IP协议

IP协议是网络层代表协议,今天我们就来学习一下IPv4协议。


 

  • 4位版本:指定IP协议的版本,版本的取值只有4,6两个
  • 4位头部长度:描述了IP报头有多长,报头中有一个选项部分,是可以变长的,是可有可无的,我们可以自己调节它的大小,单位为4字节
  • 服务类型(TOS):这里说是8位,实际只有4位有效,这4位中只有1位可以是1,其他都是0,这 4位就分别代表IP协议的四种形态/工作模式(最小延时,最大吞吐量,最高可靠性,最小成本)
  • 16位总长度: 描述了IP数据报的总长度(报头 + 载荷),这个长度减去前面IP报头长度,剩下的就是载荷长度

16位的总长度,是否意味着一个IP数据报,最大只能支持64KB?

这个长度限制确实存在,但IP协议自身就支持对 包的拆分和组装,如果一个IP数据报携带的载荷太长超过64KB了,就会在网络层对数据进行拆分,发送发将一个数据报拆成多个IP数据报分别发送,接收方分别接受再进行拼装。

这个长度减去前面的IP报头长度,剩下的就是载荷长度,一个完整的TCP/UDP数据包长度


 这几个字段都是为拆包/组包提供的。

  • 标识符: 唯一标识主机发送的报文,如果被分包了,那么每一个包里的标识都是相同的
  • 标志: 相当于一个结束标记
  • 片偏移: 标识了多个包的先后顺序,分包相对于原始IP报文的偏移,用来描述当前分包在原报文的什么位置,实际偏移字节是这个数值 * 8表示的
  • 存活时间(TTL): 一个数据报在网络上能够传输的最大时间(这里的单位不是秒,而是次数),一个数据报构造出来,会有一个初始的TTL数值(比如32或者64或者128),每次经过一个路由,TTL 就会减1,如果一直减到0了,还没有到达目标,就会认为这个包永远到不了了,就可以丢弃了,防止路由循环
  • 协议: 用来当前载荷部分内容是属于哪个协议的,TCP/UDP
  • 报头校验和: 只针对报头进行检验,载荷部分(TCP/UDP数据报)自身已经有校验和了

这是IP协议中比较重要的部分,标识着网络上我们的源主机和目的主机

IP地址:使用32位2进制表示的,例如:01010000.00110100.01010101.01010010,但我们通常使用点分十进制的方式来标识,例如:62.155.175.25

IP地址的作用是为了给互联网上的每一个网络上的主机分配一个逻辑地址,但是我们这里只有32位,表示着IPv4的数量大概43亿9千万左右。

但随着互联网高速发展,IP地址出现不够用的情况,如何解决这种问题呢,有以下几种方案:
1.动态分配IP地址
        简单的描述一下,每台主机不是时时刻刻都在工作的,当你需要使用IP地址时,给你动态分配一个,当你不使用时,然后进行释放。虽然这个方案可以省下一些IP地址,但并没有从根本上去增加IP地址,只是提高了利用率而已(治标不治本)

2.NAT网络地址转换
   本质上是用一个IP去代表一批设备,也能够大大提高IP地址的利用率(使用端口号区分)
在我们NAT背景下,将IP地址分为两大类:
        1.内网IP(私有IP):10.* , 172.16.* - 172.31.* ,192.168.*
        2.外网IP(公用IP):除上面的私有IP之外的都是公有IP
NAT要求公网IP地址必须是唯一的,私网IP可以在不同的局域网里重复出现。

如果私网里的设备想要访问公网里的设备时,就需要NAT设备(路由器) 将IP地址进行映射,从而进行网络访问 。反之,公网的设备无法直接访问私网的设备,不同局域网的私网没法直接相互访问~

如果我的局域网内多个主机经过该路由器转发给服务器,服务器看到的源IP都是一摸一样的,服务器的响应会先发给路由器,然后路由器再决定发给那个设备

服务器只能拿到路由器的IP,不能拿到 我电脑的内网IP,如果我的电脑不主动和服务器联系,服务器也就不知道我的端口,也就没办法找到我了(像地下党单线联络一样)

显然NAT机制能够有效的去解决IP地址不够用的情况,但我们的网络环境也会变得更加复杂


3.IPv6
        IPv6从根本上解决了IP地址不够用的情况,IPv6是128位表示的,一般使用冒分16进制表示IP地址:AD80:0000:0000:0000:ABAA:0000:00C2:0002。我们IPv6所能表示的数字是一个天文数字,有这样一句话,它能够为我们地球上每一粒沙子分配一个IPv6地址。

虽然IPv6看起来非常完美,但是当前世界上还是以NAT+IPv4+动态分配 来进行网络组建的,真正使用IPv6的地方非常少,一方面是贵(IPv4和IPv6不兼容,要花钱换网络设备)


  地址管理

一个IP地址可分为两个部分:网络号和主机号

  • 网络号: 用来标识网段,保证两个连接的网段具有不同的标识(局域网)
  • 主机号: 用来标识主机,同一网段里主机之间可以拥有相同的网络号,但主机号必须不同

通过网络号和主机号的合理设置,就可以保证相互连接的网络里,每台主机的IP地址都是唯一的
最早的时候将IP地址分为5类去划分网络号和主机号的方案 

 

​ 这种网络号和主机号的分配方式太过于死板不够灵活,我们来了解一种更加灵活的分配方式


子网掩码
子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,1的部分就描述了IP有多少位是网络号,0的数目等于主机位的长度。
这样的设定就灵活的多了,可以根据局域网的大小,来手动设置网段号和主机号的位数,做到资源的合理分配。
特殊的IP地址
        IP地址中主机地址全设为1:标识广播地址,用于给同一局域网所有主机发送数据

        IP地址中主机地址全设为0:标识网络号,代表该局域网

        127.*:环回地址,用于本机到本机测试(为了提高性能,不走网络方式),一般使用127.0.0.1
        还有一个主机号为1,这个是经验之谈,不是绝对的,表示网关IP,也就是局域网的入口

路由选择 

 

简单的来说,路由选择就是在网路上规划一条最佳路径。
但由于网络环境是十分复杂的,任何一个节点是无法感觉整个网络环境的,它只能够认识附近节点。
所以路由选择干的工作就是边走边问路,每当IP数据报经过路由器,都会查看一下路由表,查看下一步往哪里走,如果路由表有记录就直接按照表上信息走就行,如果没有,会有一个默认路径,直到目的地。
这里只是简单了解一下大致过程,不去深究。


DNS
DNS:其实是应用层的一个协议,域名解析系统,是一套可以从域名映射到IP的系统。
        TCP/IP中使用了IP地址对网络上的一台主机进行标识,网络上的服务器要访问它,需要的是IP地址,但是一串串二进制实在不方便记忆和使用,于是就使用一些简单的单词构成字符串来表示这个地址,也就是域名,通过域名系统来映射域名和IP地址,例如百度的域名:www,baidu.com,这样我们想用访问百度就可以使用这个域名去访问,简单好记。

        当你想访问某个域名的时候,就自动请求一下DNS服务器,DNS服务器就会帮我们查询,把得到的结果返回给我们(结果就是具体的IP地址)

        如果你的电脑的DNS服务器配置不对,或者DNS服务器挂了,此时就会出现一个典型的现象:QQ能用但网页打不开~

全世界这么多网站,为了网站的域名不能重复,于是我们DNS对域名进行了分级。  

.com就是一级域名,com就是“公司”的缩写,类似还有:cn,org,us…
baidu就是二级域名,代表百度公司
www就是三级域名
不仅域名分级了,DNS服务器也是进行分级了。DNS服务器也分为一级域名服务器,二级域名服务器等等。 

        网络通信发送数据时,如果使用目的主机的域名,需要先通过域名解析查找到对应的IP地址:可以简单理解域名系统为一个树型结构,从下往上查找对应IP地址过程,如果到根服务器还没有找到,那就认为不存在该主机。

二、以太网协议

数据链路层考虑的是相邻两个节点(通过网线/光纤之间相连的两个设备)之间的传输,在这里我们有许多协议,这里我们着重介绍最知名的协议:以太网

以太网帧 

​我们以太网数据帧由三部分组成:帧头 + 载荷 + 帧尾

帧头:目标地址,源地址,类型

 

这里的源地址,目的地址,不是IP地址,而是MAC地址。


MAC地址: 用于标识网络设备的物理地址,MAC地址用于识别数据链路层相邻的节点,长度为48位,在网卡出厂的时候就已经设定好的。一般用冒分十六进制标识:06:11:17:06:rb:11,FF:FF:FF:FF:FF:FF标识广播数据报的MAC地址。

IP地址与MAC地址有什么区别?
IP地址描述的是传输的起点和终点,使用的是网络逻辑地址。
MAC地址描述的是数据链路层每个区间的起点和重点,是给网络硬件设备使用的网络物理地址

数据链路层,考虑两个相邻节点之间怎么走

IP描述的是“初心”,最初从哪里来到哪里去,最初的目标是啥,MAC描述的是当前阶段的任务

类型: 帧协议类型有三种:IP,ARP,RARP​​​​​​​

载荷即是完整的IP数据报。
CRC为校验码。 

 ARPRARP是数据链路层里的其他协议,通过这个协议大概可以让路由器/交换机能够认识到局域网里的其他设备,这个ARP协议能够在路由器/交换机建立一张类似hash表,去建立IP地址与MAC地址之间的映射关系。

MTU
MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。是一个数据链路层的数据帧,能够承载数据的最大长度(载荷的长度)
最大传输单元MTU(Maximum Transmission Unit,MTU),是指网络能够传输的最大数据包大小,以字节为单位。

正是这个MTU引起了IP这个协议来进行分包组包,IP的分包组包通常不是根据这个IP最大长度64K来分的,大概率情况下,数据链路层的MTU都比64k要小​

 大家可以具体看一下MSS与MTU的区别。
MTU具体有多大,和使用的物理介质有很大关系,也有数据链路层所使用的协议有关,比如以太网协议,MTU为1500字节,如果数据包长度大于MTU则需要进行分片。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值