博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

IPv4,子网掩码,默认网关

Posted on 2021-01-30 14:24  小翁好  阅读(3534)  评论(1编辑  收藏  举报

IPv4,子网掩码,默认网关

 

在网上查找了相关的资料,发现都说的都比较晦涩难懂。这篇文档从整体的网络通讯流程,以通俗易懂地方式来解释这些网络词汇,比如,如何判断两台主机是否在同一个网段下,以及什么时候会用到默认网关。本文内容是根据自己查阅资料和理解,如果有什么不对的地方,还请指出。(本文最后会列出所参考的文献资料)

 

一个简单的通信流程

首先先介绍一下在局域网下通信的一个基本流程。 在Windows电脑上,如果你打开你网络的IPV4属性,你会看到你有两种选择IP的方式。

 

自动获取IP地址 会帮你自动设置IP值,子网掩码 和 默认网关,因此大部分人都是用的自动获取IP值。而手动设置IP则需要你能够正确的设置这些值。

 

 当一台计算机需要和另一台计算机通讯时,计算机需要根据 本机子网掩码和目标IP地址 计算出目标IP所在的网段,然后再根据 本机IP 和 本机的子网掩码 得出本机所在的网段。如果两个网段相同,那么两台计算机是局域网,然后则开始通信;如果不同,也就意味着目标IP是一个远程地址,这时候本机会把数据发送给默认网关,然后默认网关处理接下来的通信。

 

例如,如下的一个网络结构:

一台局域网下有如下两台主机

主机1  IP地址:192.168.137.5  子网掩码:255.255.255.0  默认网关:192.168.137.1

主机2  IP地址:192.168.137.10  子网掩码:255.255.255.0  默认网关:192.168.137.1

路由器的地址: 192.168.137.1 

 

假如:主机1要与主机2通讯,

首先用 主机1 子网掩码 和 主机2 IP 计算出网段(网段:也被称为 网络地址)

复制代码
主机2 IP地址     192.168.137.10     11000000.10101000.10001001.00001010

主机1子网掩码     255.255.255.0      111111111.111111111.111111111.00000000
===========================================================
按位与&                             11000000.10101000.10001001.00000000
                                   192.168.137.0
复制代码

然后用 主机1子网掩码 和 主机1IP 计算出自己所在的网络地址

复制代码
主机2 IP地址     192.168.137.5      11000000.10101000.10001001.00000110

主机1子网掩码     255.255.255.0      111111111.111111111.111111111.00000000
===========================================================
按位与&                             11000000.10101000.10001001.00000000
                                   192.168.137.0
复制代码

两个网段都是 192.168.137.0 ,因此主机1和主机2是处在同一个局域网内的,所以接下来的通信是主机1广播ARP寻址包,查找主机2的MAC地址。

 

 

再假设一个 主机3,主机3是一台服务器,该服务器不与主机1在同一个局域网内。

主机3  IP地址:104.233.232.39  子网掩码:255.255.255.224  默认网关:104.233.232.62

如果主机1访问主机3上的资源,首先用 主机1的子网掩码 和 主机3的IP 计算一下网络地址。

复制代码
主机3 IP地址     104.233.232.39     1101000.11101001.11101000.00100111

主机1子网掩码     255.255.255.0      111111111.111111111.111111111.00000000

 ===========================================================

                                   1101000.11101001.11101000.00000000

                                 = 104.233.232.0
复制代码

 104.233.232.0 和主机1所在的网段明显不同,此时 主机1 会将请求发送给默认网关 192.168.137.1 ,也就是路由器的地址。然后路由器负责接下来的通信。当路由器找到主机3后,反馈给主机1。此后,主机1和主机3的通信,都要走路由器过。

 

上面简单的概括了一下网络通讯的流程,接下来进一步的分析一下这些概念。

IP地址 和 子网掩码

IP地址和子网掩码是紧密相连的,只有IP地址是无法得出这个IP地址所在的 网络地址 的,要计算处IP地址所在的 网络地址 就要用 子网掩码。局域网内,只有相同 网络地址 的计算机才能相互通讯。 就比如:公司的电话系统,例:459 001,459 002 ....等,电话号码前都有一个区号比如459。 而IP中的 网络地址 就相当于这里的区号,只不过IP中的 网络地址 长度是不固定的,必须要IP地址和子网掩码进行 按位与 计算,才能得出 网络地址 值。

比如我有一个IP地址:104.160.41.50,子网掩码为:255.255.248.0

接下来要计算出网络地址,广播地址,和 主机号

网络地址:IP地址与子网掩码 进行逻辑与(&)运算。

复制代码
IP地址     104.160.41.50      1101000.10100000.00101001.00110010

子网掩码    255.255.248.0     11111111.11111111.11111000.00000000
===========================================================
逻辑与&运算                   1101000.10100000.00101000.00000000
                   网络地址 = 104.160.40.0
复制代码

 

广播地址:子网掩码取反后,与 网络地址 进行逻辑或(|)运算

复制代码
子网掩码     255.255.248.0     11111111.11111111.11111000.00000000
取反~       0.0.7.255         00000000.00000000.00000111.11111111

网络地址    104.160.40.0      1101000.10100000.00101000.00000000
===========================================================
逻辑或|运算                   1101000.10100000.00101111.11111111 
                   广播地址 = 104.160.47.255
复制代码

主机号:子网掩码取反后,与 IP地址 进行逻辑与(&)运算

复制代码
子网掩码     255.255.248.0     11111111.11111111.11111000.00000000
取反~       0.0.7.255         00000000.00000000.00000111.11111111

IP地址     104.160.41.50      1101000.10100000.00101001.00110010
=========================================================== 
逻辑与&运算                    00000000.00000000.00000001.00110010
                     主机号 = 0.0.1.50
复制代码

 

 

默认网关

网关可以理解为一个网络节点,它负责不同 网络地址(aka. 网段) 之间的通信。 一般情况下(家用网络环境 或 较小的网络环境),默认网关 就是我们的路由器设备。

在前面的基本案例中,也提到了,当一个主机发现它所访问的目标主机不在同一个网段内时,主机就会发送数据包默认网关,让默认网关进行下一步的查找,查到了就反馈给主机。

 

本文就先介绍到这里了,在结束本文之前,给大家出一个思考题。

主机A  IP:192.168.10.5  子网掩码:255.255.255.254  默认网关:192.168.10.1

主机B  IP:192.168.10.7  子网掩码:255.255.255.0      默认网关:192.168.10.1

问题:请问主机A与主机B能相互通讯吗?

 

本文参考文献:

1. Default gateway 

2. Understand TCP/IP addressing and subnetting basics

3. Subnetwork