4.1介绍一下网络层
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点通信。IP的作用是在复杂的网络环境中将数据包发送给最终目的主机。
4.2网络层和数据链路层有什么关系
IP的作用是主机之间通信用的,而MAC的作用是实现直连的两个设备之间通信,而IP则负责在没有直连的两个网络之间进行通信传输。打个比方,源地址是北京,目的地址是上海,需要先后乘坐飞机、地铁、公交车才能到达目的地,所以需要先购买车票。在车票区间内移动相当于数据链路层,充当区间内两个节点传输的功能,区间内的出发点好比源MAC地址,区间内的目的地相当于是目的MAC地址。到达目的MAC地址后又需要进行下一趟区间内的传输。在整个过程中IP地址是不会发生变化的,一直变化的只有源地址和MAC目的地址。
4.3IP地址的基础知识
在TCP/IP网络通信时,为了保证能正常通信,每个设备都需要配置正常的IP地址,否则无法实现正常的通信。IPv4地址由32位正整数来表示,IP地址在计算机是以二进制的方式处理的。人类为了方便记忆采用了点分十进制的标记方式,也就是将32位IP地址以每8位为1组,共分为4组,每组以.隔开,再将每组转换成十进制。
IP地址的最大值就是2^32。也就是说最大允许43亿台计算机连接到网络。一台主机至少可以设置1个以上的IP地址,一台路由器可以设置2个以上IP,一块网卡也可以设置2个以上的IP。
【IP地址的分类】
第一位是0,A类;
第二位是0,B类;
第三位是0,C类;
第四位是0,D类;
前四位全是1,E类;
最大主机个数就是看主机号的位数,比如C类就是2^8-2=254,因为还要排除主机号全是1和全是0的地址。
主机号全为1指定某个网络下的所有主机、用于广播;
主机号全为0指定某个网络;
4.4广播地址用于干什么?
广播地址用于在同一个链路中相互连接的主机之间发送数据包。当主机号为全1时,就表示该网络的广播地址。
广播地址可以分为本地广播和直接广播两种:
(1)本地广播:在本网络内广播,例如网络地址为192.168.0.0/24的情况下,广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽,所以不会到达192.168.0.0/24以外的其他链路上。
(2)直接广播:在不同网络之间的广播叫作直接广播。
4.5什么D、E类地址?
D类地址用于多播,E类是预留的分类,暂时未使用。
多播地址用于干什么?
多播用于将包发送给特定组内的所有主机。由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用可以穿透路由的多播。
4.6说说IP地址分类的优点和缺点
优点:简单明了,基于网络地址简单。
缺点:
(1)同一网络下没有地址层次,比如一个公司里用了B类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种IP分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
(2)A、B、C类有个尴尬处境,就是不能很好的与现实网络匹配。
C类地址能包含的主机数量太少了,只有254个,估计一个网吧都不够用。
而B类地址能包含的最大主机数量又太多了,6万多台机制放下一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。
4.7说说无分类地址
因为IP分类有很多缺点,所以后面就提出了五分类地址的方案,即CIDR。这种方式不再有分类地址的概念,32位的IP地址被划分成两部分,前面是网络号,后面是主机号。
表示形式是a.b.c.d/x,其中/x表示前x位属于网络号,x的范围是0-32,这就使得IP地址更加具有灵活性。
比如10.100.122.2/24,这种地址表示形式就是CIDR,/24表示前24位是网络号,剩余8位是主机号。
【另外一种划分形式就是子网掩码】
4.8为什么要分离网络号和主机号?
因为两台计算机要通讯,首先要判断是否处于同一个广播域内,就是网络地址是否相同。如果网络地址相同,表情接收方在本网络上,那么可以把数据包直接发送给目标主机。路由器在寻址工作中,也就是通过这样的方式来找到对应的网络号的,进而把数据包转发给对应的网络内。
4.9怎么进行子网划分?
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。
未做子网划分的ip地址:网络地址+主机地址
做子网划分的ip地址:网络地址+(子网网络地址+子网主机地址)
比如对C类地址进行子网划分,网络地址是192.168.1.0,使用子网掩码对其进行子网划分。C类地址中的前24位是网络号,最后8位是主机号,根据子网掩码可知从8号主机号中借用2位作为子网号。
由于子网网络地址被划分成2位,子网地址就有4个,分别是00、01、10、11,具体划分如下:
子网0:
子网1:
4.10说说IP地址与路由控制
IP地址的网络地址这一部分是用于进行路由控制。
路由控制表记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上都会有各自的路由器控制表。在发送IP包时,首先要确定IP包首部地址的目的地址,再由路由控制表中找到该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址。
(1)主机A要发送一个IP包,源地址是10.1.1.30,目的地址是10.1.2.10,由于没有在主机A的路由表找到与目标地址10.1.2.10的网络地址,于是包就被转发到默认路由(路由器1);
(2)路由器1收到IP包后,也在路由器1的路由表匹配与目的地址相同的网络地址记录,发现匹配到了,于是就把IP数据包转发到了10.1.0.2这台路由器2;
(3)路由器2收到后,同样对比自身的路由表,发现匹配到了,于是把IP包从路由器2的10.1.2.1这个接口转发出去,最终经过交换机把IP数据包转发到了目标主机。
4.11IP分组与重组
每种数据链表的最大传输单元MTU都是不相同的,比如以太网的MTU是1500字节,FDDI数据链表MTU是432=52字节。以以太网为例子,如果IP数据包大于MTU就会在IP层进行分片,经过分片之后的IP数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。假设发送方发送一个4000字节的大数据报,若要传输在以太网链路,则需要把数据报分片成3个小数据报传输,再由接收方重组成大的数据报。
在分片传输中,一旦某个分片丢失,则会造成整个IP数据报作废,所以TCP引入了MSS也就是在TCP层就进行分片在IP层不需要再分了,那么对于UDP来说我们尽量不要发送一个大于MTU的数据报文。
4.12说说DNS域名解析
我们在上网的时候,通常使用的方式是域名,而不是IP地址,因为域名方便人类记忆。实现这一技术的就是DNS域名解析,DNS可以将域名网址自动转换成具体的IP地址。
【域名的层级关系】DNS的域名都是用句话来分割的,比如www.baidu.com,这里的句话代表了不同层次之间的界限。在域名中,越靠右的位置标示其层级越高。
根域是在最顶层,它的下一层就是com顶级域名,再下面是server.com权威域名,有些类似于前缀树的数据结构。
根域的DNS服务器信息保存在互联网中所有的DNS服务器中。这样一来,任何DNS服务器都可以找到并访问根域DNS服务器了。因此,客户端只要能够找到任意一台DNS服务器,就可以通过它找到根域服务器,然后在一直路藤摸瓜找到位于最下层的某台目的DNS服务器。
【域名解析的工作流程】
(1)浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件hosts,如果还是没有,就会DNS服务器进行查询。
(2)客户端首先发出一个DNS请求,问www.baidu.com的IP是啥,并发给本地DNS服务器。
(3)本地域名服务器收到客户端的请求后,如果缓存里的表格能找到www.baidu.com,则它直接返回IP地址。如果没有,本地DNS会去问它的根域名服务器,根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
(4)根DNS收到来自本地DNS的请求后,发现后置是.com,会告诉本地DNS.com顶级域名服务器的地址。
(5)本地DNS服务器根据根域名服务器告诉的顶级域名服务器的地址去找它,然后问他这个IP地址是多少?
(6)顶级域名服务器告诉本地DNS负责这个域名的权威DNS服务器的地址。
(7)本地DNS又去找到权威DNS,权威DNS就可以解析baidu.com,根据域名解析结果的源IP,告诉本地DNS地址是多少。
(8)本地DNS将IP地址返回给客户端,客户端与目标建立连接。
4.13ARP协议说一下
在传输一个IP数据报的时候,确定了源IP地址和目的IP地址后,即会通过主机路由表确定IP数据报下一跳。然而,网络层的下一层是数据链路层,所以我们还要知道下一跳的MAC地址。由于主机的路由表中可以找到下一跳的IP地址,所以可以通过ARP协议,求得下一跳的MAC地址。
【ARP】如何知道对方MAC地址的呢?
ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。
主机会通过广播ARP请求包,这个包里包含了想要知道MAC地址的主机IP地址;
当同个链路中的所有设备收到ARP请求时,会去拆开ARP请求包里的内容,如果ARP请求包中的目标IP地址和自己的IP地址一致,那么这个设备就将自己的MAC地址塞进ARP响应包返回给主机。
操作系统通常会把第一次通过ARP获取的MAC地址缓存起来,以便下次直接从缓存中找到对应IP地址的MAC地址。