OSI七层模型和TCP/IP五层模型详解及ip route家族命令使用
1、简述osi七层模型和TCP/IP五层模型
OSI七层模型
简述:(从下往上)
物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚。————(数据形式:比特流)
数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。————(数据形式:数据帧)
网络层:提供逻辑地址,供路由器确定路径。 ————(数据形式:数据包)
传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。————(数据形式:数据段)
会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。
TCP/IP五层模型:
数据的封装过程:
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段 );
数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);
数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);
最后,帧被转换为比特,通过网络介质传输
OSI七层模型和TCP/IP五层模型的对应关系
2、简述iproute家族命令
ip命令是Linux系统下一款强大的网络配置工具,常用于显示或配置主机路由、网络设备、隧道的设置。
ip命令的使用
1、命令格式
ip [ OPTIONS ] OBJECT { COMMAND | help }
2、通用选项
-r:显示主机的时候,不使用ip地址,尝试使用主句的域名显示;
-s:显示更详细的信息;
3、ip命令的作用对象OBJECT
由于ip命令支持的对象有很多,这里不一一介绍了,其常用的作用对象包括:link、addr、route等等。
link
常见命令:
set:设置接口属性
ip link set DEVICE {up|down}:启用或禁用接口;
ip link set DEVICE promisc {on|off}:启用或禁用接口的混杂模式;
ip link set DEVICE name NEWNAME:设置接口使用的新名字;
show:显示接口状态,如启用的特性、mac地址等等;
ip link show [DEVICE]
addr
常用命令:
add:添加地址
del:删除地址
ip addr {add|del} ADDRESS/NETMASK dev DEVICE
show:显示该网卡的所有地址信息
ip addr show [dev NAME]
flush:清除协议地址
ip addr flush [dev NAME]
route
常用命令:
list|show:显示路由信息;
ip route list|show
add:添加路由;
ip route add DESTINATION via GATEWAY [dev NAME]
del:删除路由;
ip route del DESTINATON
使用实例
为指定接口设置新的名字
[[email protected] ~]# ip link set eno33554984 down #在更改接口名字前需先将接口关闭
[[email protected] ~]# ip link set eno33554984 name link-to-wan
[[email protected] ~]# ip link list link-to-wan #显示指定的接口信息
3: link-to-wan: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether 00:0c:29:21:59:c3 brd ff:ff:ff:ff:ff:ff
为指定接口添加新的IP地址
[[email protected] ~]# ip addr add 188.88.88.234/24 dev link-to-wan
[[email protected] ~]# ip addr show link-to-wan #显示指定接口的地址信息
3: link-to-wan: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0c:29:21:59:c3 brd ff:ff:ff:ff:ff:ff
inet 188.88.88.234/24 scope global link-to-wan
valid_lft forever preferred_lft forever
显示路由条目
[[email protected] ~]# ip route list
default via 192.168.0.1 dev eno16777736 proto static metric 100
192.168.0.0/24 dev eno16777736 proto kernel scope link src 192.168.0.188 metric 100
192.168.0.0/24 dev eno16777736 proto kernel scope link src 192.168.0.188 metric 101
添加路由
[[email protected] ~]# ip route add 10.1.1.0/24 via 192.168.0.1 dev eno16777736
[[email protected] ~]# ip route list
default via 192.168.0.1 dev eno16777736 proto static metric 100
10.1.1.0/24 via 192.168.0.1 dev eno16777736
192.168.0.0/24 dev eno16777736 proto kernel scope link src 192.168.0.188 metric 100
192.168.0.0/24 dev eno16777736 proto kernel scope link src 192.168.0.188 metric 101
设置默认路由:
[[email protected] ~]#ip route add default via 192.168.0.1
查看邻居表
[[email protected] ~]# ip neigh list
188.88.88.39 dev eno16777736 lladdr e4:a4:71:8b:bc:08 REACHABLE
188.88.88.1 dev eno16777736 lladdr 90:6c:ac:56:be:ca STALE
3、详细说明进行管理工具htop、vmstat等相关命令,并举例
htop命令
选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
l:列出选定的进程所占用的文件列表;(需要lsof命令)
s:跟踪选定的进程的系统调用;(需要trace命令)
t:以层级关系显示各进程状态;
a:将选定的进程绑定至指定的CPU核心;
[[email protected] ~]# htop
[[email protected] ~]# htop
Avg[* 0.3%]
1 [* 0.7%] Tasks: 35, 19 thr; 1 running
2 [ 0.0%] Load average: 0.00 0.01 0.05
Mem[||||||||||||||||||||||2.65G/3.70G] Uptime: 16 days, 10:29:46
Swp[ 0K/1.50G] Time: 19:56:24
Avg[* 0.3%]
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
28006 root 20 0 119M 2180 1488 R 0.0 0.1 0:00.13 htop
885 root 20 0 560M 17004 6016 S 0.0 0.4 3:29.15 /usr/bin/python -Es /usr
14617 root 20 0 218M 5068 3212 S 0.0 0.1 0:50.76 /usr/sbin/httpd -DFOREGR
1 root 20 0 132M 6568 4120 S 0.0 0.2 5:29.28 /usr/lib/systemd/systemd
355 root 20 0 40204 8300 7916 S 0.0 0.2 0:20.54 /usr/lib/systemd/systemd
380 root 20 0 47040 4624 2804 S 0.0 0.1 0:00.96 /usr/lib/systemd/systemd
504 root 16 -4 55508 896 492 S 0.0 0.0 0:00.48 /sbin/auditd
503 root 16 -4 55508 896 492 S 0.0 0.0 0:03.65 /sbin/auditd
529 root 20 0 21668 1292 976 S 0.0 0.0 1:22.94 /usr/sbin/irqbalance --f
542 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:00.00 /usr/lib/polkit-1/polkit
544 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:04.18 /usr/lib/polkit-1/polkit
552 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:00.00 /usr/lib/polkit-1/polkit
553 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:00.00 /usr/lib/polkit-1/polkit
554 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:00.00 /usr/lib/polkit-1/polkit
530 polkitd 20 0 526M 11944 4920 S 0.0 0.3 0:06.97 /usr/lib/polkit-1/polkit
543 dbus 20 0 66428 2596 1892 S 0.0 0.1 0:00.00 /usr/bin/dbus-daemon --s
534 dbus 20 0 66428 2596 1892 S 0.0 0.1 0:29.93 /usr/bin/dbus-daemon --s
545 root 20 0 26516 1940 1472 S 0.0 0.0 0:24.61 /usr/lib/systemd/systemd
546 root 20 0 123M 1728 1056 S 0.0 0.0 0:17.93 /usr/sbin/crond -n
550 root 20 0 96532 2460 1788 S 0.0 0.1 0:00.24 login -- root
590 root 20 0 615M 9468 6968 S 0.0 0.2 0:32.70 /usr/sbin/NetworkManager
592 root 20 0 615M 9468 6968 S 0.0 0.2 0:03.54 /usr/sbin/NetworkManager
576 root 20 0 615M 9468 6968 S 0.0 0.2 0:40.25 /usr/sbin/NetworkManager
1998 root 20 0 560M 17004 6016 S 0.0 0.4 0:00.00 /usr/bin/python -Es /usr
1999 root 20 0 560M 17004 6016 S 0.0 0.4 3:26.77 /usr/bin/python -Es /usr
2009 root 20 0 560M 17004 6016 S 0.0 0.4 0:01.85 /usr/bin/python -Es /usr
2130 root 20 0 560M 17004 6016 S 0.0 0.4 0:00.00 /usr/bin/python -Es /usr
886 root 20 0 110M 4324 3300 S 0.0 0.1 0:01.41 /usr/sbin/sshd -D
907 root 20 0 211M 8068 7136 S 0.0 0.2 1:39.22 /usr/sbin/rsyslogd -n
908 root 20 0 211M 8068 7136 S 0.0 0.2 0:00.84 /usr/sbin/rsyslogd -n
888 root 20 0 211M 8068 7136 S 0.0 0.2 1:40.43 /usr/sbin/rsyslogd -n
1439 named 20 0 235M 58932 3172 S 0.0 1.5 0:00.07 /usr/sbin/named -u named
1440 named 20 0 235M 58932 3172 S 0.0 1.5 0:00.41 /usr/sbin/named -u named
1441 named 20 0 235M 58932 3172 S 0.0 1.5 0:00.00 /usr/sbin/named -u named
F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit
vmstat命令:
- Report virtual memory statistics
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
sy:system
id:idle
wa:wait
st: stolen
[[email protected] ~]# vmstat
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 219688 4172 949876 0 0 0 0 12 10 0 0 100 0 0
[[email protected] ~]#
选项:
-s:显示内存统计数据;
[[email protected] ~]# vmstat
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 219688 4172 949876 0 0 0 0 12 10 0 0 100 0 0
[[email protected] ~]# vmstat -s
3881340 K total memory
2707640 K used memory
466892 K active memory
434476 K inactive memory
219652 K free memory
4172 K buffer memory
949876 K swap cache
1572860 K total swap
0 K used swap
1572860 K free swap
62767 non-nice user cpu ticks
639 nice user cpu ticks
84803 system cpu ticks
283782100 idle cpu ticks
9580 IO-wait cpu ticks
0 IRQ cpu ticks
616 softirq cpu ticks
0 stolen cpu ticks
239192 pages paged in
1155486 pages paged out
0 pages swapped in
0 pages swapped out
32774851 interrupts
28955442 CPU context switches
1533777997 boot time
676506 forks
[[email protected] ~]#
dstat
1. 命令概述及格式 概述:一款多功能的用于生成系统资源使用统计数据的工具 命令格式: dstat [-afv] [options…] [delay [count]]
2. 常用选项
• -c,–cpu 显示cpu信息
○ -C #,#…total 显示某几个cpu的信息
• -d,–disk 显示磁盘相关信息
○ -D sda,sdb,…,total 显示某几个磁盘的信息
• -g 显示page相关的速率信息
• -m 显示内存信息
• -n 显示网卡信息
• -p 显示进程信息
• -r 显示io请求信息
• -s 显示swapped相关信息
• –tcp 显示tcp相关信息
• –udp 显示udp相关信息
• –raw 显示裸套接字信息
• –socket 显示套接字信息
• –top-cpu 显示最占用cpu的进程
• –top-io 显示最耗io的进程
• –top-mem 显示最占内存的进程
• –top-latency 显示延迟最大的进程 i.e. dstat 默认选项-cdngy
[[email protected] ~]# dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0| 172B 830B| 0 0 | 0 0 | 23 20
0 0 100 0 0 0| 0 0 | 428B 374B| 0 0 | 52 38
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 39 32
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 19 15
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 36 30
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 45 37
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 36 30
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 30 25
0 0 100 0 0 0| 0 0 | 60B 214B| 0 0 | 32 30
kill
1. 命令概述及格式 概述:关闭进程 命令格式: kill [-s signal|-p] [–] pid… kill -l [signal] 显示可用的信号
2. 常用信号 信号标识方式有三种:数字标识,完整名称标识和简写名称标识。
• 1)SIGHUP 不关闭进程,重读配置文件
• 2)SIGINT 终止正在运行的进程,相当于Ctrl+c
• 9)SIGKILL 杀死运行中的进程,直接杀死进程,进程不会正常释放占用的句柄
• 15)SIGTERM 终止运行的进程,终止前,进程会正常释放占用句柄
• 18)SIGCONT 如果进程被停止了,会继续运行
• 19)SIGSTOP 停止进程
4、使用until和while分别实现192.168.0.0/24网段内, 地址是否能够ping通,若ping通则输出”success!”,若ping不通则输出”fail!”
while方式
[[email protected] ~]# vi ping.sh
#!/bin/bash
#
declare -i i=1
while [ $i -le 254 ];do
ping -c 2 192.168.0.$i &> /dev/null
if [ $? -eq 0 ];then
echo "success!"
else
echo "fail!"
fi
let i++
done
until方式:
[[email protected] ~]# vi ping1.sh
#!/bin/bash
#
declare -i i=1
until [ $i -gt 254 ];do
ping -c 2 192.168.0.$i &> /dev/null
if [ $? -eq 0 ];then
echo "success!"
else
echo "fail!"
fi
let i++
done
[[email protected] ~]#