OSI七层模型
- 应用层(Application Layer),定义如何实现真正的资源交换
- 表示层(Presentation Layer),定义数据的表示格式,压缩,加密
- 会话层(Session Layer),建立会话,完成通讯
- 传输层(Transport Layer),定义端口,建立、管理和维护端到端的连接
- 网络层(Network Layer),定义基于ip地址的通讯过程的实现
- 数据链路层(Data Link Layer),定义mark通讯时数据报文的封装和响应方式
- 物理层(Physical Layer),定义各设备的物理规范
此模型是ISO组织在1985年推出的网络互连模型,现在所有公司都使用这个规范来控制网络,所有公司都有相同的规范了,就能互连了。
OSI定义了网络互连的七层框架,每一层实现各自的功能和协议,并完成与相邻层的接口通信。
TCP/IP五层模型
- 应用层(Application Layer),定义如何实现真正的资源交换
- 传输层(Transport Layer),定义端口,建立、管理和维护端到端的连接
- 网络层(Network Layer),定义基于ip地址的通讯过程的实现
- 数据链路层(Data Link Layer),定义mark通讯时数据报文的封装和响应方式
- 物理层(Physical Layer),定义各设备的物理规范
在实际工作中,我们为了简单去繁琐往往使用TCP/IP五层模型,TCP/IP五层模型和OSI七层模型基本是对应的关系
iproute2家族命令
iproute家族命令有:bridge,ip,ss,tc等等,这里介绍常用的两种命令ip和ss
ip命令:显示和管理路由,设备,策略路由及隧道等功能
语法:ip [ 选项 ] 执行对象 { 命令 | help }
选项:addr:地址和掩码;
link:接口
route:路由
ip address:管理ip地址
#添加IP地址
[root@localhost ~]# ip addr add 192.168.3.15/24 dev ens33
[root@localhost ~]# ip addr show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3b:9e:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.10/24 brd 192.168.3.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.3.15/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3b:9ed2/64 scope link
valid_lft forever preferred_lft forever
-------------------------分割线-------------------------
[root@localhost ~]# ip addr add 192.168.3.25/24 dev ens33 label ens33:0
[root@localhost ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.3.10 netmask 255.255.255.0 broadcast 192.168.3.255
inet6 fe80::20c:29ff:fe3b:9ed2 prefixlen 64 scopeid 0x20
ether 00:0c:29:3b:9e:d2 txqueuelen 1000 (Ethernet)
RX packets 8062 bytes 8074316 (7.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4353 bytes 410627 (401.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:0: flags=4163 mtu 1500
inet 192.168.3.25 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:3b:9e:d2 txqueuelen 1000 (Ethernet)
#删除IP地址
[root@localhost ~]# ip addr del 192.168.3.15 ens33
#显示IP地址
[root@localhost ~]# ip addr list ens33
2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3b:9e:d2 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.10/24 brd 192.168.3.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.3.15/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet 192.168.3.25/24 scope global secondary ens33:0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3b:9ed2/64 scope link
valid_lft forever preferred_lft forever
ip link:ip的接口
#关闭网卡多播功能
[root@localhost ~]# ip link show ens33
2: ens33: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:3b:9e:d2 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set multicast off dev ens33
[root@localhost ~]# ip link show ens33
2: ens33: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:3b:9e:d2 brd ff:ff:ff:ff:ff:ff
ip route:ip的路由管理
[root@localhost ~]# ip route list #查看路由
default via 192.168.3.2 dev ens33 proto static metric 100
192.168.3.0/24 dev ens33 proto kernel scope link src 192.168.3.10 metric 100
[root@localhost ~]# ip route add 10.10.0.0/16 dev ens33 #添加路由
[root@localhost ~]# ip route list
default via 192.168.3.2 dev ens33 proto static metric 100
10.10.0.0/16 dev ens33 scope link
192.168.3.0/24 dev ens33 proto kernel scope link src 192.168.3.10 metric 100
[root@localhost ~]# ip route del 10.10.0.0/16 #删除路由
[root@localhost ~]# ip route list
default via 192.168.3.2 dev ens33 proto static metric 100
192.168.3.0/24 dev ens33 proto kernel scope link src 192.168.3.10 metric 100
ss:状态及统计数据查看
ss是另一个用来显示sockets相关数据的工具,自带过滤器功能比netstat强大.
[root@localhost ~]# ss -s #查看当前服务器的网络连接统计
Total: 560 (kernel 1071)
TCP: 5 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total IP IPv6
* 1071 - -
RAW 1 0 1
UDP 2 1 1
TCP 5 3 2
INET 8 4 4
FRAG 0 0 0
-------------------------分割线-------------------------
[root@localhost ~]# ss -tnl #查看端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
监控工具 Htop
htop是一个Linux下的交互式的进程浏览器,是top的增强版,可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
1.安装Htop
]# yum install epel-release #先安装epel仓库
]# yum install htop -y #再安装htop
2.Htop的界面
安装完成后,命令行中直接敲击htop命令,可进入htop的界面
左上方的数字 1、2、3、4 代表服务器有4个CPU核心,分别表示他们的百分比
Mem 表示物理内存的使用比率
Swp 表示交换内存的使用比率
右上方 Tasks 表示用户空间进程中的当前任务数量
thr 表示线程数量, running 表示运行数量
Load average 是平均负载 1分 5分 15分钟
Uptime 服务器运行时间
以上各项分别为:
PID:进程ID号
USER:运行此进程的用户
PRI:进程的优先级
NI:进程的优先级数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程占用的共享内存值
S:进程的运行状况,R表示正在运行、S表示睡眠,等待唤醒、Z表示僵死态
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
COMMAND:进程启动的启动命令名称
选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
界面中快捷键说明
u: 只查看某个指定user的线程,敲入u会出现选项
H:要不要显示或隐藏用户线程数
K:显示内核线程
F:光标在哪个线程
PMT:排序方式,cpu占用,内存占用,和线程累积占用时间
F6 > :手动排序,选定以指定字段排序
c : 能标记出一个进程和他所有的子进程
a : 设置进程绑定在哪个cpu,或有限几个cpu
l : 能够显示一个选定的进程所打开的所有文件
s : 能够跟踪一个进程所发起的系统调用,进入后F4自动刷新
t : 以层级关系显示各进程状态
-
F1进入帮助
-
F2进入界面配置
监控工具 vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。
Report virtual memory statistics
vmstat [options] [delay [count]]
选项:
-s:显示内存统计数据;
~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 585372 2108 313296 0 0 1 1 13 11 0 0 100 0 0
0 0 0 585372 2108 313328 0 0 0 0 122 93 0 0 100 0 0
0 0 0 585372 2108 313328 0 0 0 0 114 89 0 0 100 0 0
procs进程
r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;
b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;memory内存
swpd:交换内存使用总量;
free:空闲的物理内存总量;
buffer:用于buffer的内存总量;缓冲
cache:用于cache的内存总量;缓存swap交换分区
si:数据进入swap中的数据速率(kb/s),站在swap的角度是换进
so:数据离开swap的速率(kb/s),换出io块级别
bi:从块设备读入数据到系统的速度(kb/s)
bo:保存数据至块设备的速率(kb/s)system中断和上下文切换
in:interrupts,中断速率;
cs:context switch, 上下文 切换的速率;cpu各种占用或空闲的空间
us: user space,用户空间占据cpu的百分比
sy:system
id:idle,空闲的
wa:wait,等待io完成的
st: stolen,被虚拟化技术偷走的
使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"
ping -c 2 -W 1 192.168.0.1
-c 2 : 每个ip只ping2次
-W 1 : 每次ping的超时等待为1
使用while编程
#!/bin/bash #代码
declare -i i=1
while [ $i -lt 255 ];do
ping -c 2 -W 1 192.168.0.$i
if [ $? -eq 0 ];then
echo "success!"
else
echo "fail!"
fi
let i++
echo "##########"
done
-------------------------分割线-------------------------
[root@localhost ~]# bash a.sh #执行代码
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=128 time=3.03 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=128 time=2.89 ms
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.890/2.963/3.037/0.091 ms
success!
##########
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
--- 192.168.0.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
fail!
##########
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
--- 192.168.0.3 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
fail!
##########
使用until编程
#!/bin/bash
declare -i i=1
until [ $i -gt 255 ];do
ping -c 2 -W 1 192.168.0.$i
if [ $? -eq 0 ];then
echo "success!"
else
echo "fail!"
fi
let i++
echo "##########"
done
-------------------------分割线-------------------------
[root@localhost ~]# bash a.sh
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=128 time=2.63 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=128 time=2.35 ms
--- 192.168.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 2.352/2.493/2.635/0.150 ms
success!
##########
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
--- 192.168.0.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
fail!
##########
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
--- 192.168.0.3 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
fail!
##########