这些概念的来源
很久以前,有两个计算机想要相互通信,于是它们在自己的设备上安装了一个网卡,并用网线连接:
这个时候,又来了一个计算机想要加入它们,于是这三个计算机互相通过网线连接:
随着想要加入通信的计算机不断增多,这些计算机的管理员看着满地的网线,陷入了沉思,于是决定使用集线器将这些网线集中起来:
但是,在之前通过网线连接的时候,每台计算机都可以决定自己的信息要发送到哪台机器,而集线器会将信息广播出去,使所有计算机都收到信息,这就造成一些信息上的问题。
于是,人们将集线器换成了交换机。交换机可以向指定的MAC地址发送消息,而不是广播消息。MAC地址是每张网卡出厂时就写死的,不可更改:
随着社会的发展,这样的交换机网络越来越多,这些网络之间也想通信,因此就使用了路由器:
这条水平线以上的网络都属于局域网,接下来我们来看广域网。
路由器可以将数据转发到其他的网络,因此就会出现这样的网络:
其中,有多个路由器,这些路由器可以将自己的网络的信息转发到其他网络中,我们称这样的网络叫广域网。
其实到了这里,IP地址、子网掩码、网关的概念就出来了。
IP地址
在网络世界中,我们发送一个消息,需要知道要发给谁。每台计算机都会有自己的IP地址,当需要发送消息时,只需要指定对方的IP地址即可。
为什么不用MAC地址呢?因为MAC地址是写死在网卡上的,如果网卡坏了,也可以保证IP地址不变。另外,一个网卡可以有多个IP地址,多个网卡也可以共用一个IP地址,因此我们可以看到百度的服务器至少有两个IP地址。
IP地址分为IPv4和IPv6,IPv4的格式像这样:0-255.0-255.0-255.0-255,如192.168.1.4, IPv6更复杂一些,格式为X:X:X:X:X:X:X:X,其中每个X都是4位的16进制数,如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
其实,IP地址可以用int(整形)表示,占4个字节,每个点其实是字节的分隔符。在网络通信中,字节序一般是大端(高位放在低地址,低位放在高地址),所以IP地址的字节序也是大端。
特殊的IP地址
127.0.0.1:本机回环地址,向这个IP地址发送消息,会使本机接收到这个消息
0.0.0.0:本机地址的通配符。如果计算机作为服务器绑定这个地址,那么访问该计算机所有IP的请求都会被接收
192.168.*.*:这些地址块是私有地址,用于内部局域网私有使用,不会在公共互联网中使用
255.255.255.255:这是广播地址,用于将数据包发送到当前网络上的所有设备。适用于UDP协议(这个以后会讲到)
子网掩码
当多个路由器组网时,一个计算机发送了数据包给路由器,并附上了目标IP地址。但是,路由器怎么知道这个IP地址是在哪个网路里呢?
这个时候,路由器就可以用子网掩码检测一下IP地址,并根据检测结果发送数据。检测过程如下:
- 将IP地址与子网掩码做与运算,得到一个新的值
- 将这个值与某个指定值对比,如果这个值相同,说明是这个路由器的地址
当然,利用子网掩码也可以判断两个IP地址是否在同一路由器网络当中:
一般情况下,子网掩码的'.'前后的数要么是255,要么是0,即每个位要么都是1,要么都是0.进行与运算后,IP地址中,对应1的位会保留,对应0的位会置0
一般情况下,网络的层数越多(多个路由器连接一个大路由器称为一层),子网掩码的255越少,0越多。如一般局域网的子网掩码是255.255.255.0
网关
计算机想要把信息发到其他的路由器网络上,就需要借助网关将其发送出去:
一般情况下,路由器内部都是内置网关的,因此我们才可以通过路由器访问外部地址。
网关也是有IP地址的。
查看自己的IP地址、子网掩码和网关
Windows系统
Windows系统下可以在cmd内输入命令:
ipconfig
就可以看到信息了:
Linux系统
Linux系统下的命令略有不同,查看IP地址和子网掩码用:
ifconfig
其中,inet addr就是IP地址,Mask是子网掩码
查看网关使用
netstat -r
其中,Gateway就是网关的IP地址
参考
【网络原理】初学网络必备知识-CSDN博客
网工必看!如何形象生动的解释IP地址、子网掩码和网关? (qq.com)
交换机和集线器的区别是什么?_集线器对比交换机的优点-CSDN博客
Mac地址-CSDN博客
为什么网络地址用IP而不用Mac地址_为什么网络地址使用的是ip地址而不是mac地址-CSDN博客
IPv6_百度百科 (baidu.com)
数据存储:小端模式和大端模式——终于搞明白了!!!-CSDN博客
网络通信中字节序的理解_高字节在前低字节在后的是什么格式-CSDN博客
Linux下查看网关方法_oracle linux查看网关-CSDN博客