网络层高频面试知识点(个人总结)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42331540/article/details/88373411

1:ip数据报格式

具体来说首部(一共20字节)包含以下几个字段

版本:指明是Ipv4还是ipv6。Ipv6是为了缓解ipv4地址不足引入(ipv6具体细节不清楚)。

总长度:16位,因此一个ip数据包的最大长度是65535字节。

标识:数据在整个网络体系的传输流程是应用层的Data到传输层的段,到网络层的IP数据包,到链路层的帧,以及传输介质上的比特流。所以最终的数据都是要通过物理层进行传输,不同媒介的MTU不同,当数据大于MTU时,就需要进行分片。分片既可以发生在信源的网络层也可以发生在中间的路由器。信宿主机会根据标识进行重组,同一数据的不同分片的标识是相同的。

标志:3bit。最后一位是MF,为0表示该分片是最后一个分片,为1时表示还有更多分片。中间位是DF,为0表示允许分片,为1时表示不允许分片。与片偏移共同给数据重组提供依据。

TTL:由于ip层是一个无连接的不可靠传输,传输过程通过ICMP协议进行错误信息的反馈。TTL对应其中的一个超时错误信息。

2:网际控制报文协议 ICMP  

为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (InternetControl Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP 不是高层协议,而是 IP 层的协议。ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报告报文。 

差错报告报文含5中类型:

信宿不可达(即数据无法到达目的主机)

源点抑制:数据包集中到达某一路由器后,数据包来不及被处理

超时:与IP数据包首部的TTL字段息息相关,可能由于网络拓扑的结构,导致数据在网络上循环传输,而在规定的时间内无法到达。

参数错误:ip数据包首部的字段漏写或者是错写

重定向:这其实不是一个错误,因为网络上主机的数量庞大,当网络拓扑发生变化时,仅更新路由器的路由表,主机的路由表不更新。信源主机按照从前的路由表进行数据传递,路由器接收到后将更新后的路由信息返给信源主机,作用有2个,一是数据不可达,二是更新信源的路由表。

询问报告报文包含2种

回送请求和回答报文 :主机或路由器向特定目的主机发出询问,收到此报文的主机必须发送ICMP回送回答报文。可用于测试目的站是否可达以及了解其有关状态。PING 用来测试两个主机之间的连通性。PING 使用了 ICMP 回送请求与回送回答报文。PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

时间戳请求和回答报文 : 请求某台主机或路由器回答当前的日期和时间,不同主机的系统时间会有差别,因此可用于时钟同步和时间测量

3:IP路由

当数据从信源传递到信宿的过程中间会经过路由器,这个传递的路径是ip路由相关知识。每个主机和路由器都会维护一张路由表,路由表是整个网络传递的基础。包括静态路由和动态路由两种。静态路由是管理员以手工的方式写进路由表,适用于小型网络,拓扑不易发生的网络体系结构中。动态路由是根据某种算法自动学习更新路由表。包括距离向量路由算法和链路状态路由算法。【两种算法的比较】

运行距离矢量路由协议的路由器,会将所有它知道的路由信息与邻居共享,但是只与直连邻居共享!运行链路状态路由协议的路由器,只将它所直连的链路状态与邻居共享,这个邻居是指一个域内(domain),或一个区域内(area)的所有路由器

距离量路由协议,更新的是“路由条目”!一条重要的链路如果发生变化,意味着需通告多条涉及到的路由条目!
链路状态路由协议,更新的是“拓扑”!每台路由器上都有完全相同的拓扑,他们各自分别进行SPF算法,计算出路由条目!一条重要链路的变化,不必再发送所有被波及的路由条目,只需发送一条链路通告,告知其它路由器本链路发生故障即可。其它路由器会根据链路状态,改变自已的拓扑数据库,重新计算路由条目。

距离矢量路由协议发送周期性更新、完整路由表更新(periodic & full)可能会出现回环问题,解决的方法是:一是设置最大跳(超过最大跳,认为出错);二是水平分割。
而链路状态路由协议更新是非周期性的(nonperiodic),部分的(partial

4:Arp协议

ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。cmd输入 arp -a 就可以查询本机缓存的ARP数据。

通过ARP协议的工作原理可以发现,ARP的MAC寻址还是局限在同一个子网中,因此网络层引入了路由协议,首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。

Arp欺骗原理:

假设主机 A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 网关 G 192.168.1.1; 在同一局域网,主机A和B通过网关G相互通信,就好比A和B两个人写信,由邮递员G送信,C永远都不会知道A和B之间说了些什么话。但是并不是想象中的那么安全,在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证自己是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,如果原有相同IP对应关系,原有的则会被替换。

C假扮邮递员,首先要告诉A说:“我就是邮递员” (C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C自己的MAC地址),愚蠢的A很轻易的相信了,直接把“C是邮递员”这个信息记在了脑子里;

C再假扮A,告诉邮递员:“我就是A” (C向网关G发送构造好的返回包,源IP为A 192.168.1.2,源MAC地址为自己的MAC地址),智商捉急的邮递员想都没想就相信了,以后就把B的来信送给了C,C当然就可以知道A和B之间聊了些什么

  上面ABCG的故事就是ARP双向欺骗的原理了

ARP单向欺骗就更好理解了,C只向A发送一个返回包,告诉A:G 192.168.1.1 的MAC地址为 5c-63-bf-79-1d-fa(一个错误的mac地址),A把这个信息记录在了缓存表中,而G的缓存表不变,也就是说,A把数据包给了C,而G的包还是给A,这样就是ARP单向欺骗了。

5:路由协议

常见的路由routing协议:包括域内协议和域间协议

域内协议:RIP(基于距离向量算法),OSPF(基于链路状态算法,采用分层思想,将部分主机或路由器组成一个域)

域间协议:BGP

猜你喜欢

转载自blog.csdn.net/weixin_42331540/article/details/88373411
今日推荐