网安IP篇

1、网络层和数据链路层的区别

网络层负责是在没有直连的不同网络之间通信,数据链路层负责在不同设备之间通信,同时源IP地址和目的IP地址是不会变化的,但是源MAC地址和目的MAC地址一直在变化,这就好比你要从一个城市到另一个城市,目的地和起点是不停变化的,但是其中的交通方式一直在变化

 

2、为什么IP数量最多只能满足43亿计算机,但是还没用完呢

这是根据可以更换IP地址的技术NAT满足的,使得可连接计算机的数量超过了43亿台

 

3、IP地址的类型

IP地址分为了A、B、C、D、E五类

其中对于ABC三类主要分为两部分:网络号和主机号

 

 

 最大主机数是2的主机号次幂-2,减去的2就是全为1的广播地址和全为0的网络地址

 

DE类地址是没有主机号的,所以不可用于主机IP,D类常被用于多播,暂时未使用

多播用于将包发送给特定组内的所有主机,由于广播无法穿透路由,若想给其他网段发送同样的包,就可以使用穿透路由的多播

 4、IP分类的优缺点

优点是:简单明了、选路简单

缺点是:①同一网络下没有地址层次,缺少地址的灵活性 ②不能很好的与现实网络匹配,就是C类地址的最大主机数量太少了,一个网吧可能都不够,但是B类又太多了,一个企业可能达不到这个规模

这两个缺点,可以在CIDR误分类地址解决

无分类地址CIDR,就是通过a.b.c.d/x来表示一个IP,前x位属于网络号,后面属于主机号,这就使得IP具有灵活性

 

5、为什么要分离网络号和主机号

因为两台计算机要通信,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同。表明接收方在本网络中,那么可以直接发送给目标主机。

如果不在一个网络域内,路由器的转发操作也需要根据网络号进行转发

 

6、怎么进行子网划分

未做子网划分的ip地址:网络号+主机号

做了子网划分的ip地址:网络地址+(子网网络地址+子网主机地址)

一般就是在私有IP上进行分配

 

 

在发送 IP 包时,⾸先要确定 IP 包⾸部中的⽬标地址,再从路由控制表中找到与该地址具有相同⽹络地址
的记录,根据该记录将 IP 包转发给相应的下⼀个路由器。如果路由控制表中存在多条相同⽹络地址的记
录,就选择相同位数最多的⽹络地址,也就是最⻓匹配。
 
环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址,一般是127.0.0.1,使用这个IP或者主机名,数据包不会流向网络
 
7、IP分片与重组
每种数据链路的最大传输单元MTU是不同的,以太网的MTU是1500字节,FDDI数据链路的MTU是4352,这是因为每种数据链路使用的目的不同,所承载的MTU也就不同,当IP数据包大小大于MTU时,IP数据包就会被分片,经过分片的IP数据报在被重组的时候,只能由目标主句进行,路由器时不会进行重组的
 
8、IPV6
IPV4的地址是32位的,IPV6是128位的,同时,IPV6还有更好的安全性和扩展性,但是因为IPv4和IPv6不能兼容,所以不但需要手机电脑之类的设备支持,还需要网络运营商对现有设备进行升级,所以普及率比较慢
同时,IPv6可以自动配置,不需要DHCP服务器也可以实现自动分配ip地址,即插即用。同时包头首部长度采用固定的值40字节,去掉了包头校验和,简化了首部结构,提高了传输效率。IPv6 有应对伪造 IP 地址的⽹络安全功能以及防⽌线路窃听的功能,⼤⼤提升了安全性。
 
9、IPv6地址的结构:
单播地址(一对一通信)、组播地址(一对多通信)、任播地址(用于通信最近的节点,最近的节点由路由协议决定),没有广播地址

 

 上面定义了三类单播地址,在同一链路单播通信时,不经过路由器,可以使用链路本地单播地址,在内网中单播通信,可以使用唯一本地地址,相当于IPv4的私有地址,在互联网通信,可以使用全局单薄地址,相当于公有IP

取消了首部校验和字段,因为传输层和数据链路层都会校验,所以IPV6直接取消了该字段

取消了分片和重组相关字段,通过下一个首部进行有序排列,这将⼤⼤提⾼了路由器转发的速度。

取消了选项字段,但它并没有小时,而是可能出现在下一个首部指出的位置,

取消了首部长度,而是改为固定长度的40字节

 

10、IP 协议相关技术

DNS域名解析、ARP与RARP协议、DHCP动态获取IP地址、NAT网络地址转换、ICMP互联网控制报文协议 、IGMP因特网组管理协议

 

11、DNS

DNS是域名解析协议,负责将域名网址转换成IP地址,其分为三层,分别是根域名DNS服务器、顶级域DNS服务器、权威DNS服务器,是一个树状的结构,IP中越靠近右边,层级越高。

