【网络相关面试问题——八股文篇(下)】

目录

一、网络层

1、IP协议

(一)IP协议报头

(二)地址管理

(三)路由选择

二、数据链路层

三、扩展知识:DNS

在上篇和中篇我们介绍了关于应用层和运输层的一些协议和细节,在此篇我们描述关于网络的剩下三层内容~

一、网络层

网络层最核心的协议就是IP协议,下来我们看什么是IP协议~

1、IP协议

主要完成量方面的工作:

①、地址管理

②、路由选择

(一)IP协议报头

【网络相关面试问题——八股文篇(下)】_第1张图片(一)4位版本:IP协议的版本号,当前取值只有两种,0100(IPv4),0110(IPv6)。我们只要讨论IPv4。

(二)四位首部长度:IP的报头和TCP报头类似,都是可变的,带有选项。4位取值范围0-15,单位是4字节。如果取值是1111=>15,实际表示的首部长度就是60字节。

(三)TOS:有8位,实质上只有四位是有效的。4位TOS分别表示:最小延时、最大吞吐量、最高可靠性、最小成本。(一个IP数据报头,只能取其中一种,不存在兼得的情况,只得其一)

IP协议能够规划出两点之间一条比较合适的路径,那么根据什么来规划呢?就是通过TOS,四种TOS选项分别规划四种不同路径来进行发送。

(四)16位总长度:16位=>最大长度64k,单个IP数据报最大长度也不能超过64K。

如果要构造一个更长的数据报如何处理?

IP协议自身实现了分包和组包的功能。

(五)下面这三个字段用于分包和组包:

 如果整个IP数据报太长了,超过了64k,此时IP协议就会把这个大包拆分成多个小包。

一个IP数据报=IP报头 + IP数据载荷(TCP数据报)

【网络相关面试问题——八股文篇(下)】_第2张图片

 在进行分包的时候,IP数据报不考虑载荷里面的数据是什么,只是单纯的对数据载荷进行了切分。

如何区分这多个IP数据报,是从同一个大的IP数据报拆分而来?

16位标识:多个被拆分出来的IP数据报,里面的这16位标识的值是相同的。

TCP数据报的粘包问题需要规定边界,如何判断在原始IP数据报中的位置顺序?

13位片偏移:通过这13位片偏移,来描述多个包在原始IP数据报中的先后顺序。

片偏移越小,位置越靠前~

如何判断在这个数据报后还有没有别的数据报?

三位标志:三位中只有一位是好使的,0表示还有后续,1表示这是最后一个包。(结束标记)

接收方缓冲区如何对这些数据报进行处理?

【网络相关面试问题——八股文篇(下)】_第3张图片

缓冲区收到数据报后根据这三个字段进行分配连续空间,到达的数据报会插入到指定的位置。

(六)8位生存时间:表示一个IP数据报,在网络上还能存在多久,单位是 次 。IP数据报初次发送时,会有初始的TTL(常见取值128、64)IP数据报每次经过一个路由器,TTL就会减一。当TTL减到0时,此时转发这个包的路由器就会把这个包丢弃。 

(七)8位协议:传输层使用的是什么协议,TCP或者UDP都有不同的取值。

(八)16位首部检验和:用于校验数据是否正确。

(九)32位源IP地址(发送方地址)和32位目的地址(接收端地址)。

对于IPv4来说,一个IP地址本质上是32位的整数。使用“点分十进制”表示这个IP地址

每八位为一体将32位划分为4部分,每个部分一个字节,每个部分的取值为0-255.

(二)地址管理

IP地址是由“点分十进制”构成的数据,同时,我们把IP地址分为两部分,网络号+主机号。

网络号:描述当前的网络信息(局域网标识)

主机号:区分了局域网内部的主机

此处我们要求:同一个局域网内部,主机之间的网络号是相同的,主机号是不能相同的。两个相邻的局域网(同一路由连接的)网络号也是不同的。

以宿舍为例:

【网络相关面试问题——八股文篇(下)】_第4张图片

问题:前多少bit位是网络号?

引入一个“子网掩码”的概念,通过子网掩码判断表示多少个bit位是网络号,也是“点分十进制”,区别在于:子网掩码的左侧都是1,右侧都是0(不会1  0 混排)左边的这些1就表示这一位是网络号,剩下的右边的0表示哪些是主机号。

例如:255.255.255.0 =》 1111 1111 1111 1111 1111 1111 0000 0000 前24个bit位就是网络号,后8个比特位就是主机号。

一些特殊的IP地址:

①主机号全为0,该IP就表示网络号。

②主机号全为1,该IP就表示“广播地址”,往这个广播地址上发的消息,整个局域网都能收到。

③IP地址以127开头的,该IP表示“环回IP”,表示主机自己,127.0.0.1(环回IP的典型代表)

④IP地址是10开头、192.168开头、172.16-172.31开头,表示该IP地址是一个局域网内部的IP(内网IP),除此之外,剩下的IP称为外网IP。

要求外网IP一定是全网唯一的,每个外网IP都会对应到唯一的一个设备。内网IP在当前局域网内部是惟一的,不同的局域网里,可以有相同的内网IP的设备。

