网络基础知识
IP地址
IP地址是用于区分同一个网络中的不同主机的唯一标识。
Internet中的主机要与其他机器通信必须具有一个IP地址,因为网络中传输的数据包必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由。
IP地址可以为32位(IPV4,4个字节)或者128位(IPV6,16个字节),如果没有特殊说明,一般是指IPV4。
通常使用 点分十进制 表示,例如:172.10.1.10。
IP地址由 网络号 和 主机号 两部分组成,其中网络号的位数直接决定可以分配的网络数,主机号的位数则决定网络中最大的主机数。
由于整个互联网所包含的网络规模不太固定,因此IP地址空间被划分为不同的类别,每一类具有不同的网络号位数和主机号位数。
IP地址共有 2 32 = 4294967296 2^{32}=4294967296 232=4294967296 个地址,被分为5类,分别为A、B、C、D、E。
A类IP地址 ,即在IP地址的4段号码中,第1段号码为网络号码,剩下的3段号码为本地计算机的号码。如果用二进制数表示IP地址,则A类IP地址就是由1字节的网络地址和3字节的主机地址组成。也就是说,A类IP地址中网络的标识长度为8位,主机标识的长度为24位。
A类IP地址(第一位固定为0)的范围为 1.0.0.0 到 127.255.255.255,二进制表示为
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000001
....
01111111 11111111 11111111 11111110
01111111 11111111 11111111 11111111
在A类网络中,
- 网络号为全 0 的IP地址有特殊用途,表示本网络;
- 网络号为 127 的IP地址作为本地软件环回测试本主机的进程间通信之用。
在ABC类网络中,有两类地址规定不用于主机地址:
- 全 0 的主机号IP地址表示该IP地址是本主机所连接到的单个网络地址;
- 全 1 的主机号IP地址表示该网络上的所有主机。
因此A类地址可指派的网络号有 126 ( 2 7 − 2 ) 126(2^7-2) 126(27−2) 个,每个网络可指派主机数为 16777214 ( 2 24 − 2 ) 16777214(2^{24}-2) 16777214(224−2)台。
B类IP地址 ,即在IP地址的4段号码中,前2段号码为网络号码。如果用二进制表示IP地址,则B类IP地址由2字节的网络地址和2字节主机地址组成,也就是说,B类IP地址中网络标识的长度为16位,主机标识的长度为16位。
B类IP地址(前两位固定为10)范围为 128.0.0.0 到 191.255.255.255,二进制表示为
10000000 00000000 00000000 00000000
10000000 00000000 00000000 00000001
...
10111111 11111111 11111111 11111110
10111111 11111111 11111111 11111111
注: 以前B类网络号 128.0.0.0 以及C类网络号 192.0.0.0 规定不指派,现在可以指派。
因此B类网络可指派的网络号有 16384 ( 2 14 ) 16384(2^{14}) 16384(214) 个,每个网络可以可指派主机数为 65534 ( 2 16 − 2 ) 65534(2^{16}-2) 65534(216−2)台。
C类IP地址,即在IP地址的4段号码中,前3段为网络号码,剩下的1段号码为本地计算机的号码。如果用二进制表示IP地址,则C类IP地址由3字节的网络地址和1字节的主机地址组成,也就是说,C类IP地址中网络的标识长度为24位,主机标识的长度为8位。
C类IP地址(前三位固定为110)范围为 192.0.0.0 到 223.255.255.255,二进制表示为
11000000 00000000 00000000 00000000
11000000 00000000 00000000 00000001
...
11011111 11111111 11111111 11111110
11011111 11111111 11111111 11111111
因此C类网络有 2097152 ( 2 21 ) 2097152(2^{21}) 2097152(221) 个网络,每个网络最多可容纳 254 ( 2 8 − 2 ) 254(2^8-2) 254(28−2)台主机。
D类IP地址,被称为多播地址或组播地址,用来共享同一协议的一组计算机(一对多通信)。
D类IP地址(前四位固定为1110)范围为 224.0.0.0到239.255.255.255。
E类IP地址,不分网络号和主机号,保留为以后使用。
E类地址(前五位固定为11110),范围为240.0.0.0到247.255.255.255。
x.x.x.0 与x.x.x.255 不可以作为主机的IP地址,因为x.x.x.0用于表示一个网段,x.x.x.255用于广播地址。
总结
IP地址的指派范围
网络类别 | 最大可指派的网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每一个网络中的最大主机数 | 占IP地址总数比例 |
---|---|---|---|---|---|
A | 126 ( 2 7 − 2 ) 126 (2^7 - 2) 126(27−2) | 1 | 126 | 16777214 ( 2 24 − 2 ) 16777214(2^{24} - 2) 16777214(224−2) | 1/2 |
B | 16384 ( 2 14 ) 16384 (2^{14}) 16384(214) | 128.0 | 191.255 | 65534 ( 2 16 − 2 ) 65534(2^{16} - 2) 65534(216−2) | 1/4 |
C | 2097152 ( 2 21 ) 2097152 (2^{21}) 2097152(221) | 192.0.0 | 223.255.255 | 254 ( 2 8 − 2 ) 254(2^8 - 2) 254(28−2) | 1/8 |
保留的IP地址
地址 | 功能 |
---|---|
网络地址全为0 | 表示当前网络或网桥 |
网络地址全为1 | 表示所有网络 |
网络号为127,地址号为非全0和全1 | 保留用于环回测试。表示当前节点,让节点给自己发送测试分组,而不会生成网络流量 |
节点地址全为0 | 表示网络地址或者网络中的任何主机 |
节点地址全为1 | 表示指定网络中的所有节点 |
整个IP地址全为0 | 思科路由器用来指定默认路由器,也可以表示任何网络 |
整个IP地址全为1 | 到当前网络中所有的节点的广播,有时称为全1广播 |
保留的私有IP地址空间
地址类型 | 保留的地址空间 |
---|---|
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所属的网络类型,通常网络地址部分为“1”,主机地址部分为“0”。
A类IP地址的子网掩码为255.0.0.0;
B类IP地址的子网掩码为255.255.0.0;
C类IP地址的子网掩码为255.255.255.0。
子网掩码主要用于判断主机发送的数据包是发送给外网还是内网。
主机A向主机B发送数据包,则主机A先将自己的子网掩码与目标主机B的IP地址执行“与”操作。
假设主机B的IP地址为192.168.0.100,主机A的子网掩码为255.255.255.0,将IP地址与子网掩码进行“与”操作得到网络地址,结果为192.168.0.0。
主机A将此网络地址与主机B所在的网络地址做对比:如果网络地址相同,则表明主机A与主机B在同一网络中,数据包向内网发送;如果不同,则向外网发送(发送至网关)。
网关又称为连接器或协议转换器。
主要用于在传输层上实现网络连接(两个上层协议不同的网络互联)。
网关的实质是一个网络通向其他网络的IP地址。
例如,网络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协议根据子网掩码判定两个网络中的主机处于不同的网络,此时要实现网络间的通信,必须通过网关。
这就如同在公司中同一个部门的员工可以直接相互交流,而不同部门的员工要当面聊天,则需要员工走出办公室出门,去其他办公室或会议室,此时的“门”就相当于网络中的网关。
如果网络A中的主机要向网络B中的主机发送数据包,则数据包需要先由主机转发给自己的网关,再由网关转发到网络B的网关,网络B的网关再将其转发给网络B的主机。
DNS
DNS(Domain Name System,域名系统)是域名与IP地址相互映射的一个分布式数据库。
其主要的目的是帮助用户更方便地访问互联网。
例如,在浏览器中输入网站域名,必须通过域名服务器解析域名,从而得到服务器的实际IP地址。
这样做的好处在于,当用户需要通过网络访问某些服务时,不需要再去查找该服务的实际IP地址,使用固定的域名即可。
DNS通常可以自动获取,也可以手动设置:
公共DNS:114.114.114.114、114.114.115.115
阿里DNS:223.5.5.5、223.6.6.6
腾讯DNS:119.29.29.29、182.254.116.116
百度DNS:180.76.76.76
Goggle DNS:8.8.8.8、8.8.4.4
三种网络连接模式
桥接模式
虚拟机需要直接连接到物理网络,通常与宿主机的物理网卡共享网络连接。
虚拟机和宿主机在同一网络中,拥有一个与宿主机同一局域网中的IP地址,虚拟机获得与宿主机相同的网络访问权限。
通常需要配置 DHCP 或手动分配虚拟机的 IP 地址,需要更多的网络资源和配置。
NAT模式
虚拟机通过宿主机的网络连接访问外部网络,宿主机充当网关和 NAT 设备。
虚拟机获取一个虚拟的 IP 地址,且和宿主机之间共享一个公共的 IP 地址,而外部世界只能通过宿主机的 IP 地址访问虚拟机。
主机模式
虚拟机和宿主机在一个隔离的虚拟网络中,并且该网络与外部网络不相连。
虚拟机可以与宿主机之间互相通信,但无法访问互联网或其他外部网络。
不需要配置路由器或 NAT 服务,简单易用。
对于需要本地测试、开发、或实验环境而不需要外部连接的场景非常合适。
网络配置常用命令
ifconfig # 查看所有活动的网卡
ifconfig ens33 # 查看指定网络接口ens33
ip a # 查看网卡
ping 目标主机 # 测试网络连通性
ping baidu.com # 测试是否可以连通 baidu.com
ping -c 5 baidu.com # 设定检查次数 5 次
dig 目标主机域名 # 查看主机信息
dig baidu.com
nmcli # 查看网卡信息
route # 查看或设置主机中路由表信息
nslookup 目标主机域名 [DNS服务器地址] # 测试DNS域名解析
nslookup baidu.com
nslookup baidu.com 8.8.8.8
curl [-O] url # 访问url,[-O] 表示下载,可选
curl cip.cc # 向cip.cc 发起请求,获取公网ip
nmap ip地址 # 查看指定IP的端口情况
nmap 127.0.0.1 # 查看本机的端口情况
netstat -anp | grep 端口号 # 查看端口情况
netstat -anp | grep 123 # 查看端口或进程123情况
PS [-e -f] # [-e] 全部进程, [-f] 格式化
ps -ef # 列出全部进程信息
ps -ef | grep tail # 过滤 tail的进程信息
kill [-9] 进程ID # 关闭指定进程,[-9] 强制关闭,可选
SSH
SSH(Secure Shell)是创建在应用层和传输层基础上的安全协议。相较于FTP、POP等传统的网络服务程序,SSH更为可靠,主要用于对远程登录的会话数据进行加密,有效防止远程管理过程中的信息泄露。
在嵌入式开发中,开发者经常会使用一些支持SSH协议的程序软件,实现远程登录Linux操作系统。这样客户端无须启动Linux操作系统以及为其分配资源,可提高计算机的工作效率。
sudo apt-cache policy openssh-erver # 查看ssh安装情况
sudo apt-get install openssh-erver # 安装ssh
service ssh start/restart # 开启服务
service ssh stop # 关闭服务
service ssh status # 查看服务状态
利用 finalshell 或者 xshell 连接即可。