1、IP地址、报文格式、子网划分都是什么

IP地址

IP
IP地址=网络号+主机号
A类地址(1~126):网络号占前8位,以0开头,主机号占后24位。
B类地址(128~191):网络号占前16位,以10开头,主机号占后16位。
C类地址(192~223):网络号占前24位,以110开头,主机号占后8位。
D类地址(224~239):以1110开头,保留位多播地址。
E类地址(240~255):以1111开头,保留位今后使用

分类 地址范围
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255

image.png
127.0.0.1用于本地回环测试
0.0.0.0 所有网段
255.255.255.255 全网传播
x.x.x.255/24本网段广播

私有地址和公有地址

1、私有IP地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,对与组建局域网的私有IP地址有如下规则:
(1)10.,前8位是网络号,共16,777,216个地址
(2)172.16. 到 172.31.,前12位是网络号,共1,048,576个地址
(3)192.168.
,前16位是网络号,共65,536个地址
2、公网IP
包含在范围中的, 都成为私有IP, 其余的就称为全局IP(或公网IP)。

IP协议

TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输。
IP提供不可靠的,无连接的数据传送服务。
(1)不可靠指它不能保证IP数据报能成功到达目的地。
(2)无连接指IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。IP数据报可以不按发送顺序接收。到达可能不按序。

数据报文格式

其他协议 - 图2
IP 报头的最小长度为 20 字节,上图中每个字段的含义如下:
1) 版本(version)
占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。
2) 首部长度(网际报头长度IHL)
占 4 位,可表示的最大十进制数值是 15。这个字段所表示数的单位是 32 位字长(1 个 32 位字长是 4 字节)。因此,当 IP 的首部长度为 1111 时(即十进制的 15),首部长度就达到 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销。最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。
3) 区分服务(tos)
3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置0). 4位TOS(最小延时, 最大吞吐量, 最高可靠性, 最小成本),只能选其一. ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要
4) 总长度(totlen)
首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^16-1=65535 字节。
5) 标识(identification)
唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id是相同的
6) 标志(flag)
占 3 位。第一位未使用,其值为 0。第二位称为 DF(不分片),表示是否允许分片。取值为 0 时,表示允许分片;取值为 1 时,表示不允许分片。第三位称为 MF(更多分片),表示是否还有分片正在传输,设置为 0 时,表示没有更多分片需要发送,或数据报没有分片。
7) 片偏移(offsetfrag)
占 13 位。是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置.当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。
8) 生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。数据报到达目的地的最大报文跳数.
9) 协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
10) 首部检验和(checksum)
用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。CRC.
11) 源地址
表示数据报的源 IP 地址,占 32 位。
12) 目的地址
表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。
13) 可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
14) 填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。
15) 数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

网段划分

更好的使用IP,避免太多IP浪费,网络安全等;
出现了一种叫做DHCP的技术,能够自动给子网内新增主机节点分配IP地址,避免了手动管理IP的不方便。且一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器。
DHCP( 动态主机配置协议 )是一个局域网的网络协议。. 指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
子网掩码
子网划分通过子网掩码的变化实现,不同的子网掩码可以分割出不同的子网。

  1. 区分网络号和主机号
  2. 是一个32位的正整数. 通常用一串 “0” 来结尾
  3. 将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号
  4. 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
    路由
    IP数据包的传输过程
    (1)当IP数据包, 到达路由器时, 路由器会先查看目的IP;
    (2)路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
    (3)依次反复, 一直到达目标IP地址;
    那么如何知道当前这个数据包该发送到哪里呢?
    这就依靠每个节点内部维护一个路由表,如果目的IP命中了路由表,就直接转发。
    路由表有
    image.png
    路由转发过程:
    (1)拿到将要发送数据包的目的地址
    (2)先和第一行的子网掩码进行与运算,与第一行的目的网络地址不符,再和下一行的子网掩码做与运算,若匹配,因为是直接相连的网络,直接发到目的主机,不需要经路由器转发
    (3)若直到最后一行之前,发现都不匹配,按缺省路由条目,从eth0接口将该IP地址发给路由器,该路由器的路由表决定下一跳的地址。

    2、网络层IP的协议有哪些?

    网际协议IP,与之配套的还有
  • 地址解析协议ARP:通过IP地址,找到相应的硬件地址。
  • 网际控制报文协议ICMP
  • 网际组管理协议IGMP

ICMP和IGMP经常使用IP协议,IP协议经常使用ARP协议。

3、IP地址和MAC地址区别,用处

IP地址

IP地址分为IPV4和IPV6。IPV4由32位整数组成,分成4个部分,每块8位二进制。IPV6由128位整数组成,分成8个部分,每个部分16位二进制,即4位6进制。一个完整的IP地址由两个部分组成:网络地址+主机地址。
网络地址用于路由选择;主机地址用于在网络或子网内部寻找一个单独的主机。
因为IP地址的存在使得将来自源地址的数据通过路由而传到目的地址的过程得以实现。
IP 地址主要用来网络寻址用的.

MAC地址

