网络层IP简介及网络管理工具
网络层简介
网络层(Network Layer)是OSI模型中的第三层(TCP/IP模型中的第二层),提供路由和寻址的功能,使两终端主机能够互连并且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。相当于发送邮件时需要地址一般重要。由于TCP/IP协议体系中的网络层功能由IP协议规定和实现。
网络层IP协议解决了一个单一网络上传输数据包的问题。
IP地址
网络层IP协议中还有一个非常重要的内容,那就是给互联网上的每台计算机和其它设备都规定了一种地址,叫做“IP 地址”,又称为逻辑地址。由于有这种地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。一个IP地址在整个因特网范围内是唯一的。
IP地址由32位二进制组成,将二进制转换为字节就是4字节。
IP地址分类
A类规定前8位二进制为网络位,后24位为主机位,并且网络位的前8位首位必须为0.
网络位:占用1个字节,0xxx xxxx,只有7位可用,所以网络位为 2^7-2,1~126
-2是因为网络位全为0(000 0000)时为保留地址,网络位为0(111 1111)时为本地回环地址127.0.0.0,去掉这两个才是真正可用的。
主机位:占用3个字节,也就是24位,得出可用主机数为2^24-2。
-2是因为主机位全为0时用来表示本网络的单个网段,区分不同网络。主机位全为1时表示本网络的广播地址
A类私有地址:10.0.0.0~10.255.255.255
B类规定前16位为网络位,后16位为主机位,并且网络位的前8位的首2位必须为10
网络位:占用2个字节,10xxx xxx.X,有17位可用,所以网络位总数为 2^14,128.0~191.255
主机位:占用2个字节,也就是16位,得出可用主机数为2^16-2。
-2是因为主机位全为0时用来表示本网络的单个网段,区分不同网络,主机位全为1时表示本网络的广播地址
B类私有地址:172.16.0.0~172.31.255.255
C类规定前24位为网络位,后8位为主机位,并且网络位前8位的首3位必须为110
网络为:占3个字节,110x xxxx.X.X,有21位可用,所以网络位总数为2^21,192.0.0~223.255.255
主机位:占1个字节,也就是8位,得出主机数为2^8-2.
-2是因为主机位全为0时用来表示本网络的单个网段,区分不同网络,主机位全为1时表示本网络的广播地址
C类私有地址:192.168.0.0 -- 192.168.255.255
D类为组播地址
E类地址保留
以上是老的分配方法,固定的分配方法,因为现在的IPV4数量有限,某些场景下会浪费资源,所以出现了新的技术CIDR。
CIDR无类别域间路由
无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
一个IP地址包含两部分:标识网络的前缀和紧接着的在这个网络内的主机地址。在之前的分类网络中,IP地址的分配把IP地址的32位按每8位为一段分开。这使得前缀必须为8,16或者24位。因此,可分配的最小的地址块有256(24位前缀,8位主机地址,28=256)个地址,而这对大多数企业来说太少了。大一点的地址块包含65536(16位前缀,16位主机,216=65536)个地址,而这对大公司来说都太多了。这导致不能充分使用IP地址和在路由上的不便,因为大量的需要单独路由的小型网络(C类网络)因在地域上分得很开而很难进行聚合路由,于是给路由设备增加了很多负担。
无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。
子网掩码是一种把前缀编成一种与IP地址相似的形式的掩码。一个子网掩码一共有32位,被分为连续的两部分,高位部分的每一位都被设为二进制的1,其余部分的每一位均被设为二进制的0。其中为1的位的数目和前缀的长度相同。它也被写成点分十进制的形式。子网掩码的作用和前缀一样,但是掩码这种形式出现得比前缀要早。
CIDR用可变长子网掩码根据各人需要来分配IP地址,而不是按照一个全网络约定的规则。所以,网络/主机的划分可以在地址内的任意位置进行。这个划分可以是递归进行的,即通过增加掩码位数,来使一部分地址被继续分为更小的部分。整个互联网现在都在使用CIDR/VLSM网络地址。
CIDR表示法:IP/网络ID位数
CIDR通过子网掩码计算IP地址的具体范围。
给定IP地址167.77.88.99和掩码255.255.255.192,子网号是什么?广播地址是什么?有效IP地址是什么?
计算方法为:通过掩码的全为1位和全为0位对应IP地址的对比进行与运算,1与任何数(N)都为N,0与任何数(N)都为0
将掩码和IP通过下面二进制转换十进制方法反过来将十进制转换为二进制
IP: 166 77 88 99
10100110 01001101 01010110 01100011
MASK: 255 255 255 192
11111111 11111111 11111111 11000000
进行与运算:1与任何数(N)都为N,0与任何数(N)都为0
11111111 11111111 11111111 11 000000
10100110 01001101 01010110 01 100011
得出: 10100110 01001101 01010110 01 000000
166 77 88 64
最后得出:
子网号:26
网段:166.77.88.64
第小IP:166.77.88.65
最大IP:166.77.88.126
广播地址:166.77.88.127
二进制转十进制方法
1.第一种:
00000001 = 1
00000010 = 2
00000100 = 4
00001000 = 8
00010000 = 16
00100000 = 32
01000000 = 64
10000000 = 128
2.第二种:
00000001 = 1
00000011 = 3
00000111 = 7
00001111 = 15
00011111 = 31
00111111 = 63
01111111 = 127
3.第三种:
10000000 = 128
11000000 = 192
11100000 = 224
11110000 = 240
11111000 = 248
11111100 = 252
11111110 = 254
Linux网卡配置介绍
centos6网卡名的配置文件:/etc/udev/rules.d/70-persistent-net.rules
修改网卡名称之后需要卸载网卡驱动重装一次就好了
查看网卡驱动:
dmesg | grep -i eth0
ethtool -i eth0
查看模块:lsmod
卸载网卡驱动:只是内存中卸载,虚拟机中叫e1000,物理机不一定
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000
将centos7网卡名恢复为传统名称:eth0,eth1
编辑/etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
为grub2生成配置文件
grub2-mkconfig -o /etc/grub2.cfg
重启系统:reboot
linux主机连接到网络的基本配置
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE: 此配置文件应用到的设备
ONBOOT: 在系统引导时是否激活此设备
HWADDR: 对应的设备的MAC地址
BOOTPROTO: 激活此设备时使用的地址配置协议,常用的dhcp,static,none,bootp
NM_CONTROLLEDl:NM是NetworkManager的简写,次网卡是否接受NM控制,建议centos6位’no‘
NAME: 对外的名字
IPADDR: IP地址
PREFIX: 子网掩码,8,16,24,这样表示形式的
GATEWAY: 网关
DNS1: DNS服务器地址
DNS2: 冗余DNS服务器
/usr/share/doc/initscripts-9.49.30/sysconfig.txt:配置文件的说明参考
静态路由的配置方法,没有则创建该文件:
/etc/sysconfig/network-scripts/route-eth0
格式: 10.0.0.0/8 via 172.16.0.1
添加IP地址192.168.2.2/24到eth0网卡上
编辑/etc/sysconfig/network-scripts/ifcfg-eth0
内容:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLEDl=no
NAME=eth0
IPADDR=192.168.2.2
PREFIX=24
GATEWAY=192.168.2.1
DNS1=114.114.114.114
DNS2=223.5.5.5
Linux网络管理工具
ifconfig
ifconfig eth0 down :临时关闭
ifconfig eth0 up :启动
ifdown eth0 :关闭
ifup eth0 :开启
ifconfig eth0 IP/netmask : 临时
route :路由
-n:数字化显示
add:
-host:主机路由 gw:指定网关
-net:网络路由IP/netmask gw:指定网关
default:默认路由
del 192.168.0.1
ip :tab键查看子命令和选项
ip [option] odject {command|help}
网络层
ip addr add IP/netmask dev ens33 为网卡添加IP
ip addr del IP/netmask dev ens33 删除指定网卡的指定IP
ip addr flush dev ens33 清空指定网卡上所有IP
ip route add 192.168.0.0/24 via 192.16.0.1 dev ens33
添加网关:ip route add default via 172.16.0.1
数据链路层
ip link show ens33 查看信息
ip link set ens33 down|up 启动或关闭
ss:命令
netstat通过遍历/proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息
选项:
-t:tcp协议相关
-u:udp协议相关
-w:裸套接字相关
-x:unix sock相关
-l:listen状态相关
-a:所有
-n:数字显示
-p:相关程序的PID
-e:扩展的信息
-m:内存使用信息
-o:计时器信息
常用组合:
ss -l :显示本地打开的所有端口
ss -pl:显示每个进程具体打开的socket
ss -ta:显示所有TCP的socket
ss -ua:显示所有UDP的socket
ss -s :列出当前socket详细信息
ss -o state established '(dport = :ssh)'
Bonding技术
Bonding:
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡,直接给两块网卡设置同一IP地址是不可以的,通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
模式:
mode 0 (balance-rr)
轮转策略:从头到尾顺序的在每一个slave接口上发送数据包,本模式提供负载均衡和容错的能力
mode 1 (active-backup)
活动-备份策略:只有一个slave被激活,当活动的slave接口失效时才会激活其他slave,为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口可见
mode 3 (broadcast)
广播策略:在所有slave接口上传送所有数据报,提供容错能力
注意:active-backup、balance-tlb、balance-alb模式不需要交换机的任何特殊配置,其他的绑定模式需要配置交换机以便整合连接,如思科交换机在模式0、2、3中使用etherchanne,但在模式4中需要LACP和etherchannel
bonding配置 bond(结合,凝聚)
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS="mode=0 miimon=100" :mode是bonding的模式,用哪种,填哪种;
miimion是多网卡之间经过多长时间互相发送一个报文,测一下对方是否工作正常,如有损坏,立马接替工作;
bonding需要物理网卡配合使用,以下是物理网卡的配置:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MASTER=bond0 :指明配合哪个bond,认为bond是主
SLAVE=yes :说明本网卡是辅助
BOOTPROTO=none
USERCTL=none :不允许用户操作
查看bond状态:/proc/net/bonding/bond#
bonding 的删除:
ifconfig down :先禁用网卡
lsmod | grep "bond" :查看bond的模块
rmmod bonding :删除模块
将原网卡配置文件恢复,重启网络服务即可
官网介绍:
https://www.kernel.org/doc/Documentation/networking/bonding.txt