- 简述osi七层模型和TCP/IP五层模型
- 简述iproute家族命令
- 详细说明进行管理工具htop、vmstat等相关命令,并举例
- 使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,若ping通则输出”success!”,若ping不通则输出”fail!”
1、简述osi七层模型和TCP/IP五层模型
OSI七层:
- 物理层:把数据转换为传输介质上的电子流或模拟脉冲,并监视数据的传输
- 数据链路层:提供与网络适配器相连的接口,维护子网的逻辑链接
- 网络层:支持逻辑寻址与路由选择
- 传输层:为网络提供错误控制和数据流控制
- 会话层:在计算机的通信应用程序之间建立会话
- 表示层:吧数据转换为标准格式,管理数据加密与压缩
- 应用层:为应用程序提供网络接口,支持文件传输,通信等功能的网络应用
tcp/ip四层模型:
- 网络访问层:提供了与物理网络连接的接口,针对传输介质设置数据的格式,根据硬件的地址实现数据的寻址,对数据在物理网络中的传递提供错误控制
- 网络层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物理结构的子网之间传递,提供路由功能来降低流量,支持不同网络中的数据传递
- 传输层:为网络层提供了流量控制,错误控制和确认服务,充当网络应用程序的接口
- 应用层:为网络排错,文件传输,远程控制和internet操作提供了应用程序,还支持应用编程接口(API),从而使得针对特定操作系统编写的程序能够访问网络
tcp/ip模型不是一个很严格的分界的模型,所以有说5层也有说四层,tcp/ip模型的实现也没有严格遵守上图的模型。
2、简述iproute家族命令 iproute家族有很多命令其中比较常用的有ss,ip
ip命令:
简介:查看/操作路由,设备,策略路由和隧道,在ip命令中有很多子命令,功能非常强大
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
配置网络设备:
ip link:网络设备配置
ip link set - 需要改变的设备的属性
dev NAME (default):指明要管理的设备,dev关键字可省略;
up和down:
multicast on或multicast off:启用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:设置MTU的大小,默认为1500;
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;
ip link show - display device attributes
ip link help - 显示简要使用帮助;
举例:
启用/关闭网络设备
查看网络设备信息
ip link show 或者 ip link list
管理网络命名空间:
ip netns: -管理网络命名空间
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
举例:
1.添加一个netns名为Hal_netns
ip netns add Hal_netns
2.查看所有netns
3.将ens37这个接口移动到Hal_netns这个网络命名空间中
4.删除网络命名空间Hal_netns
ip net del Hal_netns
IP地址管理
ip address - IP地址管理
ip address add - 添加新的ip地址
ip addr add IFADDR dev IFACE
[label NAME]:为额外添加的地址指明接口别名;
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
[scope SCOPE_VALUE]:
global:全局可用;
link:接口可用;
host:仅本机可用;
ip address delete - 删除ip地址
ip addr delete IFADDR dev IFACE
ip address show - 查看ip地址
ip addr list [IFACE]:显示接口的地址;
ip address flush - 清空ip地址
ip addr flush dev IFACE
举例:
1.为ens37新增一个别名ens37:0 ip为10.0.1.25/8
ip ad add 10.0.1.25/8 dev ens37 label ens37:0
2.查看接口ip地址
ip ad li 或者 id ad show
3.down掉ens37接口的10.0.1.25/8这个ip地址
ip addr delete 10.0.1.25/8 dev ens37
管理路由表
ip route -管理路由表
ip route add - 增加一个新的路由条目
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ip route change - 更改路由条目
ip route replace - 更改或新增路由条目
ip route delete - 删除路由条目
ip route del TYPE PRIFIX
ip route show -查看路由表
ip route flush - 清空路由表
ip route get - 获取单个路由条目
ip route get TYPE PRIFIX
举例:
1.添加路由表
去往192.168.251.0网段的 下一跳是192.168.251.1 通过设备ens37 src地址设置为 192.168.253.159
ip route add 192.168.251.0 via 192.168.251.1 dev ens37 src 192.168.253.159
2.查看路由表
ip route list 或者 ip route show
3.清空ens37相关路由表
ip route flush dev ens37
4.获取目标网络为192.168.253.0/24的路由条目
5.删除目标网络为192.168.251.0路由条目
6.设置默认网关 ip route add default via 192.168.253.158
7.删除默认网关 ip route del default via 192.168.253.158
ss命令:
格式:ss [options] [ FILTER ]
常用选项:
- -t:TCP协议的相关连接
- -u:UDP相关的连接
- -w:raw socket相关的连接
- -l:监听状态的连接
- -a:所有状态的连接
- -n:数字格式
- -p:相关的程序及其PID
- -e:扩展格式信息
- -m:内存用量
- -o:计时器信息
- FILTER := [ state TCP-STATE ] [ EXPRESSION ]
常见用法:
ss -tan 数字格式显示tcp所有状态的连接
ss -uan 数字格式显示udp所有状态的连接
ss -tnl 数字格式显示tcp 监听状态的连接
ss -unl, 数字格式显示udp连接中监听状态的连接
ss -tunlp 数字格式显示udp与tcp状态的连接以及相关程序
ss -tan ‘( dport = :22 or sport = :22 )’ 数字格式显示源端口或目的端口为22的所有tcp连接
ss -tan state ESTABLISHED 数字格式显示tcp状态为established的连接
3、详细说明进行管理工具htop、vmstat等相关命令,并举例
htop
简介:交互式查看进程,被认为top的升级版,可以支持鼠标点击操作,这个命令要自己安装官方镜像源没有这个源码包
源码包安装:
- 下载相关的依赖
yum install ncurses-devel gcc gcc-devel -y
- 解压tar包,下载地址http://hisham.hm/htop/releases/2.0.0/
cd /usr/local/src wget http://hisham.hm/htop/releases/2.0.0/htop-2.0.0.tar.gz tar -zxf htop-2.0.0.tar.gz cd htop-2.0.0
- 下载安装htop
./configure --prefix=/usr/local/htop make&& make install
- 设置环境变量
echo 'PATH=/usr/local/htop/bin:$PATH' > /etc/profile.d/htop.sh . /etc/profile
- 测试,命令行输入htop命令
表示成功
常用选项:
- -d #:指定延迟时间间隔;
- -u UserName:仅显示指定用户的进程;
- -s COLUME:以指定字段进行排序;
交互命令:
- F1:查看帮助
- F2:自定义htop页面
- F3或/:搜索
- F4或\:过滤
- F5或t:以层级关系显示各进程状态;
- F6:排序的方式
- F7:nice值-1
- F8:nice值+1
- F9:发送信号(1-15)
- F10:退出
- u:显示指定用户进程
- P、M、T:按照cpu,mem,Time排序
- l:显示选定的进程打开的文件列表;
- s:跟踪选定的进程的系统调用;
- a:将选定的进程绑定至某指定的CPU核心;
- I(大写i):反向排序
- e:显示环境变量
htop面板解释:
系统概况:
- CPU:cpu信息
- Mem:内存信息
- Swp:交换分区信息
- Load average:1分钟,5分钟,10分钟内的平均负载
- Uptime:开机了多久
- Time:当前时间
进程详细信息
- PID:进程PID
- USER:进程所属的用户
- PRI:优先级
- NI:nice值
- VIRT:虚拟内存集,申请的内存总量,假设申请了100m,但是实际只用了10m则这里还是显示100m ,当10m不够需要更多内存的时候,内核才会真正再继续分配内存给他。
- RES:常驻内存集,使用的物理内存的总和
- SHR:与其他进程共享的内存
- S:程序状态一般有如下几种
- R:running 运行状态
- S:interruptable sleeping 可中断睡眠
- D:uninterruptable sleeping 不可中断睡眠
- T:Stopped 停止状态
- Z:zombie 僵尸进程
- CPU%:cpu占比
- MEM%:内存占比
- TIME+:累计运行时间
- Command:命令
vmstat命令
简介:报告虚拟内存统计信息
格式:vmstat [options] [delay [count]]
输出的信息:
- procs:
- r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;
- b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;
- memory:
- swpd:交换内存使用总量;
- free:空闲的物理内存总量;
- buffer:用于buffer的内存总量;
- cache:用于cache的内存总量;
- swap
- si:数据进入swap中的数据速率(kb/s)
- 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 被偷走的时间,虚拟化之类的
常用选项:
- -s:显示内存统计数据;
- DELAY [COUNT]:延迟多久刷新一次,刷新多少次退出
举例:
1.显示内存统计数
vmstat -s
2.动态显示统计数据,2s刷新一次
vmstat 2
3.动态显示统计数据,3s刷新一次,一共输出4次
dstat命令:
简介:用于生成系统资源统计数据的通用工具
格式:dstat [-afv] [options..] [delay [count]]
常用选项:默认 -cdngy
- -c, –cpu:显示cpu相关信息;
- -C #,#,…,total:查看某个cpu
- -d, –disk:显示磁盘的相关信息
- -D sda,sdb,…,tobal:查看某个磁盘
- -g:显示内存页page相关的速率数据;
- -m:Memory的相关统计数据
- -n:Interface的相关统计数据;
- -N:指定网络接口
- -p:显示process的相关统计数据;
- -r:显示io请求的相关的统计数据;
- -s:显示swapped的相关统计数据;
- -l(小写L): 查看1m,5m,10m负载
- -t:显示当前时间
- -y:系统信息
- –tcp :tcp套接字状态
- –udp:udp套接字状态
- –raw :裸套接字状态
- –socket :套接字状态 (total, tcp, udp, raw, ip-fragments)
- –ipc:ipc状态(message queue, semaphores, shared memory)
- –top-cpu:显示最占用CPU的进程;
- –top-io:最占用io的进程;
- –top-mem:最占用内存的进程;
- –top-lantency:延迟最大的进程;
例子:
1.显示ens33网卡接口信息
dstat -Nens33 -n
2.显示tcp套接字状态信息
dstat –tcp
3.显示cpu,磁盘,网络,内存页,系统信息(默认)
dstat -cdngy
4.查看内存状态信息
4、使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,若ping通则输出”success!”,若ping不通则输出”fail!”
while方法
[root@localhost ~]# cat shell/ping_while.sh
#!/bin/bash
#
i=0
while [[ $i -le 255 ]]
do
ping -c 2 192.168.150.${i} &> /dev/null
if [[ $? -eq 0 ]]
then
echo -e "192.168.150.${i}\t success!\n"
else
echo -e "192.168.150.${i}\t fail!\n"
fi
i=$((i+1))
done
until方法
[root@localhost ~]# cat shell/ping_until.sh
#!/bin/bash
#
i=0
until [[ $i -gt 255 ]]
do
ping -c 3 192.168.150.${i} &> /dev/null
if [[ $? -eq 0 ]]
then
echo -e "192.168.150.${i}\t success!\n"
else
echo -e "192.168.150.${i}\t fail!\n"
fi
i=$((i+1))
done
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103880