流程:

首先,浏览器首先会查询一下自己的缓存当中有没有关于域名网址的记录,如果有则直接访问,如果没有,则检查本机域名解析文件hosts,如果还没有,则会DNS服务器进行请求

客户端首先会像本地域名服务器发送请求,询问关于该域名网址对应的IP地址,本地域名服务器会去查询自身的缓存,如果没有,会向根域名DNS服务器询问:“大哥大哥,您知道关于某某网址的IP地址么?”,根域名服务器不直接参与域名解析,但能指出一条正确的道路,“你可以去找某某顶级域名服务器,他会告诉你怎么走”,本地域名服务器会再去询问顶级域名服务器,问:二哥,关于这个域名网址怎么走啊“顶级域名服务器会将权威域名服务器的地址告诉本地域名服务器,最后,本地域名服务器从权威域名服务器中得到了最终的IP地址,并返回给客户端,客户端与目标建立来连接

 

12、ARP协议

在传输下一个IP数据包的时候,我们已经知道了源IP地址喝目标IP地址,并通过路由器确定下一跳的IP地址,但是,因为网络层的下一层是数据链路层,要在其中传播,必须知道下一跳的MAC地址,而这就需要通过ARP协议来获取,ARP协议通过ARP请求和ARP响应来获取目标的MAC地址

首先,主机会广播一个ARP请求,同一链路中的所有设备在收到这个请求之后,拆开该请求查看ARP包中的内容,如果里面的IP地址和自己对应,那么就会将自己的MAC地址塞到ARP响应包当中,并发送回给主机,主机在获得该MAC地址之后,会将该记录保存在缓存当中,以备下一次访问使用,当然,这个缓存是有期限的

 

13、RARP协议

与ARP协议通过IP地址确定MAC地址相反,RARP是通过MAC地址确定IP地址,其首先需要一个RARP服务器,该服务器当中注册了设备的MAC地址和IP地址,主机会向RARP服务器询问:”我的MAC是XXXX,那么我的IP地址是什么呢?” RARP服务器将会将器IP地址发送给该设备,从而设备明确了自己的IP地址

 

14、DHCP协议

DHCP协议我们并不陌生,这在我们生活当中非常常见,因为DHCP协议负责动态分配我们主机的IP地址,极大的节省了我们自己配置Ip的过程。

其主要通过DHCP发现报文、DHCP提供报文以及DHCP响应报文来完成整个过程

首先,客户端首先发起DHCP发现报文,因为客户端没有IP地址,也不清楚目标IP地址,所以使用的是UDP广播通信,其使用的广播目的地址是255.255.255.255,将0.0.0.0(端口68)作为源IP地址。DHCP客户端将IP数据包传递给数据链路层,链路层广播给链路当中的所有网络设备

DHCP服务器在收到DHCP发现报文之后,用DHCP提供报文向客户端做出响应,该报文仍然使用IP广播发送地址255.255.255.255,该报文信息携带着服务器提供可租约的IP地址、子网掩码、默认网关、DNS服务器以及IP地址租用期

客户端在收到提供报文之后,从中选择一个服务器,并向选中的服务器发送DHCP请求报文,进行响应,最后服务端用DHCP ack报文进行响应,至此,客户端在期限内可以使用DHCP分配的IP地址 

如果租约的 DHCP IP 地址快期后,如果租约的 DHCP IP 地址快期后,客户端会向服务器发送 DHCP 请求报⽂:服务器如果同意继续租⽤,则⽤ DHCP ACK 报⽂进⾏应答,客户端就会延⻓租期。服务器如果不同意继续租⽤,则⽤ DHCP NACK 报⽂,客户端就要停⽌使⽤租约的 IP 地址。可以发现,DHCP 交互中,全程都是使⽤ UDP ⼴播通信。

 

15、⽤的是⼴播,那如果 DHCP 服务器和客户端不是在同⼀个局域⽹内,路由器⼜不会转发⼴播包,那不是每个⽹络都要配⼀个 DHCP 服务器?

为了解决这个问题,DHCP提出了DHCP中继代理,这样可以对不同网段的IP地址也可以由一个DHCP服务器进行分配操作

首先是客户端向DHCP中继代理发送请求报文,并由中继代理将该报文单播给DHCP服务器,DHCP服务器将响应报文发送给中继代理,由中继代理进行广播,相当于是做了一个路由器的转发功能。

 

16、NAT

我们之前通过无分类地址来减缓IPv4地址耗尽问题,但是仍然存在耗尽风险,所以又提出了NAT网络转换协议,就是在同一个私有网络当中,设备向外部网络通信的时候,Nat会将私有地址转换为公有地址

 