真正能唯一标识设备的是 MAC 地址。MAC 地址是 Media Access Control Address 的缩写,直译为“媒体访问控制地址”,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address)。MAC地址一般不可变,不能由用户自己设定。MAC 地址不具备寻址的功能。

区别
  • 分配依据不同,IP地址的分配是根据网络的拓扑结构设计的,而不是根据谁制造了网络设计的。IP地址的分配基于网络的拓扑结构,而MAC地址的分配基于制造商。
  • 对于网络上的某一个设备,其IP地址是可变的(但必须是唯一的),而MAC地址不可变。我们可以根据需要给局域网上的某台计算机分配一个IP地址,如:192.168.0.1,也可以将其改为192.168.0.2。而任意一个网络设备一旦生产出来以后,其MAC地址永远唯一且不能被用户改变。
  • 寻址协议层不同,IP地址应用于OSI的第三层,即网络层,而MAC地址应用在OSI的第二层,即数据链路层。数据链路层可以使数据从一个节点传递到相同链路的另一个节点(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络(通过IP地址)。
  • 地址长度不同,IP地址的长度为32位,而MAC地址为48位。


4、ICMP介绍下

ICMP
也有ICMPv4和v6
IPV6

功能:
  • ICMP 的第一个功能是确认 IP 包是否能够成功到达目标地址
  • ICMP 的第二个功能是进行网络诊断,经常使用 ICMP 数据包的两个终端程序是 ping 和 traceroute,traceroute 程序用于显示两台互联网设备之间可能的路径并测量数据包在 IP 网络上的时延。ping 程序是 traceroute 的简化版本,我们经常使用 ping 命令来测试两台设备之间是否互联,ping 通常用来测试两台主机之间的连接速度,并准确报告数据包到达目的地并返回后所花费的时间。

    报文

    Internet Control Message Protocol ,互联网控制消息协议。
    它用于 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。
    先封装成 IP 数据包然后再传递给数据链路层。协议类型是1.
    IPv4中
    类型分为查询报文差错报文

  • 差错报文:有关 IP 数据报传递的 ICMP 报文,包括回送请求和回送应答(类型 8 和 类型 0 ),路由器公告和路由器请求(类型 9 和 类型 0 )。

  • 查询报文:有关信息采集和配置的 ICMP 报文,包括目标不可达(类型 3 )、重定向(类型 5)、超时(类型 11)。

ICMP 目标不可达(类型 3)
路由器无法将 IP 数据报发送给目标地址时,会给发送端主机返回一个目标不可达(Destination Unreachable Message)的 ICMP 消息,并且会在消息中显示不可达的具体原因。
ICMP 重定向消息(类型 5)
如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个 ICMP 重定向(ICMP Redirect Message) 的消息给这个主机。这个 ICMP 重定向消息包含了最合适的路由信息和源数据。这种情况会发生在路由器持有更好的路由信息的情况下。路由器会通过这样的 ICMP 消息给发送端主机一个更合适的发送路由。
ICMP 超时消息(类型 11)
在 IP 数据包中有一个叫做 TTL(Time To Live, 生存周期) ,它的值在每经过路由器一跳之后都会减 1,IP 数据包减为 0 时会被丢弃。此时,IP 路由器会发送一个 ICMP 超时消息(ICMP TIme Exceeded Message, 错误号 0)发送给主机,通知该包已经被丢弃。
IPv6中
IPv4 中 ICMP 仅仅作为一个辅助作用支持 IPv4。在 IPv6 中,没有 ICMP,则不能进行正常的 IP 通信。
从 IP 定位 MAC 地址的协议从 ARP 转为 ICMP 的邻居探索消息(Neighbor Discovery) 。这种邻居探索消息融合了 IPv4 的 ARP、ICMP 重定向以及 ICMP 的路由选择等功能于一体。甚至还提供了自动设置 IP 的功能。
消息主要分为两类:一类是错误消息,一类是信息消息。0 - 127 属于错误消息;128 - 255 属于信息消息。
133 - 137 之间的消息叫做邻居探索消息。
即插即用。没有 DHCP 服务器的环境下也能实现 IP 地址的自动获取。如果在一个有路由器的网络环境中,可以从路由器获得 IPv6 地址的前面部分,后面部分使用 MAC 地址进行设置。

封装

IPv4
数据报是在IP数据报之上添加ICMP首部和数据。
image.png
IPv6
image.png

查询报文应用—ping

用来作为可用性的检查。
1. 向目的服务器发送回显请求;
2. 目的服务器发送回显应答;
3. 源服务器显示相关数据

差错报文应用—traceroute

主要用作追踪路由信息。
traceroute 在类 Unix/Linux 系统中默认使用的是 UDP 协议,也可以通过参数修改为使用 ICMP 协议;Windows 操作系统中只使用 ICMP 协议。
它的原理就是利用 IP 包的 TTL 从 1 开始按照顺序递增的同时发送 UDP 包,强制接收 ICMP 超时消息的方法。

攻击有:

泛洪(flood)、炸弹(bomb) 和信息泄露(information disclsure)

  • 泛洪将会产生大量流量,导致针对一台或者多台计算机的有效 Dos 攻击。
  • 炸弹指的是发送经过特殊构造的报文,这类报文能够导致 IP 或者 ICMP 的处理失效或者崩溃。
  • 信息泄露本身不会造成危害,但是能够帮助辅助其他攻击。

    5、IGMP介绍一下

    IGMP(Internet Group Management Protocol)互联网组管理协议是TCP/IP 协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
    到目前为止,IGMP 有三个版本:
  1. IGMPv1(由RFC 1112 定义) 现已不用
  2. IGMPv2(由RFC 2236 定义)
  3. IGMPv3(由RFC 3376 定义)

选举机制 IP最小的
离开组机制
查询和控制报文

6、ARP介绍一下,RARP

ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

ARP欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、Proxy-ARP。NDP用于在IPv6中代替地址解析协议。

RARP协议

反向地址转换协议,即RARP(Reverse Address Resolution Protocol)。
RARP允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网的网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN等。

RARP协议的工作原理

(1)源主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
(4)如果不存在,RARP服务器对此不做任何的响应;
(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

比较

(一)相同点
对于ARP与RARP,request是广播,而reply是单播。
(二)不同点
1.协议的目的完全不同。
2.发送ARP packet的是路由器,而RARP不是。
3.ARP server在kernel中,而RARP是一个用于进程。

7、IP地址不够怎么办?

  • NAT协议,暂时解决
  • IPv6 128位,根据上解决。

    8、NAT协议是什么

    网络地址转换Network Address Translation,简称NAT
    将 IP 数据报报头中的 IP 地址转换为另一个 IP 地址的过程,主要用于实现内部网络(私有 IP 地址)访问外部网络(公有 IP 地址)的功能。
    端口
    私有IP(内网)和全球IP(外网)
    也可以把这种地址转换称之为一种代理。网关就相当于一个代理,把局域网内的主机的一些信息都给隐藏了起来。

    9、DHCP原理

    image.png

  • 客户端请求 ip,discover报文(UDP)

  • DHCP响应

offer报文,包括 ip 地址,子网掩码,网关,ip 的有效期等信息

  • 客户挑选ip地址,request报文
  • DHCP回复 ACK报文

租期 续约 1/2 7/8

10、DNS原理

是什么

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布
式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过主机名,得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
image.png
根-顶级域(通用域和国家域)-一级域名-二级域名
image.png

解析过程

总结: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓
存,主域名服务器缓存。
一、主机向本地域名服务器的查询一般都是采用递归查询。
二、本地域名服务器向根域名服务器的查询的迭代查询。
1)当用户输入域名时,浏览器先检查自己的缓存中是否 这个域名映射的ip地址,有解析结束。
2)若没命中,则检查操作系统缓存(如Windows的hosts)中有没有解析过的结果,有解析结束。
3)若无命中,则请求本地域名服务器解析( LDNS)。
4)若LDNS没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给LDNS一个 主域名服务器 地址。
5) 此时LDNS再发送请求给上一步返回的gTLD(通用顶级域), 接受请求的gTLD查找并返回这个域名对应的Name Server的地址
6) Name Server根据映射关系表找到目标ip,返回给LDNS
7) LDNS缓存这个域名和对应的ip, 把解析的结果返回给用户,用户根据TTL值缓存到本地系统缓存 中,域名解析过程至此结束。

