写点什么

计算机网络: IP 地址,子网掩码,网段表示法,默认网关,DNS 服务器详解

作者:喀拉峻
  • 2022 年 4 月 02 日
  • 本文字数:4167 字

    阅读完需:约 14 分钟

楔子:

  以 Windows 系统中 IP 地址设置界面为参考(如图 1), IP 地址, 子网掩码, 默认网关 和 DNS 服务器, 这些都是什么意思呢?

    


  学习 IP 地址的相关知识时还会遇到网络地址,广播地址,子网等概念,这些又是什么意思呢 ?

一 IP 地址

概述

计算机要实现网络通信,就必须要有一个用于快速定位的网络地址。IP 地址就是计算机在网络中的唯一身份 ID,与现实世界中快递的配送需要有具体的住宅地址是一个道理。

ip 地址以圆点分隔号的四个十进制数字表示,每个数字从 0 到 255,如某一台主机的 ip 地址为:128.20.4.1

  IP 地址的组成

**IP 地址 = 网络地址 **+ 主机地址(又称:主机号和网络号组成)

想想,为什么会有行政区划的划定(国家、省市区、街道等),为了更加高效的进行管理、定位;

相同的,我们通常将网络也可以分为很多的子网络,每个子网络有自己的网络地址,每个子网络由很多的计算机组成(当然也可以包含另外一个子网络)。

我们要找到指定的 IP 地址,只要先找到指定的网络地址,然后再该网络内找到对应的主机地址即可。

     IP 地址是一个 4 * 8bit(1 字节)由 0/1 组成的数字串(IP4 协议)

以文章开通 win7 截图中 的 IP 地址 192.168.1.168, 子网掩码 255.255.255.0(下文有详解) 为例, 这个地址中包含了很多含义:

      192.168.100.168(IP 地址) = 192.168.1.0 (网络地址) + 0.0.0.168(主机地址

  网络地址、主机地址是怎么计算出来的呢?我们需要先简单学习下子网掩码  

二 子网掩码(subnet mask)

  参照:《百度百科-子网掩码

  IP 中的网络地址和主机地址各是多少位表示呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。

  概述

  子网掩码又叫网络掩码、地址掩码、子网络遮罩,是一个 4 * 8bit(1 字节)由 0/1 组成的数字串。

  它的作用是屏蔽(遮住)IP 地址的一部分以划分成网络地址和主机地址两部分,并说明该 IP 地址是在局域网上,还是在远程网上。

  通过子网掩码,可以把网络划分成子网,即 VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。

  子网掩码不能单独存在,它必须结合 IP 地址一起使用。

  子网掩码的规则

    长度 为 4 * 8bit(1 字节),由 连续的 1 以及 连续的 0 两部分组成,

       例如:11111111.11111111.11111111.00000000,对应十进制:255.255.255.0

  假设,局域网中 计算机 A 的 IP 地址为 192.168.1.1,子网掩码为 255.255.255.0, 如下图所示:

  


网络地址: IP 地址中被 连续的 1 遮住的部分,即 11000000.10101000.00000001.00000000, 对应的网络地址:192.168.1.0

主机地址: IP 地址中被 连续的 0 遮住的部分,即 00000000.00000000.00000000.00000001, 对应的网络地址:0.0.0.1

排除 **该网络 **两个特殊地址:

  广播地址:192.168.1.255  (主机号全为 11111111)(广播机制及类型见:http://baike.baidu.com/view/473043.htm)

  网络地址:192.168.1.0    (主机号全为 00000000)

该子网最大的主机数:2 的 8 次方 256 - 2

**  其他信息:**

    A 类地址来说,默认的子网掩码是 255.0.0.0;对于 B 类地址来说默认的子网掩码是 255.255.0.0;对于 C 类地址来说默认的子网掩码是 255.255.255.0。

三 通过子网掩码计算网络地址

  参考:《IP地址,子网掩码,默认网关,DNS服务器详解

计算方法

计算过程是这样的:

  1. 将 IP 地址和子网掩码都换算成二进制;

  2. 将两者进行 "与运算",得到网络地址。

    计算过程:上下对齐, 1 位 1 位的算, 1 与 1=1 , 其余组合都为 0

          1 0 1 0

     与运算  1 0 1 1

     -------------------

     结果   1 0 1 0 

       假设 IP 地址为 192.168.1.168,子网掩码为 255.255.255.0, 则网络地址换算步骤如下:

  1)将 IP 地址和子网掩码分别换算成二进制   

    192.168.1.168 换算成二进制为 11000000.10101000.00000001.10101000     255.255.255.0 换算成二进制为 11111111.11111111.11111111.00000000   

  2)将二者进行与运算

         11000000.10101000.00000001.10101000

    与运算  11111111·11111111·11111111·00000000

        ----------------------------------------------------------------------------

         结果   11000000.10101000.00000001.00000000

  3) 将运算结果换算成十进制: 192.168.1.0

立即实践

以用网线直接将两台计算机连起来为例:

  


下面是几种 IP 地址设置, 看看在不同设置下网络是通还是不通.