17、那不是 N 个私有 IP 地址,你就要 N 个公有 IP 地址?这怎么就缓解了 IPv4 地址耗尽的问题?这不瞎扯吗?

确实,普通的NAT转换没什么意义,但是现在网络应用大多用的是传输层的TCP和UDP协议,因此,可以把IP地址+端口号一起转换,这样,就可以全球使用一个IP地址就可以了,这种转换技术就叫网络地址与端口转换NAPT,具体来说,加入有两个同一网络中的设备与外部同时通信,可以通过使用不同端口进行区分,于是,就生成了NAPT的路由器的转换表,就可以正确的转换地址跟端口的组合,令客户端A、B能同时与服务器通信,这种转换表在NAT路由器上自动生成,当TCP连接建立的情况下,首次握手的SYN报文一经发出,就会生成这个表,随着四次挥手的结束,该表也会删除

 

18、Nat的缺点

外部无法与内部网络服务器建立连接,因为NAPT路由器没有转换记录

生成转换表存在着性能消耗

通信过程中,如果NAT路由器重启了,所有TCP连接都会重置

 

19、解决方法

1、使用IPv6,

2、使用NAT穿透技术,也就是由客户端主动从NAT中获取公有IP地址,然后建立端口映射条目,然后用这个条目对外通信,就不用NAT路由器来转换了

 

20、ICMP的作用
ICMP全称是 Internet Control Message Protocol,也就是互联网控制报文协议。他的主要功能主要包括确保IP数据包是否成功送到目标地址、报告发送过程中IP数居包被废弃的原因以及改善网络设置等存在,这时,路由器2就会向主机A发送一个 ICMP 目标不可达数据包,说明发往主机 B主机 A 向主机 B 发送了数据包,由于某种原因,途中的路由器2 未能发现主机 B的包未能成功。ICMP的这种消息会使用IP进行发送
21、ICMP的分类送应答、回送请求ICMP主要包含两个类型,分别是用于诊断的查询信息,叫查询报文类型,主要有另一种是用于通知出错原因的错误信息,也就是差错报文类型,主要有目标不可达原点抑制,超时,重定向或改变路由
22、IGMP
IGMP是因特网组管理协议,它工作在主机与路由器的最后一跳之间,IGMP报文后路由器申请加入和退出组播组,路由器默认是不会将组播数据包发送给主机的,只有主机申请加入组播组,路由器就会生成IGMP路由器表,就会转发组播数据包给对应的主IGMP报文是由IP进行封装,头部协议号是2,TTL是1


23、IGMP的工作流程
路由器周期性的发送目的地址为224.0.0.1的IGMP查询报文(用来表示同一网段的所有主机和路由器),主机在收到该查询报文之后,设置一个定时器,这个定时器时间是随机的,一般是0-10秒,当定时器超时之后,该主机就会发送一个IGMP成员关系报告报⽂,源IP地址设置为自身的IP地址,目的IP地址为组播地址。若在超时之前,收到了同一组内的其他主机发送的响应报文,则不再发送,减少了网络中国冗余的IGMP报文。路由器在收到响应报文之后,将组播写入IGMP路由表当中,当收到该组播地址的数据包的时候,进行发送

 

24、离开组播组工作机制

如果主机想要离开组播组,那么该主机就会发送IGMP离组报文,目的地址为224.0.0.2,以发送给该网段的所有路由器,路由器在收到该离组报文之后,向网段内你发送IGMP特定查询报文,如果该组播组还有其他成员,那么该成员在收到特定查询报文之后,进行响应,路由器收到响应报文之后,确认该组播组还存在其他成员,于是继续向该网段转发该组播组的数据包,如果没有主机响应,那么一段时间之后,路由器认为该组播组没有其他成员,则不再向这个网段转发该组播地址的数据包

 

25、假设⼀台机器加⼊组播地址,需要把IP改成组播地址吗?如果离开某个组播地址,需要dhcp重新请求个IP吗?

组播地址不是用于ip地址的,他没有网络号和主机号,所以跟dhcp没什么关系,组播地址一般用于udp协议,机器发送udp组播数据时,目的地址是组播地址的时候,那么在组播组内的所有主机都会收到该数据包

 

26、查询报文类型(ICMP中的)

回送消息是用于主机和路由器之间,判断所发送的消息是否成功到达对端的一种消息,ping就是基于这个消息实现的

 

27、差错报文类型

目标不可达类型为3

原地抑制为4,重定向或改变路由为5

超时消息为11

 

 28、目标不可达

目标不可达:IP路由器将IP数据包发送给目标主机,如果目标不可达,目标主机就会发送一个目标不可达的ICMP消息,其中包含着未能成功到达的具体原因,在ICMP报文的代码字段当中,客户端就可以连接未能到达目标地址的具体原因

 第一:网络不可达

