zoukankan      html  css  js  c++  java
  • 一文完全理解IP

    1.IP工作在哪一层?网络层和数据链路层有什么关系?

    IP工作在网络层,IP 的作用是主机之间通信用的,而 MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。

    2.IP地址如何表示?

    IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处理的。
    而人类为了方便记忆采用了点分十进制的标记方式,也就是将 32 位 IP 地址以每 8 位为组,共分为 4 组,每组以 「 . 」隔开,再将每组转换成十进制。

     

    IP最大地址是2^32 = 4294967296

    实际上,IP 地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。
     

    3.IP地址的分类有哪些?

    IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。

     

    我们可以用下面这个表格, 就能很清楚的知道 A、B、C 分类对应的地址范围、最大主机个数。

     

    最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数:2^8-2=254,为什么减2呢?
    因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址。

    主机号全为 1 指定某个网络下的所有主机,用于广播。主机号全为 0 指定某个网络

    4.广播地址用于什么?

    广播地址用于在同一个链路中相互连接的主机之间发送数据包。
    当主机号全为 1 时,就表示该网络的广播地址。
    例如把 10101100.00010100.00000000.00000000 将这个地址的主机部分全部改为 1,则形成广播地址: 10101100.00010100. 11111111.11111111 再将这个地址用十进制表示,则为 172.20.255.255
    广播地址可以分为本地广播和直接广播两种。在本网络内广播的叫做本地广播。例如网络地址为 192.168.0.0/24 的情况下,广播地址是 192.168.0.255 。
    因为这个广播地址的 IP 包会被路由器屏蔽,所以不会到达 192.168.0.0/24 以外的其他链路上。
    在不同网络之间的广播叫做直接广播。例如网络地址为 192.168.0.0/24 的主机向 192.168.1.255/24 的目标地址发送 IP包。收到这个包的路由器,将数据转发给 192.168.1.0/24,
    从而使得所有 192.168.1.1~192.168.1.254 的主机都能收到这个包。
     

    5.什么是D、E类地址?

    而 D 类和 E 类地址是没有主机号的,所以不可用于主机 IP,D 类常被用于多播,E类是预留的分类,暂时未使用
     

    6.什么是无分类地址 CIDR?

     先了解下IP分类的缺点?

    缺点一

    同一网络下没有地址层次,比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划 分地址层次,而这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。

    缺点二

    A、B、C类有个尴尬处境,就是不能很好的与现实网络匹配。C 类地址能包含的最大主机数 实在太少了,只有 254 个,估计一个网吧都不够用。

    而 B 类地址能包含的最大主机数 又太多了,6 万多台机器放在一个网络下面,一般的企业基本达不到这个 规模,闲着的地址就是浪费。

    正因为 IP 分类存在许多缺点,所以后面提出了无分类地址的方案,即 CIDR 。 这种方式不再有分类地址的概念,32 比特的 IP 地址被划分为两部分,前面是网络号,后面是主机号。
    怎么划分网络号和主机号?
    表示形式 a.b.c.d/x ,其中 /x 表示前 x 位属于网络号, x 的范围是 0 ~ 32 ,这就使得 IP 地址更加具有灵活性。

    比如 10.100.122.2/24,这种地址表示形式就是 CIDR,/24 表示前 24 位是网络号,剩余的 8 位是主机号。

    还有一种划分网络号与主机号形式,那就是子网掩码,掩码的意思就是掩盖掉主机号,剩余的就是网络号。

    将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

     

    7.公有 IP 地址与私有 IP 地址

     在 A、B、C 分类地址,实际上有分公有 IP 地址和私有 IP 地址。

     

    平时我们办公室、家里、学校用的 IP 地址,一般都是私有 IP 地址。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。
    因此,你学校的某个私有 IP 地址和我学校的可以是一样的。
    所以,公有 IP 地址是有个组织统一分配的,假设你要开一个博客网站,那么你就需要去申请购买一个公有 IP,这样全世界的人才能访问。并且公有 IP 地址基本上要在整个互联网范围内保持唯一。
     

    8.IP 分片与重组

    每种数据链路的最大传输单元 MTU 都是不相同的,如 FDDI 数据链路 MTU 4352、以太网的 MTU 是 1500 字节 等。

    每种数据链路的 MTU 之所以不同,是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。

    其中,我们最常⻅数据链路是以太网,它的 MTU 是 1500 字节。

    那么当 IP 数据包大小大于 MTU 时, IP 数据包就会被分片。

    经过分片之后的 IP 数据报在被 组的时候,只能由目标主机进行,路由器是不会进行 组的。

    假设发送方发送一个 4000 字节的大数据报,若要传输在以太网链路,则需要把数据报分片成 3 个小数据报进行传 输,再交由接收方 组成大数据报。

    在分片传输中,一旦某个分片丢失,则会造成整个 IP 数据报作废,所以 TCP 引入了 MSS 也就是在 TCP 层进行 分片不由 IP 层分片,那么对于 UDP 我们尽量不要发送一个大于 MTU 的数据报文。
     

    9.IPV6有哪些亮点? 

    IPv6 不仅仅只是可分配的地址变多了,它还有非常多的亮点。
    IPv6 可自动配置,即使没有 DHCP 服务器也可以实现自动分配IP地址,真是便捷到即插即用啊。

    IPv6 包头包首部⻓度采用固定的值 40 字节,去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大 大提高了传输的性能。

    IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性。

    10.IPV6的表示方法? 

    IPv4 地址⻓度共 32 位,是以每 8 位作为一组,并用点分十进制的表示方式。 IPv6 地址⻓度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开。

     

    如果出现连续的 0 时还可以将这些 0 省略,并用两个冒号 「::」隔开。但是,一个 IP 地址中只允许出现一次两个连续的冒号

     

    11.IPv4 首部与 IPv6 首部有哪些不同?

    4位版本信息:描述IP协议的版本。   

    4位头部长度:表示IP协议头部的长度,4个比特位表示的数值 * 4   = IP协议头部的长度,IP协议头部最大为60字节(固定的20字节+可选的40字节)

    8位服务类型:

    16位总长度:表示IP数据包总体(IP协议首部+数据)的长度。  IP数据报最大的长度为65535字节

    16位标识:用于分片重组,也可以说用于识别哪些被分片的UDP数据包能组成一个完整的UDP数据包。同一UDP数据包中所有的分片具有相同的标识。不同数据包的标识不相同。

     即使不同UDP包的标识相同,也可以通过源IP地址,目的IP地址、协议等进行区分
    3位标志:

    13位片偏移:用来表示被分片每一个分段相对于原始数据的位置。片偏移=13个比特位表示的数值 *  8

     8位生存时间:数据在到达目的地前允许中转的路由器个数

                          TTL : 跳数,(一般为64,防止路由循环)每经过一个路由设备转发之后,TTL会减1,TTL为0之后,转发设备会丢弃这个数据包

    8位协议:表示传输层用的协议。接收端接收到这个数据包后通过这8位知道提交给传输层哪个协议

    16位头部检验和:检验数据包在传输过程中是否损坏

    32位源IP地址 :发送端IP地址

    32位目的IP地址:接收端IP地址

    IPv6 相比 IPv4 的首部改进: 

    取消了首部校验和字段。 因为在数据链路层和传输层都会校验,因此 IPv6 直接取消了 IP 的校验 。

    取消了分片/重新组装相关字段。 分片与 组是耗时的过程,IPv6 不允许在中间路由器进行分片与 组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。

    取消选项字段。 选项字段不再是标准 IP 首部的一部分了,但它并没有消失,而是可能出现在 IPv6 首部中的

    「下一个首部」指出的位置上。删除该选项字段使的 IPv6 的首部成为固定⻓度的 40字节

    12.IPv4 与 IPv6 有哪些区别?

    https://www.php.cn/windows-413502.html

    https://www.ibm.com/docs/zh/i/7.2?topic=6-comparison-ipv4-ipv6

    13.DNS域名如何解析?

     我们在上网的时候,通常使用的方式是域名,而不是 IP 地址,因为域名方便人类记忆。 那么实现这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址 

    DNS 中的域名都是用句点来分隔的,比如 www.server.com ,这里的句点代表了不同层次之间的界限。 在域名中,越靠右的位置表示其层级越高。 

    根域是在最顶层,它的下一层就是 com 顶级域,再下面是 server.com。 所以域名的层级关系类似一个树状结构:

    根 DNS 服务器
    顶级域 DNS 服务器(com)

    权威 DNS 服务器(server.com) 

    根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。这样一来,任何 DNS 服务器就都可以找到并访问 根域 DNS 服务器了。

    因此,客户端只要能够找到任意一台 DNS 服务器,就可以通过它找到根域 DNS 服务器,然后再一路顺藤摸瓜找到 位于下层的某台目标 DNS 服务器 

    域名解析的工作流程 ?

    浏览器首先看一下自己的缓存里有没有,如果没有就向操作系统的缓存要,还没有就检查本机域名解析文件 hosts ,如果还是没有,就会 DNS 服务器进行查询,查询的过程如下:

    1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端 的 TCP/IP 设置中填写的 DNS 服务器地址)。

    2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。 如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名 服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。

    3. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管 理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”

    4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”

    5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。

    6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。 

           7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。

           8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接 

    14.APR协议是干什么的?工作在哪一层?

    APR协议工作在网络层,

    在传输一个 IP 数据报的时候,确定了源 IP 地址和目标 IP 地址后,就会通过主机「路由表」确定 IP 数据包下一 跳。然而,网络层的下一层是数据链路层,所以我们还要知道「下一跳」的 MAC 地址。

    由于主机的路由表中可以找到下一跳的 IP 地址,所以可以通过 ARP 协议,求得下一跳的 MAC 地址。 

    简单地说,ARP 是借助 ARP 请求与 ARP 响应两种类型的包确定 MAC 地址的。 

    主机会通过广播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址。 当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包里的内容,如果 ARP 请求包中的目标 IP

    地址与自己的 IP 地址一致,那么这个设备就将自己的 MAC 地址塞入 ARP 响应包返回给主机 

    15.ICMP协议是什么?

    ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置 等。 

    ICMP 报文是封装在 IP 包里面,它工作在网络层,是 IP 协议的助手 

    各个类型的含义 https://blog.csdn.net/zhenyi2000/article/details/79795095

     以上 大部分来自 小林coding 图解网络 

     
     
     
  • 相关阅读:
    hive日期转换函数2
    hive中的日期转换函数
    Oracle的字符连接函数 concat 和 || 的区别
    Oracle的去重函数 distinct
    Oracle之常用sql
    基于 Consul 的 Docker Swarm 服务发现
    Swift原理
    Mirantis OpenStack 8.0 版本
    vmare虚拟化解决方案
    docker网络解析
  • 原文地址:https://www.cnblogs.com/kumufengchun/p/14746502.html
Copyright © 2011-2022 走看看