从零开始的计算机网络基础(图文并茂,1.8w字,面试复习必备) (8)

某天,慕恩心血来潮准备给夏尔来个“飞鸽传书”,于是她情意满满地写了封信愉快的投递到邮筒A(女孩子应该挺喜欢弄点小浪漫的吧)。然后负责A-B区域的邮递员叔叔将邮件从A运输到B,然后再经过一些传递最终到达夏尔手中。

网络层.png

上述例子中我们着重关心一下邮筒,分解一下它的工作步骤。

接收邮件(源地址)

查询最近邮筒地址(因为如果超远距离传输,不可能让一个邮递员叔叔横跨几千里就为了给你俩飞鸽传书吧)

转发邮件到最近的邮筒(或目标地址)。

聪明的你也想到了,这就是网络层所起到的作用。不过路由器替代了上述邮筒的功能,而路由器是怎么分组转发数据,以及路由器是怎么寻找下一个路由器的呢?请听我一一道来。

虚电路和分组交换

首先需要明确的是,网络层其实也分为面向连接和无连接的,被称为虚电路网络和数据报网络。与你想的一样面向连接那么需要事先建立连接管道,更多信息可以查看《计算机网络 自顶向下》。其适用于ATM机等,而因特网使用的是数据报网络,这也是我们学习的重点,所以之后主要谈的是该网络。

路由器工作原理

router.png

​ 路由器由输入端口,交换结构,输出端口,和路由选择处理器四个部分组成(注意这里的端口不同于传输层的端口,类似于物理上的接口)。

输入端口: 它将一条输入的物理链路与路由器的物理层相连接,同时它能实现入链路远端的数据链路层和路由器数据链路层的交互,更为重要的是它会根据最长公共前缀匹配原则查找输出端口。

交换结构:将输入端口和输出端口相连接。

输出端口:输出端口从交换结构中接收分组,并将通过数据链路层和物理层传输这些分组。

路由选择处理器:执行路由选择协议,维护路由选择表和连接的链路状态信息并为路由器计算转发表。

IPv4

ipv4.png

之前提到了很多关于ip地址,ip协议的点,但提到路由器原理时貌似没有跟ip没什么关系,是这样的吗?其实从上图数据报不难看出源地址和目的地址跟路由器的输入端口,输出端口有着千丝万缕的关系。那么首先我们还是来看看报文各字段的含义吧。

版本: 规定了数据包的IP协议版本,现在使用的有ipv4和ipv6两种协议。

首部长度: 分隔首部和数据字段,但大多数IP数据报具有20字节首部通常不包含该字段

服务类型: 这是一个高级选项,由路由器管理员控制,可以为特定用户(VIP)提供特定等级的服务。

数据报长度: IP数据报的总长度

标识、标值、片偏移: 这三个字段与IP分片有关,用于保证IP分片后组装的顺序性和丢包等差错检测。

寿命(TTL,相信Ping过ip地址的同学都对这个字段有所了解): 用于确保数据报不会永远在网络中循环(为什么数据报会在网络中循环呢?)。每当数据报由一台路由器处理时,该字段减1,若TTL字段减为0,则该数据报必须丢弃。

首部校验和: 与之间类似,用于检测比特错误

源和目的IP地址: 每台主机和路由器都有一个IP地址(不一定时公网IP),当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入其最终目的地的地址。

选项: 选项字段允许IP首部被扩展。

数据: payload,需要传输的数据

点分十进制

从IPv4的数据报文中,我们得知ip地址是由32为比特标识,理论上可以由40亿公网ip地址(去年已全部分配完毕)。但32比特位表示特别不方便,于是通常我们都是用十进制 . 十进制进行标识,称为点分十进制。如223.0.0.1(每8个比特位用十进制标识,然后用.分隔)。

子网掩码

ip地址是由权威机构分发的,但是不可能让一个结构给全世界每个人发一个ip地址。更合理的做法是采用之前应用过的分布式的思想,某机构向权威机构申请一部分ip地址 => 该机构向其内部人员发放ip地址。这样怎么进行划分就成了一个问题,你总不可能随机分配吧(不利于管理),所以这里就有了子网掩码的概念。223.0.0.0/24 中/24就是子网掩码,它表示该子网前24个比特位不变,后8位可以由该子网自由分配。也就是说该机构拿到了这块地址后,就可以向内部人员分配223.0.0.1,223.0.0.2,223.0.0.99...这样互联网就被划分为了许许多多的子网络,值得注意的时子网掩码最多30位(规定子网最少容纳两台主机)。

ip地址不够用咋办

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywwpy.html