说明:第 1 种情况能通是因为这两台计算机处在同一网络 192.168.0.0, 所以能通,而 2,3 种情况下两台计算机处在不同的网络,所以不通.

网络地址的计算过程同上,不再赘述。

surprise! 500G 网络安全学习资料,👉戳此免费获取

结论:

  用网线直接连接 或 通过 HUB(集线器)、普通交换机链接的计算机必须处于同一网络(网络地址) 并且主机地址必须不一样 才能通信。

*  注意:同一网络不是指物理连接,而是指网络地址.*

  举个例子,两台计算机链接到相同路由器(简单理解为同一个链路),如果他们设置的网络地址不一致,则他们也是不能通信的。

**  扩展:IP 网段表示法**

    举例说明:192.168.0.0/24

    192.168.0.0: 网络地址

    24: 表示子网掩码二进制表示法中,连续的 1 的 个数,这里为:11111111·11111111·11111111·00000000,即 255.255.255.0

四. 默认网关(地址)

  参考:《百度百科-网关

什么是网关?

  (可以联想下海关?什么是海关?)

  连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制。

  网关设备可以是 交互机(三层及以上才能跨网络)、路由器、启用了路由协议的服务器、代理服务器、防火墙等

网关地址就是网关设备的 IP 地址。

  假设我们有两个网络:

  网络 A 的 IP 地址范围为“192.168.1.1~192.168.1.254”,子网掩码为 255.255.255.0

  网络 B 的 IP 地址范围为“192.168.2.1~192.168.2.254”,子网掩码为 255.255.255.0

要实现这两个网络之间的通信,则必须通过网关。

如果网络 A 中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络 B 的网关,网络 B 的网关再转发给网络 B 的某个主机(如附图所示)。网络 A 向网络 B 转发数据包的过程。

   


    只有设置好网关的 IP 地址,TCP/IP 协议才能实现不同网络之间的相互通信。

**默认网关 **

一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。

扩展:自动设置默认网关

自动设置就是利用 DHCP(Dynamic Host Configuration Protocol, 动态主机配置协议)服务器来自动给网络中的计算机分配 IP 地址、子网掩码和默认网关 。

一旦网络的默认网关发生了变化时,只要更改了 DHCP 服务器中默认网关的设置,那么网络中所有的计算机均获得了新的默认网关的 IP 地址。这种方法适用于网络规模较大、TCP/IP 参数有可能变动的网络。

另外一种自动获得网关的办法是通过安装代理服务器软件(如 MS Proxy)的客户端程序来自动获得,其原理和方法和 DHCP 有相似之处。

    

  扩展说明

**  问:在网上看到一些人提问:连接到相同(二层)交换机或集线器上的计算机,如果设置不同的网络地址,为什么不能通信。**

**  答:**

**    **在 TCP/IP 协议中,网络层(通过 IP 地址识别通信方)封包完成交给下一层数据链路层(通过 MAC 地址识别通信方)时,需要通过 ARP 广播 获取目标 IP 对应的 MAC 地址。

  但因为 ARP 报文只能在相同网络地址内广播,如果目标计算机与源计算机处于不同网络,则无法进行响应,因此源计算机无法完成链路层数据的封装。

  ARP 协议相关信息可见 这里

五. DNS 服务器

  参考:《DNS原理及其解析过程

**  域名与 DNS**

  我们访问一个网站的时候,往往使用的是域名(相对 IP 来说更加语义清晰、更加容易记忆,例如 www.baidu.com)。

  域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

  然而计算机之间的通信网络通信是通过 IP 进行的, 因此需要将域名解析为对应的 IP,DNS 就是进行域名解析的服务器。

DNS 维护着 域名(domain name)和 IP 地址 (IP address)的对照表表,以解析消息的域名。

  DNS 查询的过程如下图所示



DNS 维护着 域名(domain name)和 IP 地址 (IP address)的对照表表,以解析消息的域名。

  1. 在浏览器中输入 www.qq.com 域名,操作系统会先检查自己本地的 hosts 文件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,完成域名解析。

  2. 如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

  3. 如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找 TCP/ip 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS 服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

  4. 如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。

  5. 如果本地 DNS 服务器本地区域文件与缓存解析都失效,则根据本地 DNS 服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地 DNS 就把请求发至 13 台根 DNS,根 DNS 服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个 IP。本地 DNS 服务器收到 IP 信息后,将会联系负责.com 域的这台服务器。这台负责.com 域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com 域的下一级 DNS 服务器地址(qq.com)给本地 DNS 服务器。当本地 DNS 服务器收到这个地址后,就会找 qq.com 域服务器,重复上面的动作,进行查询,直至找到 www.qq.com 主机。

  6. 如果用的是转发模式,此 DNS 服务器就会把请求转发至上一级 DNS 服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把转请求转至上上级,以此循环。不管是本地 DNS 服务器用是是转发,还是根提示,最后都是把结果返回给本地 DNS 服务器,由此 DNS 服务器再返回给客户机。

用户头像

喀拉峻

关注

左手Java右手Python,中间纹个C++ 2021.06.26 加入

还未添加个人简介

评论

发布
暂无评论
计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解_网络安全_喀拉峻_InfoQ写作平台