查询方式
  1. 主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。
  2. 本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,本地域名服务器得到了所要解析的 IP 地址或报错,然后把这个结果返回给发起查询的主机。
    负载均衡
    当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会蹦掉。处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP
    地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡
    的目的。例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。
    域名缓存
    为了提高 DNS 查询效率,并减轻服务器的负荷和减少因特网上的 DNS 查询报文数量,在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。
    由于名字到地址的绑定并不经常改变,为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器并处理超过合理时间的项(例如:每个项目两天)。当域名服务器已从缓存中删去某项信息后又被请求查询该项信息,就必须重新到授权管理该项的域名服务器绑定信息。当权限服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名解析的正确性。
    不仅在本地域名服务器中需要高速缓存,在主机中也需要。许多主机在启动时从本地服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只在从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机应当定期地检查域名服务器以获取新的映射信息,而且主机必须从缓存中删除无效的项。由于域名改动并不频繁,大多数网点不需花精力就能维护数据库的一致性。
    为什么用UDP?
    快。
    其实 DNS 的整个过程是既使用 TCP 又使用 UDP。
    当进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)时会使用 TCP,因为数据同步传送的数据量比一个请求和应答的数据量要多,而 TCP 允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的 TCP。
    当客户端向 DNS 服务器查询域名 ( 域名解析) 的时候,一般返回的内容不会超过 UDP 报文的最大长度,即 512 字节。用 UDP 传输时,不需要经过 TCP 三次握手的过程,从而大大提高了响应速度,但这要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。
    区域传送用TCP?
    可靠

    11、广播路由协议

    广播风暴
    生成树广播(最小生成树)