IP地址是分网络号和主机号,所以当路由器的路由表找不到Ip中的网络号,就通过ICMP协议以网络不可达的原因告知主机

第二、主机不可达

当路由表当中没有关于目标主机的信息或者该主机没有连接到网络,ICMP协议就会像源主机发送主机不可达信息,代码号为1

第三、协议不可达

路由器已经成功找到目标网络和目标主机,但是可能由于目标主机的防火墙禁止TCP协议,导致IP不能发送过去,ICMP就会发送协议不可达信息,代码号为2

第四、端口不可达

路由器成功找到目标网络、目标主机,且目标主机允许TCP协议,但是目标主机并没有进程来监听8080端口,导致所发送的信息不能接收,ICMP就会发送端口不可达,代码好为3

第五、数据需要切片但是IP设置为不允许切片

发送端发送数据报时,将IP首部的禁止分片标志位设置为1,根据这个标志位,路由器在碰到数据长度大于MTU的数据包的时候,就会将其丢弃,ICMP返回一个不可达消息类型,代码号为4

 

29、原点抑制消息(类型为4)

当网络路由器的发送队列缓存变为0导致无法发送时,可以向源主机发送一个ICMP原点抑制消息,收到这个消息的主机了解到网络当中的某一链路产生堵塞,就会增大IP包的传输间隔,以避免进一步的网络拥挤

30、重定向消息(类型5)

如果路由器发现发送端主机使用了一个不是最优的路由信息和源数据,那么它就会返回一个ICMP重定向消息,这个消息包含了最优的路线选择,让主机下次发送给最优线路上的服务器

31、超时消息(类型11)

IP包中有一个字段叫TTL,这一字段在每经过一个路由器之后其值会减一,当减到0的时候,该IP包就会被丢弃,同时路由器会向主机发送一个超时消息,并告知改包已被丢弃。这主要是为了防止IP包在网络中无休止的传播,造成网络堵塞

 

 

32、ping的过程

ping其实是应用了ICMP查询报文类型,首先主机A对主机B进行ping操作之后,源主机首先会构造一个ICMP回送请求消息数据包,ICMP数据包中包含多个字段,其中最重要的是两个,第一个是类型,第二个是序号,回送请求信息类型字段是8,序号初始为0,没发出一个数据包,递增1,以用来区分发出去的数据包。

然后通过IP进行发送,协议字段设置为1,表示是ICMP协议,进入数据链路层后,通过ARP协议找到MAC地址,进行传输,当数据到达目标主机的时候,目标主机会构建一个ICMP回送响应信息数据包,该数据包的类型字段为0,序号为收到的数据包的序号,然后发送给源主机,在规定的时间内,如果源主机没有收到ICMP回送响应信息,则说明目标主机不可达。

 

33、traceroute —— 差错报⽂类型的使⽤

traceroute 的第⼀个作⽤就是故意设置特殊的 TTL,来追踪去往⽬的地时沿途经过的路由器。(其实就是TTL从1开始,慢慢变大,直到到达目的IP地址)
但是因为traceroute用的是UDP包,所以不知道它是否成功到达了目标地址
所以traceroute使用了一个不可能的端口号334334,当目的主机收到UDP的时候,因为这个端口没有进程在监听,就会由ICMP差错报文返回一个端口不可用的消息
 
traceroute 还有⼀个作⽤是故意设置不分⽚,从⽽确定路径的 MTU。
⾸先在发送端主机发送 IP 数据报时,将 IP 包⾸部的分⽚禁⽌标志位设置为 1。根据这个标志位,途中的路由器不会对⼤数据包进⾏分⽚,⽽是将包丢弃。
随后,通过⼀个 ICMP 的不可达消息将数据链路上 MTU 的值⼀起给发送主机,不可达消息的类型为「需要进⾏分⽚但设置了不分⽚位」。
发送主机端每次收到 ICMP 差错报⽂时就减少包的⼤⼩,以此来定位⼀个合适的 MTU 值,以便能到达⽬标主机。
 
34、ping和TCP的区别
ping是应用层的协议,TCP是传输层当中的协议
TCP在创建的过程中使用的是socket_stream参数,表示使用的是TCP协议,而ping在创建的过程中使用的是sock_raw参数,是原始套接字,工作在网络层,所以使用ICMP是再合适不过了
 
35、127.0.0.1   loaclhost以及0.0.0.0的区别
127.0.0.1是IP locakhost是域名,两者是等价的,ping这两者没什么区别
而0.0.0.0,代表的是所有的IP的地址,如果服务器 listen 的是 0.0.0.0 ,那么此时⽤任何IP地址都可以访问到服务。
 

 

posted @ 2025-05-30 17:47  机器智能小白凡  阅读(17)  评论(0)    收藏  举报