第六周

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张图片
01.jpg

左上方的数字 1、2、3、4 代表服务器有4个CPU核心,分别表示他们的百分比
Mem 表示物理内存的使用比率
Swp 表示交换内存的使用比率
右上方 Tasks 表示用户空间进程中的当前任务数量
thr 表示线程数量, running 表示运行数量
Load average 是平均负载 1分 5分 15分钟
Uptime 服务器运行时间

02.jpg

以上各项分别为:

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进入帮助


    第六周_第2张图片
    03.jpg
  • F2进入界面配置


    第六周_第3张图片
    04.jpg

监控工具 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!
##########

你可能感兴趣的:(第六周)