简述osi七层模型和TCP/IP五层模型
osi七层模型:
osi七层模型主要分为:
(1)应用层(Applicattion)
(2)表示层(Presentation)
(3)会话层(Session)
(4)传输层(Transport)
(5)网络层(Network)
(6)数据链路层(Data Link)
(7)物理层(Physical)
(1)应用层:OSI参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3,SMTP等。
(2)表示层:这个层级上面主要是定义网络服务(或程序)之间的数据模式的转换,包括数据的加密,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。确保一个主机的应用层发送的数据能被另一个主机的应用层识别。
(3)会话层:负责建立、管理和终止表示层实体之间的通信会话。这个层级当中主要定义了两个地址之间的联机信道的连接与挂断。
(4)传输层:建立了主机之间的端到端的连接。传输层的作用是为上层协议提供端到端的可靠的透明的数据传输服务,包括差错控制和流量控制等问题。我们通常说的TCP协议、UDP协议就是在这一层。端口号即是这里的“端”。
(5)网络层:网络层定义出计算机之间的联机建立、终止与维持等。通过IP寻址来建立两个网络节点之间的连接,为源主机的传输层送来的分组,选择合适的路由和交换节点,数据传输单位是分组。
(6)数据链路层:将比特组合成字节,再将字节组合成帧,使用数据链路层地址(以太网使用的是MAC地址)来访问介质,并进行差错检测。在物理层提供的服务基础之上,负责在通信的实体之间建立数据链路(载波监听多路访问)。传输以帧为单位的数据包。
(7)物理层:实际的最终信号的传输是通过物理层实现的。通过物理介质实现设备间的0-1比特流传输。常用的设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。还定义了物理电所特性(如8根网线只有1236传数据)等。
TCP/IP五层模型:
TCP/IP五层型主要分为:
(1)应用层
(2)传输层
(3)网络层
(4)数据链路层
(5)物理层
(1)应用层:对应OSI7层模型的应用层,表示层和会话层。为用户提供各种服务,如:FTP,DNS,SMTP等
(2)传输层:对应OSI7层模型的传输层,为应用层实体提供端到端的通信功能,保证数据包的顺序传送及数据的完整性。有2个主要的协议:传输控制协议(TCP)和用户数据包协议(UDP)。
(3)网络层:对应OSI7层模型的网络层,主要解决主机到主机的通讯问题,所包含的协议数据包在整个网络上的逻辑传输包括:路由的选择和中继、激活和终止网络连接、差错检测与恢复、排序和流量监控、服务选择、网络管理,有3个主要协议:网际协议(IP),互联网组管协议(IGMP),互联网控制报文协议(ICMP)。
(4)数据链路层:对应OSI7层模型的数据链路层,为网络层提供数据传送服务的。包括:链路连接的建立、拆除、分离。帧定界和帧同步。对帧的收发顺序的控制。差错检测和恢复。还有链路标识,流量控制等。
(5)物理层:对应OSI7层模型的物理层,为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成。一次完整的数据传输,包括激活(在通信的两个数据终端设备间连接起来,形成一条通路)物理连接,传送数据,终止物理连接。
简述iproute家族命令
iproute家庭常用的命令有ip和ss
ip命令:显示和管理路由,设备,策略路由及隧道等功能。
ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | netns }
OBJECT := { link | addr | route | netns }
iproute家族:
ip OBJECT(常用的几个,OBJECT可简写):
addr:地址和掩码;
link:接口
route:路由
ip addr:管理IP地址
ip address add - add new protocol address(添加一个新的IP地址)
ip addr add IFADDR dev IFACE
dev:指明添加到哪个网卡设备中
[label Name]:为额外添加的地址指明接口别名
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到
[scope SCOPE_VALUE]:
global:全局可用
link:接口可用
host:仅本机可用
[root@localhost ~]# ip addr add 192.168.80.220/24 dev eth1
[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
inet 192.168.80.122/24 brd 192.168.80.255 scope global eth0
inet 192.168.80.123/24 scope global secondary eth0
inet6 fe80::20c:29ff:fecd:1ead/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.80.220/24 scope global eth1
[root@localhost ~]# ip addr add 192.168.80.210/24 dev eth1 label eth1:0[root@localhost ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
inet 192.168.80.122/24 brd 192.168.80.255 scope globaleth0
inet 192.168.80.123/24 scope global secondary eth0
inet6 fe80::20c:29ff:fecd:1ead/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.80.220/24 scope globaleth1
inet 192.168.80.210/24 scope global secondary eth1:0
ip address delete - delete protocol address 删除ip地址
ip addr delete IFADDR dev IFACE
因此处为了演示才添加的eth1网卡,此网卡并未启用,所以可直接删除,如果在启用中的网卡,无法直接删除。
[root@localhost ~]# ip addr delet 192.168.80.220/24 dev eth1
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
inet 192.168.80.122/24 brd 192.168.80.255 scope global eth0
inet 192.168.80.123/24 scope global secondary eth0
inet6 fe80::20c:29ff:fecd:1ead/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff
ip address show 显示ip地址的信息
ip addr list [IFACE]:显示接口的地址
[root@localhost ~]# ip addr list eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
inet 192.168.80.122/24 brd 192.168.80.255 scope globaleth0
inet 192.168.80.123/24 scope global secondary eth0
inet6 fe80::20c:29ff:fecd:1ead/64 scope link
valid_lft forever preferred_lft forever
ip address flush -清空所有ip地址
ip addr flush dev IFACE
例:ip addr flush dev eth1
此命令会清空指明的网卡所有IP地址,要确保安全情况下使用。
ip link: network device configuration(ip的配置命令)
ip link set - change device attributes 修改设备属性
dev NAME (default):指明要管理的设备,dev关键字可省略;
up和 down:启用或禁用接口
multicast on或multicast off:启用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:设置MTU的大小,默认为1500;
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间
[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set mtu 2000 eth0
[root@localhost ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
ip link show - display device attributes 显示设备的属性
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cd:1e:ad brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:cd:1e:b7 brd ff:ff:ff:ff:ff:ff
ip link help - 显示简要使用帮助
[root@localhost ~]# ip link help
Usage: ip link add link DEV [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
type TYPE [ ARGS ]
ip link delete DEV type TYPE [ ARGS ]
ip link set DEVICE [ { up | down } ]
[ arp { on | off } ]
[ dynamic { on | off } ]
[ multicast { on | off } ]
[ allmulticast { on | off } ]
[ promisc { on | off } ]
[ trailers { on | off } ]
[ txqueuelen PACKETS ]
[ name NEWNAME ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ]
[ netns PID ]
[ alias NAME ]
[ vf NUM [ mac LLADDR ]
[ vlan VLANID [ qos VLAN-QOS ] ]
[ rate TXRATE ] ]
[ spoofchk { on | off} ] ]
ip link show [ DEVICE ]
TYPE := { vlan | veth | vcan | dummy | ifb | macvlan | can }
ip netns: - manage network namespaces.
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
ip route - routing table management IP路由管理命令
ip route add - add new route 添加新路由
ip route change - change route 更改路由
ip route replace - change or add new one 更改后添加路由
ip route delete - delete route 删除路由
ip route show - list routes 显示路由
ip route flush - flush routing tables 清空所有路由
ip route get - get a single route 获取一个路由信息
[root@zcy520 ~]# ip route get 192.168.80.254/24
192.168.80.254 dev ens33 src 192.168.80.30
cache
[root@zcy520 ~]# ip route show
default via 192.168.80.254 dev ens33 proto dhcp metric 100
192.168.80.0/24 dev ens33 proto kernel scope link src 192.168.80.30 metric 100
[root@zcy520 ~]# ip addr add 10.0.10.100/8 dev ens33
[root@zcy520 ~]# ip route list
default via 192.168.80.254 dev ens33 proto dhcp metric 100
10.0.0.0/8 dev ens33 proto kernel scope link src 10.0.10.100
192.168.80.0/24 dev ens33 proto kernel scope link src 192.168.80.30 metric 100
ss:状态及统计数据查看
ss是另一个用来显示sockets相关数据的工具,自带过滤器功能比netstat强大
ss [options] [ FILTER ]
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
TCP FSM:
LISTEN:监听
ESTABLISEHD:建立的连接
CLOSED:关闭
EXPRESSION:
dport =目标端口
sport =源端口
[root@zcy520 ~]# ss -tan '( dport = :22 or sport = :22 )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
ESTAB 0 216 192.168.80.30:22 192.168.80.47:50605
ESTAB 0 0 192.168.80.30:22 192.168.80.47:56472
LISTEN 0 128 :::22 :::*
详细说明进行管理工具htop、vmstat等相关命令,并举例
htop命令:
htop是一款交互式的进程查看工具,支持鼠标操作.要使用EPEL的yum源进行安装才能使用,具体操作可以参照网上教程:
https://www.cnblogs.com/renpingsheng/p/7845096.html
htop常用选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;
1-4:cpu运行的情况
Mem:物理内存使用情况
Swp:交换分区的使用情况
Tasks:用户空间进程的个数
thr:线程的个数
running:正在运行进程的个数
Load average:平均负载(在1分钟,5分钟,15分钟的等待进程队列的长度)
uptime:系统启动运行的时间
PRI:进行运行优先级
NI:nice值(19到-20)值越低优先级越高
VIRT:虚拟内存集
RES:常驻内存的集(KiB)
SHR:共享内存空间
S:进程状态(R:运行,S:休眠,D:不可中断休眠,T:阻塞,Z:僵死)
TIME+:进程运行时长
Command:正在运行的命令
PID:进程序号
USER:用户
vmstat- Report virtual memory statistics 虚拟内存统计数据
vmstat显示系统进程,CPU,IO块,物理内存等信息
vmstat [options] [delay [count]]
选项:
-s:显示内存统计数据;
例:
vmstat 2(此处表示每#秒一次) 3(此上表示#次后结束)
[root@zcy520 ~]# 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 411396 2084 419776 0 0 1 1 19 15 0 0 100 0 0
0 0 0 411404 2084 419776 0 0 0 0 118 98 0 0 100 0 0
0 0 0 411404 2084 419776 0 0 0 0 123 106 0 0 100 0 0
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 系统程序占用CPU的百分比
id:idle 空间CPU百分比
wa:wait 等待IO完成占用的CPU百分比
st: stolen 虚拟化偷走的CPU百分比
使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
while方式:
#!/bin/bash
#
declare -i i=1
while [ $i -lt 255 ]; do
ping -c 3 -i 1 192.168.0.$i
let i++
if [ $i -eq 0 ]; then
echo "success!"
else
echo "fail!"
fi
done
[root@zcy520 ~]# bash ping.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=251 time=4.35 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=251 time=3.14 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=251 time=2.93 ms
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 2.939/3.478/4.350/0.623 ms
fail!
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=250 time=3.98 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=250 time=4.68 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=250 time=3.60 ms
--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.606/4.091/4.684/0.449 ms
fail!
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=251 time=2.74 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=251 time=1.65 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=251 time=3.01 ms
--- 192.168.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.659/2.475/3.018/0.587 ms
fail!
......以下省略
until方式:
#!/bin/bash#
declare -i i=1
until [ $i -gt 255 ]; do
ping -c 3 -i 1 192.168.0.$i
let i++
if [ $i -eq 0 ]; then
echo "success!"
else
echo "fail!"
fi
done
[root@zcy520 ~]# bash ping.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=251 time=2.18 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=251 time=2.81 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=251 time=2.33 ms
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.180/2.444/2.816/0.276 ms
fail!
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=250 time=3.57 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=250 time=3.25 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=250 time=4.39 ms
--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 3.259/3.744/4.397/0.479 ms
fail!
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=251 time=3.08 ms
--- 192.168.0.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.082/3.082/3.082/0.000 ms
fail!
......以下省略