Fork me on GitHub

对IP地址、DNS、子网掩码和默认网关的理解

关于网络的一些基础知识,之前有些地方总是迷迷糊糊,没有理解太清楚,于是今天多看了一些文章,问了学长,把这些概念之间的关系理清楚了,在此记录下并写下自己的理解。

IP地址(Internet Protocol Address)

概念

这个是最好理解的一个概念,先看看wiki的解释

互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给网络上使用网际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4IPv6两大类,但是也有其他不常用的小分类。

就是一个大家统一规定的一个网络上的地址,每个主机都有一个自己独特的地址,只有有这个地址才能去访问到你想要访问的某台主机,到目前为止IPv4,IPv4在2011年已经用光,希望IPv6的时代早点到来。

分类

IPv4地址分为五个类别,分别为A、B、C、D、E类,每个地址都由前三位来标识。

每类的地址都包括网络地址和主机地址。

每类地址都由私有地址,这是每一类地址不能再公网访问到的,也就是在局域网中用到的地址。

有些地址有保留地址是用来做循环测试的。

其中范围大小如下

分类 起始范围 终止范围 私有地址 网络数目 每个网络中的主机数
A 1.0.0.1 126.255.255.254 10.X.X.X 126 16777124
B 128.0.0.1 191.255.255.254 172.16.0.0—191.255.255.254 16384 65534
C 192.0.0.1 223.255.255.254 192.168.X.X 2097152 254
D 224.0.0.1 239.255.255.254 不分网络地址和主机地址, 它的第1个字节的前四位固定为1110
E 240.0.0.1 255.255.255.254 不分网络地址和主机地址, 它的第1个字节的前四位固定为11110

关于保留IP地址的规定如下

网络部分 主机部分 目的 例子
网络 全0 网络地址 192.168.11.0
网络 全1 定向广播——只包含目标地址 192.168.11.255
全1 全1 广播地址——只包含目标地址 255.255.255.255
全0 全0 本机的源地址 0.0.0.0
全0 主机 这个网络上的特定主机 0.0.0.12
127 任何 回送地址,主机内部回环地址,不能出现在主机外的网络中

这些概念之间注意理解到位。

子网掩码

同样,先看看wiki的解释

“网络掩码”又叫“子网掩码”、“地址掩码”、“子网路遮罩”(subnet mask),它是一种用来指明一个IP地址的哪些位标识的是主机所在的网络地址以及哪些位标识的是主机地址的位掩码

先说子网掩码的作用,可以将一个单一的大型网络,分为多个较小的网络。举个例子,XJTU校内的校园网并不是直接的公网IP,而是XJTU的网络管理员分配给我们每个宿舍每个实验室一个网段。

当我们在一个局域网中的时候,如果要向另外一台主机通信时,我们需要判断我们是否和另外的一台主机是否在一个网段中,能否互相ping通,如果不是在一个子网中,我们就需要借助路由器来进行通信。

这三种种网络地址的默认网关分别为:

A:255.0.0.0

B:255.255.0.0

C:255.255.255.0,

当我们判断两个IP地址的时候,将IPv4地址和网关进行与操作,如果得到的结果相同,那么可以通信,不然不能直接通信,这个时候,可以借助路由器,或者VLAN间路由或者单臂路由来通信。

如果说好像仍然不能理解,这里有一个很形象的比喻,,我觉得讲的非常好,这里引用知乎用户车小胖的说明。

从前有一个地主,有256间房子,地主家的门牌号码是“192.168.1”,那么他家第一间房子的门牌号码是192.168.1.0,第二间是192.168.1.1,…第256间的编号是192.168.1.255。

地主老了,需要把256间房子分给4个儿子,平均分配,每个儿子可以分64间。

请来一位先生主持公道,先生这么来操作:
192.168.1.0-192.168.1.63 分给大儿子
192.168.1.64-192.168.1.127 分给二儿子
192.168.1.128 -192.168.1.191 分给三儿子
192.168.1.192-192.168.1.255 分给四儿子

那如何来描述四个儿子的子网网段呢?
192.168.1.0/26
192.168.1.64/26
192.168.1.128/26
192.168.1.192/26

/26是什么鬼?
255.255.255.192的二进制是多少? “11111111-11111111-11111111-11000000”大家数数一共多少个1?不用数了,是26个1,为了简化子网掩码的表示,用/26代替255.255.255.192。

按位与运算
我们来看大儿子的网段192.168.1.0/26是如何得到的?

以大儿子的房间为例:
192.168.1.0-192.168.1.63

二进制表示:
192.168.1.0

11000000.10101000.00000001.00000000

192.168.1.63

11000000.10101000.00000001.00111111

首尾地址完全相同的是多少?
11000000.10101000.00000001.00

数数一共多少位?26位!那么用这个“192.168.1.0/26”就可以表示大儿子所有房间。

对照房间的门牌号码“192.168.1.199”,很显然属于四儿子的。

一个主机192.168.1.199/26 能否和直连主机192.168.1.200/24 通信?可以的因为都是四儿子的房间。

不可以

因为一个是大儿子的房间,一个是四儿子的房间,无法直连通信!

DNS

先看看wiki的解释

域名系统英文Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCPUDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

这个大家应该比较熟悉,简单来说就是把域名翻译成IP地址的域名系统,它有一张域名和IP地址相对应的表,当我们访问一个域名的时候,就需要去请求DNS服务器给我们查询这个域名对应的IP,从而进行访问。在我们的网络设置中可以设置你想要进行DNS解析的DNS服务器,也就是修改hosts文件翻墙的原理。每个网络运营商基本都有自己的DNS服务器,百度就能查到。

网关

先看wiki解释。

网关(英语:Gateway)是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。

关于网关,找到一个很好的解释,引用如下。

比如有网络A和网络B,网络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。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。

如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络A向网络B转发数据包的过程。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)

如果把每个网络比作一个小房间,通过子网掩码可以判断两个IP地址是否在同一个房间/网络内,如果不在一个房间,那就要通过门到另外一个房间,这个门就是网关。