考虑到IPv4协议,使用的IP地址是32位整数(42亿九千万)。现实全世界的设备已经几近超过42亿九千万,让每个设备都有唯一的IP地址,已经不现实了。这个问题如何解决?

方案一:

动态分配IP地址,每个设备连上网的时候,才有IP,不联网的时候就没有IP。

方案二:NAT机制

让多个设备共用一个IP(外网IP)

把网络分成内网(局域网)和外网(广域网),要求外网IP必须表示唯一的设备。内网中的若干个设备,可以共同使用同一个外网IP~

NAT机制把IP分成了内网和外网,也就隐含了一个重要的结论:对于一个外网IP,可以在互联网的任意位置都可以访问;对于一个内网IP,只能在当前局域网内部访问,局域网1的设备,不能使用内网IP访问局域网2的设备。

方案三:IPv6

IPv6在报头使用了一个更长的字段来表示IP地址:16字节,128位

IPv6(给地球上的每粒沙子都分配一个IP地址!!!!)

唯一最大问题:IPv4和IPv6不兼容~对于一个设备来说,支持IPv4和IPv6是两个截然不同的机制。

IPv4升级到IPv6那就牵扯到一个问题-----》【网络相关面试问题——八股文篇(下)】_第5张图片

(三)路由选择

路由选择其实就是在规划路径,两个设备之间需要找到一条通道,能够完成传输的过程。

IP协议的路由选择类似于问路,IP数据报中的目的地址,就表示这个包要发到哪里去。

如果数据报中的目的地址,当前路由器认识,就可以直接告诉你路~如果当前路由器不认识,就会大概给出你一个方向,让你走到下一个路由器的时候再进行询问~依次往后,间接意味着距离目的地址越来越近,总会有一个路由器认识这个目的地址,于是就可以直接转发过去~

特别指出:有时,不光遇到了一个认识这个地址的路由器,并且它还认识多条路,此时就可以选择一个更合适的路径。

二、数据链路层

1、数据链路层主要的协议,叫做“以太网”。以太网协议不仅仅规定了数据链路层的内容,也规定了物理层的内容。

已经存在IP地址为何还要有物理地址?

当初网络层协议和数据链路层协议,是各自独自研发出来的~mac地址和IP地址,就有些重复,现状就是当前mac地址和IP地址混合使用,表示的功能不同~IP用来表示一次传出过程中起点和终点。(不考虑NAT的情况,一个IP数据报中源IP和目的IP是固定的)mac用来表示传输过程中,任意两个相邻节点之间的地址(一个以太网数据帧,在每次转发过程中,源mac和目的mac都会改变)

2、说到以太网,不得不说说“以太网数据帧”。

【网络相关面试问题——八股文篇(下)】_第6张图片

 上述就是一些以太网数据帧格式。

以太网数据帧通过6个字节来表示源地址和目的地址。

这就比IPv4地址更长了6W多倍,此时这里的地址就称为“mac地址”。mac地址做到了每个设备都是唯一的(每个网卡都是唯一的),在网卡制作完成出厂的时候就写死的。

对以太网数据帧做如下分析:

类型:类型代表后面搭载的是何种数据。例如是0800,就搭载的是一个IP数据报,0806和8035就是特殊情况~

CRC:帧尾就是一个基于CRC算法的校验和。

MTU:一个以太网数据帧能够承载的数据范围。这个范围取决于硬件设备,不同的硬件设备,对于的数据链路层协议可能又不一样,如果数据报超过了MTU如何处理?IP层分包~~IP层的分包并不是给IP的报头64K准备的,更多的是为了适应数据链路层的MTU。

MSS:TCP中在IP不分包的前提下,最多能够搭载多少载荷。取决于MTU、TCP、IP的报头(报头是可变长度)分包存在开销,MSS对于TCP起到一定的提示效果,当当前传输TCP的数据长度不超过MSS的时候,是属于最高效的状态。

ARP:ARP报文并不是用于传输数据的,只是起到了一个辅助的效果。

路由器这样的设备在转发数据的时候,首先拿到的是一个IP地址(目的地址),通过IP地址决定接下来这个数据怎么走(从哪个端口出,发到哪个设备上),因此就得决定,接下来封装的以太网数据帧,目的mac是啥~~需要根据APR协议,建立起IP->mac这样的映射关系。

三、扩展知识:DNS

DNS是一个应用层协议(域名解析)

IP地址的二进制写法和点分十进制写法对于人类来说都不算很友好,因此就决定使用一串英文单词来表示这个IP地址。这串英文单词就称为域名。域名和IP地址之间,是存在一一对应关系的。

于是乎,建立了专门的机构,负责维护域名和IP的对应关系。比如要申请一个域名,去这个机构报备即可。这个机构维护了一组服务器,把hosts文件存到服务器->域名解析服务器。

考虑到全世界同时访问这个域名解析服务器的话,服务器的压力过于大,因此,全世界各个地区的国家、地区、城市、有各自的网络运营商,这些网络运营商会就进架设域名解析镜像服务器。咱们平时上网的时候,一般就是就近访问了咱们的镜像服务器。

你可能感兴趣的:(面试八股文,网络协议)