一、简述osi七层模型和TCP/IP五层模型
1、OSI参考模型
(1) OSI的来源
OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。
ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。
(2)OSI七层模型的划分及其解释
(3)各层功能定义
<1> 应用层
OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
<2> 表示层
表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
<3> 会话层
会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
<4> 传输层
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
<5> 网络层
本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。
<6> 数据链路层
将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
<7> 物理层
实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
2. TCP/IP五层模型
TCP/IP五层协议和OSI的七层协议对应关系如下图。
在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。
在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。
二、简述iproute家族命令
静态配置地址的方法有一下几种方式:
(1)ifconfig (2)ip命令 (3)GUI工具 (4)TUI工具 (5)编辑配置文件
1.ifconfig
查看接口:ifconfig [interface]
-a:包括未激活状态的所有接口
设定与修改接口
ifconfig interface {options}
常见选项与参数:
interface:网络卡接口代号,包括 eth0, eth1等
options :可以接的参数,包括如下:
up, down :启动 (up) 关闭 (down)
mtu:可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)
netmask :子网掩码;
broadcast:广播地址
-
注意:设置的地址会立即送往内核,因此,会立即生效,但不会永久有效
[root@wujunjie ~]# ifconfig** ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.32.128 netmask 255.255.255.0 broadcast 192.168.32.255 inet6 fe80::9df0:382c:4485:9d77 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1a:6a:cc txqueuelen 1000 (Ethernet) RX packets 79 bytes 7830 (7.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 82 bytes 13262 (12.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # ens33:网卡名称 # inet:IPv4 的IP地址,后续的netmask,broadcast分别代表的是子网掩码与广播地址 # inet6:是IPv6的IP # prefixlen:IPv6的前缀长度 # ether:网卡的硬件地址,俗称的MAC地址 # txqueuelen:传输数据的缓冲区的储存长度 # MTU:网络最大传输单元 # RX:那一行代表的是网络由启动到目前为止的封包接收情况,packets 代表封包数、errors代表封包发生错误的数量、dropped代表封包由于有问题而遭丢弃的数量 # TX:与 RX 相反,为网络由启动到目前为止的传送情况; # collisions:代表封包碰撞的情况,如果发生太多次,表明网络状况不太好
2.IP命令
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
选项:
-V:显示指令版本信息
-s:输出更详细的信息
-f:强制使用指定的协议簇
-4:指定使用网络协议是IPv4协议
-6:指定使用网络协议是IPv6协议
-0:输出信息每条记录输出一行,即使内容多也不换行显示
-r:显示主机时,不使用IP地址,而使用主机的域名
-
link: 链接接口
• ip link show
• ip link help
• ip link set { DEVICE | dev DEVICE | group DEVGROUP }
• [ { up | down } ] 启用关闭
• [ multicast { on | off } ] 启用或禁用多播功能
• [ name NEWNAME ] 重命名接口
• [ mtu MTU ] 设置MTU(默认1500)
• [ netns { PID | NAME } ] 用于将接口移动到指定的网络名称空间
-
address: 管理接口上的地址
• ip address help
• ip address [ show [ dev IFNAME ] 显示接口IP信息
• ip address del IFADDR dev IFNAME 删除IP地址
• ip address flush dev IFNAME 清空所有的IP地址
• ip address add IFADDR dev IFNAME 添加地址
• [label NAME] 为额外添加的地址指明接口别名
• [broadcast ADDRESS] 广播地址;会根据IP和NETMASK自动计算得到
• [scope SCOPE_VALUE]
• global 全局可用
• link 接口可用
• host 仅本机可用
-
route:管理路由
• ip route help
• ip route show
• ip route add DESTINATION via GATEWAY [dev IFNAME] 添加路由
• ip route del DESTINATION 删除路由
3.GUI方式:图形用户界面(Graphical User Interface,简称GUI,又称图形用户界面)是指采用图形方式显示的计算机操作用户界面
4.TUI方式:通过文本命令的方式执行程序,而不是通过图形界面窗口的点击按钮方式。
5.通过修改对应网卡的配置文件
每个网络借口都有一个配置文件/etc/sysconfig/network-scripts/ifcfg-IFNAME,我们可以通过编辑这个配置文件来配置相应的参数信息
字段 | 解释含义 |
---|---|
DEVICE | 此配置文件所关联到的设备 |
BOOTPROTO | 启动此设备时使用的配置协议,(static,none,dhcp,bootp) |
HWADDR | 网卡的MAC地址 |
NM-CONTROLLED | NM即NetworkManager的简写 |
ONBOOT | 此设备是否随OS启动而激活 |
TYPE | 设备类型(Ethernet,Bridge) |
UUID | 网卡设备的唯一识别码 |
IPADDR | 此接口的ip地址 |
NETMASK | 子网掩码 |
GATEWAY | 网关 |
DNS1 | DNS服务器指向的主DNS服务器 |
DNS2 | 备用DNS服务器地址 |
IPV6INIT | 是初始化ipv6协议地址 |
USERCTL | 是否允许普通用户管理此接口 |
PEERDNS | 当BOOTPROTO的值为dhcp时,是否允许dhcp服务器提供的dns服务指向覆盖本地配置的DNS服务器指向 |
-
注意:重启网络服务后方能生效。
三、详细说明进行管理工具htop、vmstat等相关命令,并举例
linux上进程有5种状态:
• 1. 运行(正在运行或在运行队列中等待)
• 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
• 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
• 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
• 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行)
ps工具标识进程的5种状态码:
• D 不可中断 uninterruptible sleep (usually IO)
• R 运行 runnable (on run queue)
• S 中断 sleeping
• T 停止 traced or stopped
• Z 僵死 a defunct (”zombie”) process
1.ps:显示系统当前进程的运行情况
使用格式:ps [options] [--help]
常用选项与参数:
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯具体命令解释
-u 与用户相关的process
-x 通常与a这个参数一起使用,可列出较完整信息
具体命令解释:
• ps a 显示现行终端机下的所有程序,包括其他用户的程序。
• ps -A 显示所有进程。
• ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
• ps -e 此参数的效果和指定"A"参数相同。
• ps e 列出程序时,显示每个程序所使用的环境变量。
• ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
• ps -H 显示树状结构,表示程序间的相互关系。
• ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
• ps s 采用程序信号的格式显示程序状况。
• ps S 列出程序时,包括已中断的子程序资料。
• ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
• ps u 以用户为主的格式来显示程序状况。
• ps x 显示所有程序,不以终端机来区分。
常用的组合方式:
1.ps -ef
2.ps -aux
3.ps -axo
-
ps -ef
[root@wujunjie ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:36 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0 0 10:36 ? 00:00:00 [kthreadd] root 3 2 0 10:36 ? 00:00:00 [ksoftirqd/0] root 5 2 0 10:36 ? 00:00:00 [kworker/0:0H] root 7 2 0 10:36 ? 00:00:00 [migration/0] UID/PID/PPID分别代表进程的发起者;进程号;父进程号 C:CPU使用的资源百分比 STIME :系统启动时间 TTY:登入者的终端机位置 TIME:使用掉的CPU时间。 CMD:所下达的是什么指令
-
ps -aux
[root@wujunjie ~]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.6 128092 6704 ? Ss 10:36 0:02 /usr/lib/systemd/systemd --switched-root --system --des root 2 0.0 0.0 0 0 ? S 10:36 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:36 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 10:36 0:00 [kworker/0:0H] USER: 进程拥有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的记忆体使用率 VSZ: 占用的虚拟记忆体大小 RSS: 占用的记忆体大小 TTY: 终端的次要装置号码 (minor device number of tty) STAT: 该行程的状态: START: 行程开始时间 TIME: 执行的时间 COMMAND:所执行的指令
2.htop命令
(1)简介
相当于监控软件TOP的增强版,htop有如下优势:
• 相对于top更简单的操作
• 支持图形界面和横向纵向的滚动操作以及鼠标操作
• 杀进程时可以不用输入进程号
(2)htop界面所支持的一些交互式命令
u:选择显示指定用户的进程
l:显示光标所在进程所打开的文件列表
s:显示光标所在进程执行的系统调用
a:绑定进程到指定的CPU
#:快速定位光标至PID为#的进程上
htop支持的一些选项:
-d:延迟时长
-u:USERNAME:仅显示指定用户的进程
-s COLUMN:根据指定的字段进行排序
(3)htop界面介绍
- 下面为其分区域解释运行界面
• USER:运行此进程的用户
• PRI:进程的优先级
• NI:进程的NICE值,默认的为0,范围从-20到+19,正值表示低优先级,负值表示高优先级,可以进行调整
• VIRT:进程占用的虚拟内存值
• RES:进程占用的物理内存值
• SHR:进程占用的共享内存值
• S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
• %CPU:该进程占用的CPU使用率
• %MEM:该进程占用的物理内存相对于总内存的百分比
• TIME+:该进程启动后占用的总的CPU时间
• COMMAND:进程启动的启动命令名称
• F2:htop 设定
• F3:搜索进程
• F4:增量进程过滤器
• F5:显示树形结构
• F6:选择排序方式
• F7:可减少nice值以提高对应进程的优先级
• F8:可增加nice值以降低对应进程的优先级
• F9:可对进程传递信号
• F10:结束htop
3.vmstat命令
vmstat主要用来动态显示系统资源的使用情况,这些资源包括:内存、磁盘、网络、cpu等资源
格式用法
vmstat [options] [delay [count]]
-s:将一些事件导致的内存变化情况列表说明
-S:后面可以接单位,如K,M取代bytes的容量
-d:列出磁盘的读写总量统计表
-
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
[root@wujunjie ~]# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 8 124508 46492 566084 0 0 27 12 31 47 0 0 100 0 0 上述应用实例中2表示每个两秒采集一次主机的状态,1表示只采集一次
4.glances
glances 可以为 Unix 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:
• CPU 使用率
• 内存使用情况
• 内核统计信息和运行队列信息
• 磁盘 I/O 速度、传输和读/写比率
• 文件系统中的可用空间
• 磁盘适配器
• 网络 I/O 速度、传输和读/写比率
• 页面空间和页面速度
• 消耗资源最多的进程
• 计算机信息和系统资源
glances的使用方法及常用的选项
-b:显示网络连接速度 Byte/ 秒
-B @IP|host :绑定服务器端 IP 地址或者主机名称
-c @IP|host:连接 glances 服务器端
-C file:设置配置文件默认是 /etc/glances/glances.conf
-d:关闭磁盘 I/O 模块
-e:显示传感器温度
-f file:设置输出文件(格式是 HTML 或者 CSV)
-m:关闭挂载的磁盘模块
-n:关闭网络模块
-p PORT:设置运行端口默认是 61209
-P password:设置客户端 / 服务器密码
-s:设置 glances 运行模式为服务器
-t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767
-h : 显示帮助信息
-v : 显示版本信息
5.kill命令
命令功能
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。-
格式用法
kill [-SIGNAL] pid …
常见选项
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
常用的信号有
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
-
killall命令
killall [-SIGNAL] PROGRAM
注意:这里的PROGRAM为进程名称,用于杀死指定进程名所有进程
常用选项
-i:交互式
-I:命令名称忽略大小写
四、使用until和while分别实现192.168.0.0/24网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"
-
while脚本
[root@wujunjie ~]# vim whileping.sh #!/bin/bash declare -i aa=1 while [ $aa -le 254 ];do if ping -c1 192.168.0.$aa &>/dev/null;then echo -e "\033[1;5;32mping 192.168.0.$aa is success! \033[0m" else echo -e "\033[1;5;31mping 192.168.0.$aa is fail! \033[0m" fi let aa++ done [root@wujunjie ~]# bash whileping.sh ping 192.168.0.1 is success! 高亮闪烁绿色 ping 192.168.0.2 is fail! 高亮闪烁红色 ping 192.168.0.3 is success! 高亮闪烁绿色 ping 192.168.0.4 is fail! 高亮闪烁红色
-
until脚本
[root@wujunjie ~]# vim untilping.sh #!/bin/bash declare -i aa=1 until [ $aa -gt 254 ];do if ping -c1 192.168.0.$aa &>/dev/null;then echo -e "\033[1;5;32mping 192.168.0.$aa is success! \033[0m" else echo -e "\033[1;5;31mping 192.168.0.$aa is fail! \033[0m" fi let aa++ done [root@wujunjie ~]# bash untilping.sh ping 192.168.0.1 is success! 高亮闪烁绿色 ping 192.168.0.2 is fail! 高亮闪烁红色 ping 192.168.0.3 is success! 高亮闪烁绿色 ping 192.168.0.4 is fail! 高亮闪烁红色