文章目录
计算机网路基础
1969年,
ARPANET(阿帕网)
开始联机,因此1969年被称为Internet元年
网络分类:
- 局域网(Local Area Network,LAN)是指范围在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络。
- 城域网(Metropolitan Area Network,MAN)所采用的技术基本上与局域网相类似,只是规模上要大一些。城域网既可以覆盖相距不远的几栋办公楼,也可以覆盖一个城。
- 广域网(Wide Area Network,WAN)通常跨接很大的物理范围,如一个国家。
除了上述的划分,网络还可以按照所有者分为公网、私网是两种Internet的接入方式。公网接入方式:上网的计算机得到的IP地址是Internet上的非保留地址
,公网的计算机和Internet上的其他计算机可随意互相访问。私网则反之。
非保留地址就是不是局域网的地址。比如我们平时经常会见到的192.168.xx…这种就属于保留地址。可能在不同的地方是相似的。
我们的服务器就是用的公网,如果是局部之间的文件传输或者互相访问,就会去使用私网。因为ip地址毕竟是有限的,我们将公网私网混合着用可以将ip地址使用率达到最大值。
接下来我们说说ip地址:
IP
是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议
IP地址类型分为:
- 公有地址
- 私有地址
公有地址
(也可以叫做外网地址)
公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)
负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。
私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址:
- A类 10.0.0.0–10.255.255.255
- B类 172.16.0.0–172.31.255.255
- C类 192.168.0.0–192.168.255.255
私有地址的作用就是:分散我们的计算机,让很多计算机可以共用一个公有地址
但是有的时候两台同一局域网下的电脑,公网ip也会不一样,这种情况是因为:
- 路由器公网出口没有指定公网IP,而是绑定了一个地址池,公网IP随机获得
- 其中一台或者这两台设备都在路由器上做了NAT,转换的公网IP不同
我们不难推断出10段的私有地址可容纳的主机数是最多的。这个A类移动联通的公共WIFI可能用的多,因为用户多。我们使用的是流量的话,可以发现我们的收集ip可能就是这个10段的。
以下为公有地址的A、B、C类:
接下来我们来看一个例子:
我们每天都会访问各种各样的网站,比如淘宝,百度等等。不免会思考,我们的设备是如何连接上这些网址的呢?要想搞清楚这个问题,首先就得先搞清楚内网ip和外网ip的联系。
假设我们想要访问百度。如果我们正使用着校园网,那么首先我们需要先通过校园网的路由器把我们的内网ip转为校园网的外网ip。然后通过这个外网ip先连接上电信的网关,最后在连接上百度的网关。百度把你请求的信息回传到你的校园网网关,校园网网关再把信息传给你(整个网络呈网状结构,它会自动找到一条通往百度的路径——基于深度优先搜索或者广度优先搜索)。
这个过程就跟网购差不多。比如你现在在学校里订购了一本书,淘宝那边接收到你的订单准备好物品就开始给你发货了。他发现你的收货地址在湖南,于是它可能从杭州出发,先去了福建的中转站,然后再到江西的中转站,突然发现江西到湖南的中转站不通,于是它只能再绕到广东的中转站,最后再到湖南中转站。这些中转站就相当于公网上的各个网关。到了湖南中转站,快递小哥再把包裹送到你的校门(这就是最后一级网关)。这时快递小哥就走了,校门处的管理人员在根据的你的宿舍信息把包裹拿给你。(局域网内部的信息交流由校园网这个网关来处理)。
注意点:
-
外网ip具有世界范围的唯一性,而内网ip只在局域网内部具有唯一性。并且,一个局域网里所有电脑的内网IP是互不相同的,但共用一个外网IP(这个不绝对,我们前面说过)。就像我们前面所说的你所在学校的校名在整个世界上只有一个,但是你学校里面的A栋大楼3层3号教室只有在你的校园内部才具有唯一性。别的学校也有A栋大楼3层3号教室。你只能跟快递小哥说请帮我把包裹送到xx大学,而不能说请帮我把包裹送到A栋大楼3层3号教室。
-
在局域网中,每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效。而如果你将电脑连接到互联网,你的网络提供商的服务器会为你分配一个IP地址,这个IP地址才是你在外网的IP。两个IP同时存在,一个对内,一个对外。
-
互联网上的IP(即外网IP)地址统一由一个叫“IANA”(InternetAssigned NumbersAuthority,互联网网络号分配机构)的组织来管理。由于分配不合理以及IPv4协议本身存在的局限,现在互联网的IP地址资源越来越紧张。IANA将A、B、C类IP地址的一部分保留下来,留作局域网使用。
接下来我们看看几个网络有关的硬件
首先第一个是网卡:
网卡是一个网络组件,属于硬件范畴,主要负责计算机之间数据的封装和解封。
一台计算机想要和其他的计算机通讯(也就是将数据传输过去)就必须有网卡。网卡会把数据打包(我们平时说的抓包即使网卡这里的打的包),然后再把数据传输过去,这个传播的介质有无线的也有有线的(例如光纤等就是有线的)。传到另外一台计算机的时候,其身上的网卡会将数据包进行解封,得到的数据传给操作系统,再交给对应的软件。
跟网卡相关的一个概念我们也需要知道就是 — MAC地址
MAC地址:网卡的物理地址,网卡设备的编号,默认情况是全球唯一的(16进制)。
与IP地址的区别:
- 长度不同。IP地址为32位(我们前面看到的是十进制的ip地址,本来应该是二进制的),MAC地址为48位。
- 分配依据不同。
- 网络寻址方式不同。OSI参考模型,ip地址是基于第三层工作(网络层),mac地址是第二层(数据链路层)
然后我们来看看网线:
网线是连接局域网必不可少的。在局域网中常见的网线主要有双绞线(RJ45接口)、铜轴电缆、光缆三种。
从传输数据的宽度来说:(由大到小)
- 光纤
- 铜轴电缆
- 双绞线
从数据传输的损耗来讲:(由小到大)
- 光纤
- 铜轴电缆
- 双绞线
接下来我们看看交换机:
交换机(Switch)意为“开关”,是一种用于电(光)信号转发的网络设备,交换机它可以为接入交换机的任意两个网络节点提供独享的电信号通路。
交换机的主要功能就是把数据包发送到正确的位置。
它就相当于邮递员,根据数据包中的目标mac地址,找到它对应的物理端口
一台交换机有很多个端口,他们都有自己的编号,计算机的网卡通过网线(或其他方式)连接到交换机的网口上,这个端口就是一个确定的物理地址,我们只要知道某个网卡的mac地址在哪个端口上,我们就能正确的把数据包发给他。
在交换机中有一张端口与mac地址的映射关系表:
交换机维护这张映射关系表,想要与某个mac地址通信时,只需要来查询一下这个mac地址在哪个端口上,然后从对应的端口发送出去就行了。
每一个数据包都有两个mac地址,一个是发送方的mac称为源mac,另一个是接收方的mac地址称为接收mac。交换机收到一包数据之后,首先要把这包数据的源mac与接收端口进行绑定,然后交换机要根据目标mac进行查找,从哪个端口把数据包发出去。这时候就会出现两种情况:
- 如果在mac地址表中查询到了关联的端口,则直接从关联端口发出
- 如果没有查询到。则向除了接收端口之外的所有端口群发。这种行为称为泛洪。
如果目标mac地址在这个网络中,则它一定能够收到群发的数据包。如此运行一段时间后通过交换机的mac数据表就可以找到网络中的所有网卡设备。
由此我们知道交换机只会关心网络中的mac地址,而不会关心ip地址
交换机的前身是集线器
:
互联网人类早期。一个宿舍只有一个网口,那怎么满足四五个人甚至七八个小伙伴打星际、CS、魔兽、下载AVI文件,抄论文等需求呢?最简单的办法就是使用这种集线器,也叫HUB(可以说他是一层交换机)。简单讲它相当于把一根网线分成多根使用,并且让这些网线连接的设备组成一个局域网。但是集线器有不少缺点,它工作在OSI参考模型第一层,即物理层。
集线器采用的是共享带宽的工作方式,设备越多就越可能造成网络拥堵现象,老大和老二传文件占满了带宽,其他小伙伴的网络体验就会很差
再有集线器的数据发送是非双工传输模式。什么概念呢?大家可以想象一下独木桥,同一时间只能过一个人。两边都有人要过桥的话,就只能等一个人先过去,另一个再过,效率很低。
相比集线器广播数据的方式,交换机(二层交换机)会按照内存里的地址表,把数据直接发送到目的地址。如果没有,则会通过广播来查找,“握手”成功后,再把它存放到地址表,方便下次寻找和使用。找不到的话,就先放到缓存,慢慢找。另外集线是共享带宽,而交换机它每一个端口上的设备都能独享全部的带宽。也就是说,如果老大给老二传文件,占满了百兆带宽,老三给老四传文件,依然可以享受百兆带宽,相当于,这8个端口,每个都是独立的百兆带宽。
最后我们里看看路由器:
路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开、相对独立的网络。
路由器有两种接口:
- LAN口:可以有多个用来接家庭网络设备,例如笔记本、手机、台式机,其中手机和笔记本是通过WIFI连接到路由器的设备:
- WAN口:只有一个,用来接入运行商网络,以连接到互联网中
如果把路由器的WAN口忽略,只用LAN口,其实路由器就是一台交换机
那如果考虑到WAN口呢?这里我们就要引入一个概念 — 网关
那么网关是干什么的呢?这里我们就要先明白一个概念 — 子网是如何划分的?
我们把ip地址和子网掩码按位相与。我们常用的子网掩码255.255.255.0,前三个字节也就是前24位全为1,后8位全为0。所以按位相与的结果一定是这个ip地址的前三个字节不变而最后一个字节为0:
我们把ip地址与子网掩码相与之后的结果相同的两个ip认为是在同一个子网中
也就是说在下面这一种情况下,两个ip地址一定是在同一个子网之中:
因为子网掩码都是连续的1和连续的0,所以我们通常用1的数量来表示子网掩码。
我们一般使用IP/掩码来表示子网,例如上图的192.168.1.0/24
这一个子网中就有255个ip地址
如果我们想要扩大子网中ip地址的数量我们只需要把子网掩码调小
如果我们想要较少子网中ip地址的数量我们只需要把子网掩码调大:
知道我们的子网概念之后,那么我们的子网有什么意义呢?
tcp/ip协议规定,不同的子网之间是不能直接进行通信的,如果要通信需要通过网关来进行转发。
网关上有两张网卡分别配置了属于两个子网的ip地址,可以在两个网络之间转发数据包,这样我们就拥有了一个连接两个子网的网络:
我们举一个简单的例子:
子网1中的计算机a发送数据包时,首先计算机a会根据目标ip是否跟自己属于同一子网:
- 如果是同一个子网,则直接从网卡发出
- 如果不是同一个子网,则需要把数据包的目标MAC地址改为网关MAC地址,然后发送给网关
网关拿到这一包数据之后,再通过路由表查询到这一包数据属于子网2,网关这个时候会完成以下两个动作:
- 修改目标MAC地址为计算机b的MAC地址
- 修改源MAC为自己的MAC
然后从子网2的网卡发出。
以上出现的多次根据目标判断数据包如何发送的行为我们就称之为路由
路由器有一个WAN口接入互联网,多个LAN口接入本地网络,他们就分别属于两个不同的子网,所以从内网访问互联网就是跨网络的行为,这时候就需要路由器来担任网关的角色,他的行为就叫路由:
网络连接模式
我常见的网络连接模式有以下三种:
- Host-Only(仅主机模式)
- Bridged(桥接模式)
- NAT(地址转换模式)
打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。
同时,在主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,它们分别作用于仅主机模式与NAT模式下。在“网络连接”中我们可以看到这两块虚拟网卡,如果将这两块卸载了,可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。
小伙伴看到这里,肯定有疑问,为什么在真机上没有VMware Network Adapter VMnet0虚拟网卡呢?那么接下来,我们就一起来看一下这是为什么?
Bridged(桥接模式)
什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致。其网络结构如下图所示:
接下来,我们就来实际操作,如何设置桥接模式。
首先,安装完系统之后,在开启系统之前,点击“编辑虚拟机设置”来设置网卡模式。
点击“网络适配器”,选择“桥接模式”,然后“确定”
在进入系统之前,我们先确认一下主机的ip地址、网关、DNS等信息。
然后,进入系统编辑网卡配置文件,命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加内容如下:
编辑完成,保存退出,然后重启虚拟机网卡,使用ping命令ping外网ip,测试能否联网。
修改 IP 地址后可能会遇到的问题:
- 物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的防火墙问题,把防火墙关闭就行
- 虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有问题
- 虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设置是否正确
- 如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
systemctl stop NetworkManager
关闭systemctl disable NetworkManager
禁用
如果检查发现systemctl status network
有问题 需要检查ifcfg-ens33
能ping通外网ip,证明桥接模式设置成功。
桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话,那桥接模式就不太适用了。如果真是这种情况的话,我们该如何解决呢?接下来,我们就来认识vmware的另一种网络模式:NAT模式。
NAT(地址转换模式)
刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择。NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网。其网络结构如下图所示:
在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。那么我们会觉得很奇怪,为什么需要虚拟网卡VMware Network Adapter VMnet8呢?原来我们的VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。在之后的设置步骤中,我们可以加以验证。
首先,设置虚拟机中NAT模式的选项,打开vmware,点击“编辑”下的“虚拟网络编辑器”,设置NAT参数及DHCP参数。
将虚拟机的网络连接模式修改成NAT模式,点击“编辑虚拟机设置”。
点击“网络适配器”,选择“NAT模式”
然后开机启动系统,编辑网卡配置文件,命令为vi /etc/sysconfig/network-scripts/ifcfg-eth0
具体配置如下:
编辑完成,保存退出,然后重启虚拟机网卡,动态获取ip地址,使用ping命令ping外网ip,测试能否联网。
之前,我们说过VMware Network Adapter VMnet8虚拟网卡的作用,那我们现在就来测试一下。
将VMware Network Adapter VMnet8虚拟网卡禁用,然后,从虚拟机ping外网,看看是否能ping通?
如此看来,虚拟机能联通外网,确实不是通过VMware Network Adapter VMnet8虚拟网卡,那么为什么要有这块虚拟网卡呢?
之前我们就说VMware Network Adapter VMnet8的作用是主机与虚拟机之间的通信,接下来,我们就用远程连接工具来测试一下。
然后,将VMware Network Adapter VMnet8启用之后,发现远程工具可以连接上虚拟机了。
那么,这就是NAT模式,利用虚拟的NAT设备以及虚拟DHCP服务器来使虚拟机连接外网,而VMware Network Adapter VMnet8虚拟网卡是用来与虚拟机通信的。
Host-Only(仅主机模式)
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:
通过上图,我们可以发现,如果要使得虚拟机能联网,我们可以将主机网卡共享给VMware Network Adapter VMnet1网卡,从而达到虚拟机联网的目的。接下来,我们就来测试一下。
首先设置“虚拟网络编辑器”,可以设置DHCP的起始范围。
设置虚拟机为Host-Only模式。
开机启动系统,然后设置网卡文件。
保存退出,然后重启网卡,利用远程工具测试能否与主机通信。
主机与虚拟机之间可以通信,现在设置虚拟机联通外网。
我们可以看到上图有一个提示,强制将VMware Network Adapter VMnet1的ip设置成192.168.137.1,那么接下来,我们就要将虚拟机的DHCP的子网和起始地址进行修改,点击“虚拟网络编辑器”
重新配置网卡,将VMware Network Adapter VMnet1虚拟网卡作为虚拟机的路由。
重启网卡,然后通过 远程工具测试能否联通外网以及与主机通信。
测试结果证明可以使得虚拟机连接外网。
Linux常用网络相关命令
ifconfig:配置网络接口
ifconfig :network interfaces configuring 网络接口配置
基本语法:
ifconfig (功能描述:显示所有网络接口的配置信息)
ping:测试主机之间网络连通性
语法格式:
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
该命令可以跨平台,windows下也可以使用,语法一致。(区别在于Linux下默认一直发送,windows下默认发送4个数据包)
修改ip地址
1) 查看 IP 配置文件:
[root@hadoop100 桌面]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加。
TYPE="Ethernet" #网络类型(通常是 Ethemet)
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" #IP 的配置方法[none|static|bootp|dhcp](引导时不 使用协议|静态分配 IP|BOOTP 协议|DHCP 协议)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e83804c1-3257-4584-81bb-660665ac22f6" #随机 id
DEVICE="ens33" #接口名(设备,网卡)
ONBOOT="yes" #系统启动的时候网络接口是否有效(yes/no)
#IP 地址
IPADDR=192.168.1.100
#网关
GATEWAY=192.168.1.2
#域名解析器
DNS1=192.168.1.2
修改后,如下图所示:
编辑完后,按键盘 esc ,然后输入 :wq 回车即可
2)执行 service network restart 重启网络:
修改 IP 地址后可能会遇到的问题:
- 物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的防火墙问题,把防火墙关闭就行
- 虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有问题
- 虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设置是否正确
- 如果以上全部设置完还是不行,需要关闭 NetworkManager 服务
systemctl stop NetworkManager
关闭systemctl disable NetworkManager
禁用
如果检查发现systemctl status network
有问题 需要检查ifcfg-ens33
hostname:主机名称
基本语法:
hostname (功能描述:查看当前服务器的主机名称)
案例实操:
(1)查看当前服务器主机名称
[root@hadoop100 桌面]# hostname (2)如果感觉此主机名不合适,我们
可以进行修改。通过编辑/etc/hostname
文件
[root@hadoop100 桌面]# vi /etc/hostname
修改完成后重启生效。
netstat:查看网络的连接信息
语法格式:
netstat -tnlp (-t:tcp协议,-n:将字母转化成数字,-l:列出状态为监听,-p:显示进程相关信息)
netstat -an (-a:表示全部,-n:将字母转化为数字)
参数解释:
- -t:tcp协议
- -n:将字母转化成数字
- -l:列出状态为监听
- -p:显示进程相关信息
- -a:表示全部
TCP/IP协议需要使用这个命令
traceroute:查找当前主机与目标主机之间所有的网关
路由器,会给沿途各个路由器发送icmp数据包,路由器可能会不给响应
该命令不是内置命令,需要安装
语法格式:
traceroute 主机地址
类似于查看快递的跟踪路由:
扩展:在windows下也有类似的命令:tracert 主机地址
arp:地址解析协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取(MAC)物理地址的协议。
当一个主机发送数据时,首先查看本机MAC地址缓存中有没有目标主机的MAC地址, 如果有就使用缓存中的结果;如果没有,ARP协议就会发出一个广播包,该广播包要求查询目标主机IP地址对应的MAC地址,拥有该IP地址的主机会发出回应,回应中包括了目标主机的MAC地址,这样发送方就得到了目标主机的MAC地址。如果目标主机不在本地子网中,则ARP解析到的MAC地址是默认网关的MAC地址。
常用语法:
arp -a 查看本地缓存mac表
arp -d 主机地址 删除指定的缓存记录
该命令在windows下同样适用。
tcpdump:抓包,抓取数据表
常用语法:
tcpdump 协议 port 端口
tcpdump 协议 port 端口 host 地址
tcpdump -i 网卡设备名
查看22端口(ssh)的数据包:
数据格式解读:
00:09:17.xxxx
:监听数据的时分秒IP
:使用的协议类型192.168.21.1
:数据包的一个方向(来自)>
:数据的流向192.168.21.136
:数据包的另外一个方向(到达)
附:计算机是如何通信的
在生活中我们要给一个人写信,除了信件内容之外我们还需要填写信封,信封有两个重要信息:
- 收件地址
- 收件人
收件地址表示这封信要寄到哪里,收件人表示信要寄给谁。
同样的道理在网络世界中,我们要发信息给别人。也需要知道收件地址和收件人,他们就是MAC地址和IP地址:
- MAC地址 —> 收件人
- IP地址 —> 收件地址
我们知道MAC地址是全球唯一的,那么我们为什么不使用它来进行通信呢?
- 首先MAC地址是可修改的
- 再者就比如说,你定了个快递在四川,你的姓名和电话就是mac地址,居住的地方就是ip地址只知道你的mac地址是没办法把东西送给你的。网络最大的功能是实现资源共享和数据传输,mac地址可以帮助小范围的数据传输,当网络规模扩大到几千万就需要ip地址定位到你的位置
总之一句话来说Mac地址表示我是谁,IP地址表示我在网络中的位置
在计算机网络中发送信息,我们只需要填写内容和对方的ip地址,操作系统会根据目标ip自动查询arp表获取对方的MAC地址补齐这封信,再从网卡发出:
我们的网卡接入了网络之后如果要通信需要给他配置另一个地址IP地址,但是我们的生活中是没有配置IP地址这一个过程的,那为什么也可以使用呢?
这是因为有一个DHCP协议自动帮我们配置了
当电脑插上网线或手机连入WIFI,操作系统网络协议栈会自动向外发送一包DHCP请求,请求为其分配IP地址,路由器获取到DHCP请求之后,会为其分配一个IP地址,并通过DHCP回复报文发送回去,操作系统收到了DHCP回包后,将其分配的IP地址配置到网卡上:
注意在一个局域网中IP地址是唯一的。路由器不会分配重复的IP地址给不同的设备
当然我们也可以手动把DHCP关掉,手动去配置一个网卡的IP地址
我们上面提到MAC地址是由操作系统来补齐的,那操作系统是如何知道对方的MAC地址的呢?
实际上这一步是用arp协议来完成的
当计算机a想向计算机b发送消息时,操作系统并不会立即发出,他会先发送一包arp广播报文出去,问一下目标MAC的地址是多少,此时网络中的所有设备都收到了这一包请求报文,除了目标设备之外,其他设备都会丢弃这包请求报文,只有目标设备会回复自己的MAC地址是多少,计算机a受到了回复,知道了计算机b的MAC地址,他首先会把计算机b的MAC地址缓存起来,以便下次使用,然后把这封信补全从网卡发送出去。交换机根据数据包中的目标MAC地址找到了计算机b所在的端口,从此端口发送出去,数据就被计算机b给收到了
附:出现Failed to start LSB: Bring up/down networking问题的解决办法
我们有时候打开虚拟机之后会发现突然连不上网了,然后ifconfig一下发现网卡也没了。
我重启网络服务之后,重启失败,发现报了下面的错误
Failed to start LSB: Bring up/down networking
解决方法如下:
第一步:禁用NetworkManager:
#关闭NetworkManager服务,重启机器后会失效
systemctl stop NetworkManager
#永久关闭NetworkManager服务,重启机器后不会失效
systemctl disable NetworkManager
第二步:关闭防火墙
systemctl stop firewalld
第三步:关闭selinux
# 永久关闭,修改selinux配置文件。 ---重启后生效
vim /etc/selinux/config
# 将SELINUX的值修改为disabled
SELINUX=disabled
然后重启虚拟机,重启网络发现没有报错,就好了。
附:主机ping不通虚拟机,但是虚拟机能ping通主机
记得关闭虚拟机防火墙
解决方法:
-
虚拟机网络连接方式选择Nat
-
查看虚拟机IP地址
-
将对应的ip与windows网络设置中VMNet8的保持一致即可