暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

计算机网络之 -- 网络层(2)

min的技术小铺 2021-11-16
487


点击上方蓝字关注我



前文回顾:

            上一篇我们讲述了网路层的概述, 数据交换方式,  路由算法和路由协议, 以及三种路由协议的比较.

              这一篇我们继续展开网络层的后半部分, 也是重中之重, IP协议.



01


IP数据报


IP数据报格式


其中总长度1位表示1B, 片偏移一位表示8B, 首部长度一位表示4B

简单来说就是: 一种八片的首饰.


以下列出IP数据报的详细资料:

名称注释大小
版本 Versionipv4或者ipv64位
首部长度 IHL此处数值再乘以4才是真正大小,同时因为IP数据报固定长度为20字节,所以此处最小值为5,即二进制的01014位
区分服务 DSCP + ECN希望获得哪种服务,用的比较少8位
总长度 Total Length首部+数据的长度,最大为2^16-1=6553516位
标识 Identification用来表示是哪一个数据报的分片,不同的分片标识各不相同8位
标志 Flags用来表示是否分片和分片是否结束3位,但实际有用的只有后两位
片偏移 Fragment Offset用来标记分片之后,该分片在原来的数据报的位置,以8字节为单位13位
生存时间 Time To Live即TTL,没经过一个路由器TTL-1,0时自动放弃,根据系统不同默认的TTL不同8位
协议 Protocol用来标记协议名的字段值,如TCP,UDP,ICMP等等8位
首部检验和 Header Checksum检验首部的字段是否出错,出错就丢弃此数据报
源地址 Source IP Address发送方ip地址32位
目的地址 Destination IP Address接收方ip地址32位
可选字段 Options用来排错等安全检测未知,可在0-40位之间
填充将数据报对齐成4字节的整数倍,数值全部为0未知,根据可选字段来定



02


IP地址


首先我们要知道, IP地址就是全球唯一的表示某个主机或者路由器接口的编码


ipv4地址



  • IP地址的分类


  • 特殊的IP地址


  • 用点分十进制表示: 

0.0.0.0, 0.0.0.x,  255.255.255.255,  x.255.255.255,  127.x.x.x

tip: 环回的意思就是发给自己.


  • 以下为私有IP地址


  • 分类的IP地址


接下来我们解释一下一些问题

  • 为什么A类最大是126.xxx.xxx.xxx?

        因为网络号最开始第一位是0,一共八位,所以二进制表示位0xxxxxxx,最大就是2^7-1=127,但是因为127.xxx.xxx.xxx是特殊ip地址,所以将其去掉


  • 为什么B类最大是191.255.xxx.xxx?

         因为网络号最开始第一位是10,一共八位,所以二进制表示位10xxxxxx,最大就是10111111=191,最小就是10000000=128,无特殊ip地址


  • 为什么C类最大是223.255.xxx.xxx?

        因为网络号最开始第一位是110,一共八位,所以二进制表示位110xxxxx,最大就是11011111=223,最小就是10000000=192,无特殊ip



总有那么一个时间, 所有的IP地址会用完, 所以人们想了很多的方法来扩展IP地址的可用性, 以及后续衍生出了IPV6地址, 号称能给地球上的每一粒沙子分配一个IP地址.

接下来我们看看有哪些方法吧!



网络地址转换NAT



  • 简单来说就是找一个代理(NAT路由器), 来连接内外网,

  • NAT需要构建NAT转换表,既要存广域网(WAN,外网)也要存局域网(LAN,内网)的ip地址和端口号



子网划分与子网掩码



tip:

为什么子网好能全0或者全1:因为CIDR编址(可见下一段)
为什么主机号不能全0或者全1:因为全0代表本网络,全1代表广播分组


子网掩码就是用来和ip地址一起计算子网的地址的
方法就是讲子网掩码逐位写成二进制然后而原来ip地址进行与运算,就可以得到子网ip地址
因为255是11111111,所以如果写着255的话,ip地址和子网ip地址对应的地方的数值就相同



可以看见,子网掩码不同,相同ip地址对应的子网ip地址也可能相同

但是子网掩码不同,划分的子网数目不同

为什么划分的子网数目不同?或者说怎么算划分的子网位数目?

以255.255.192.0为例,255是11111111即八个1,192是11000000即2个1,一共是82+2=18个1,一共有32位地址,所以剩余有32-18=14位

以255.255.224.0为例,255是11111111即八个1,224是11100000即3个1,一共是82+3=19个1,一共有32位地址,所以剩余有32-19=13位

            

使用子网时分组的转发



tip:

    1.这里特定主机路由就是指找特定的处理这里这个ip地址的路由
    2.默认路由会将这个数据报发给另一个路由,直至找到对应的路由,或者TTL耗尽被丢弃



无分类编址CIDR


  • 前缀有几位, 子网掩码就有几位

  • 使用CIDR可以聚合网络, 通过缩短前缀, 某些网络可以合并在同一子网上

  • 这样转发表中就会有多个匹配结果, 我们使用最长前缀匹配法





03


ARP协议




03


DHCP协议



简单来说就是动态的获取IP地址


03


ICMP协议


ICMP协议处于网络层与传输层之间, 就是为了更好地转发IP数据报和提高交互成功的机率



接下来我们来看看ICMP的报文类型

  • ICMP差错报告报文

从图中可看出,ICMP报文就是对IP数据报进行了封装与删改, 增加了校验的部分, 去掉了数据的部分


tip:其中源点抑制已经废弃


我们看看不需要发送ICMP报文的情况


  • ICMP询问报文


  • 关于ICMP的应用

ping: 测试两个主机之间的连通性, 使用ICMP回送请求和回答报文

traceroute:跟踪一个分组从原点到终点的路径, 使用ICMP时间超过差错报告报文


IPV6



IPV6出现的原因很简单, 就是IPV4地址不够用了, 前面的NAT和CIDR技术也只是在IPV4的基础上进行了小修小补, 没有解决根本上的问题




IPV6地址的表示形式





IPV6数据报格式


和上文统一, 使用表格的形式先看看各个字段的名称, 作用, 和位数

名称作用位数
版本 Version知名协议版本,此处因为是ipv6所以总是64位
优先级 Traffic Class又来区分数据报的类型和优先级8位
流标签 Flow Label和ipv4标识某个数据报分片不同,这是对于一整个数据报流的标记19位
有效载荷长度 Payload Length指的是扩展首部+数据部分的大小,和ipv4的总长度和首部长度都不同,ipv6的首部长度是固定的40字节16位
下一个首部 Next Header基本首部的下一个首部指的是有效载荷里标记的的扩展首部,有效载荷里的扩展首部再指向有效载荷里标记的的扩展首部,直至最后指向数据8位
跳数限制 Hop Limit基本相当于ipv4当中的TTL,每到一个路由器-1.减到0时丢弃7位
源地址 Source Address发送方ipv6地址128位
目标地址 Destination Address接收方ipv6地址128位


关于IPV4和IPV6的区别


关于IPV6的地址类型简单了解一下

名称作用要求
单播一对一通信可做源地址,目的地址
多播一对多通信,以前的广播地址当做覆盖所有主机的多播可做目的地址
任播一对多当中的一个通信,看似一对多,实则一对一可做目的地址


在人们使用了很久IPV4之后, 如何过渡到IPV6也是一个问题.我们有如下的两种解决方案.

  • 双栈协议

    • 也就是双协议共用

  • 隧道技术

    • 就是把IPV6数据报当作IPV4的数据报的数据部分, 前面+上IPV4的首部进行伪装



05


组播


简单来说,单就是一对一, 广播就是一对所有, 播就是一对一部分


以下两图来理解单播与多播的区别



  • IP组播地址


  • 硬件组播

注意: 在01-00-5E后面,还有一个必须为0的位, 所以最大的地址为5E后面是7,而不是F



IGMP协议




关于IGMP协议, 我们需要知道的是它只能知道是否有进程参加或退出某个组播组, 并不知道有多少成员, 在哪个地方也不知道


  • 组播路由选择协议

    • 这里我们只需要知道, 有了这个, 成员就可以自行找到转发组, 自行决定参加哪个组播

    • 协议常用的三种算法和路由选择协议基本一致, 包括基于链路状态的, 基于距离-向量的,以及稀疏/密集的.




移动IP


首先我们要了解一些相关术语


接下来我们看一下移动IP的通信过程



我们简单举个例子来理解一下通信的过程

小王(B)要给小红(A)送一封信(数据), 由于不知道小红在哪(外部网络), 就寄到小红家里,小红其实在公司(转交地址)上班, 所以小红妈(本地代理)就把信件装好(再封装)转交给公司,公司相关人员(外部代理)转交给小红,  最后小红才收到了这封信.


04


网络层设备


网络层的核心设备就是 ---- 路由器



端口的具体构造


接下来我们来看看前三层设备的区别吧


关于路由器的路由表和转发表, 就是前面路由选择等知识的复习了


以上就是所有的网络层的内容了, 这部分的核心内容在于IPV4地址, 路由选择协议以及路由算法, 以及数据交换的方式, 多多重复, 百炼成钢!!

文章转载自min的技术小铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论