文章目录
OSI七层模型和TCP/IP五层模型
OSI七层模型
- 概述
OSI协议模型是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
主要的用途是为了主机之间在网络中通信制定的一套标准,目前主要是学习用途,实际中主要使用的是TCP/IP四层模型。 - 协议分层原则
- 为实现双向通信,每一层都能实现两个相反的任务
- 通信的两端每一层中的两个对象应该是相同的
- 七层模型
关于其余五层,会在五层模型中详细介绍,这里只介绍表示层和会话层
- 表示层
这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。 - 会话层
这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
TCP/IP五层模型
- 概述
OSI协议模型是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
主要的用途是为了主机之间在网络中通信制定的一套标准,目前主要是学习用途,实际中主要使用的是TCP/IP四层模型。 - 协议分层原则
- 为实现双向通信,每一层都能实现两个相反的任务
- 通信的两端每一层中的两个对象应该是相同的
3.五层模型
- 应用层
进程到进程的通信是应用层的任务,可以设想在本机到对端的应用层之间有一条桥梁,直接用于通信,但是实际上,应用层之间的通信也是通过本机的层层封装,发到对断后,又进行了层层解封来实现的。 - 传输层
传输层的逻辑连接也是端到端的。源主机的传输层从应用层得到消息,封装成传输层的分组,然后进行发送。通过逻辑连接,分组到达目的主机的传输层。也就是说,传输层负责向应用层提供服务:从运行于应用层的程序得到信息,并将它投递到目的主机相应的应用程序。 - 网络层
网络层负责在源计算机和目的计算机之间创建一个连接。网络层的通信是主机到主机的。而从源主机到目的主机可能存在多个路由器,因此路径上的路由器负责为每个分组选择最好的路径。 - 数据链路层
一个互联网是多个链路(LAN 和WAN)通过路由器连接而构成的。从主机传输数据报到目的地可能存在多个交叠的链路集。路由器负责选择最好的链路进行传输。可是,当路由器定好需要传输的下一条链路后,数据链路层接管这个数据报并使它穿过这条链路。这条链路可以是一个具有链路层交换机的有线局域网、一个无线局域网、一个有线广域网或者一个无线广域网。 - 物理层
物理层负责携带一个帧中单独的比特穿过链路。两个设备通过一种传输介质(电缆或大气)连接。我们需要知道传输介质不携带比特;它携带电或光信号。所以,从数据链路层接收的一个帧的比特需要被变换,然后通过传输介质传输。但是我们可以认为两个设备物理层之间的逻辑单元是一个比特(bit)。
iproute家族命令使用
ip
- 命令概述及格式
概述:展示操控路由、设备及路由规则的工具
命令格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:link,address,route,netns
注:OBJECT可以简写,也可以写全名 - 命令使用
- ip link 网络设备配置
- ip link set dev name options设置网络设备属性
- options:
- up或down 启动或关闭设备
- muticast on 或 muticast off 启动或禁用多播
- name NAME 重命名接口名称
- mtu NUMBER 设置mtu大小,默认为1500
- netns PID :ns为namespace,用于将接口移动到指定的网络名称空间,使用此功能,可以构建复杂的虚拟网络
- options:
- ip link show 显示网络设备属性
- ip netns 管理网络命名空间
- ip netns list 列出所有netns
- ip netns add NAME 创建指定名称的netns
- ip netns del NAME 删除指定名称的netns
- ip netns exec NAME COMMAND 在指定的netns中运行命令
- ip addr 管理网络地址
- ip address show 显示网络协议地址
- ip addr list [IFACE] 显示指定接口地址
- ip addr flush dev IFACE 清空网络接口的所有地址
- 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 PREFIX
i.e. ip route delete 192.168.1.0/24- ip route show 显示所有路由
- ip route flush 清空路由表
- ip route get 获取一个单独的路由
- ip route add 新增路由
- ip link set dev name options设置网络设备属性
进程管理监控工具介绍
ps
- 命令概述及格式
概述:生成当前进程的快照信息
格式:ps [options]
选项有三种风格:UNIX风格(选项必须加一个横线),BSD风格(选项不能加横线)和GNU风格(长选项,必须加两个横线) - 命令使用
- ps aux 查看系统所有进程(BSD)
- ps -ef查看系统所有进程(UNIX)
- ps -eFH查看所有进程并按层级结构显示(UNIX)
- ps {-eo|axo} field1,field2…自定义要显示的字段,以逗号分隔,常用的field有pid,ni,priority,psr,pcpu,stat,comm,tty,ppid,rtpio
i.e. 找到包含postgres进程的信息
[bhps@test ~]$ ps aux|grep postgres
postgres 17707 0.0 0.0 262696 12956 ? S Aug10 1:07 /usr/local/pgsql/bin/postgres -D /home/postgres/pgsql/data
postgres 17709 0.0 0.0 262828 3000 ? Ss Aug10 0:01 postgres: checkpointer process
postgres 17710 0.0 0.0 262696 2048 ? Ss Aug10 0:28 postgres: writer process
postgres 17711 0.0 0.0 262696 996 ? Ss Aug10 0:33 postgres: wal writer process
postgres 17712 0.0 0.0 263096 1808 ? Ss Aug10 1:18 postgres: autovacuum launcher process
postgres 17713 0.0 0.0 117984 1020 ? Ss Aug10 2:20 postgres: stats collector process
bhps 21848 0.0 0.0 103252 836 pts/1 S+ 15:01 0:00 grep postgres
htop
- 命令概述及格式
概述:htop是一款交互式的进程查看工具
命令格式:htop [-dChusv] - 命令使用
选项
- -d # 指定刷新时间间隔
- -u USERNAME仅显示指定用户的进程
- -s COLUME以指定字段进行排序
子命令 - l 显示选定进程打开文件的列表
- s 跟踪选定进程的系统调用
- t 以层级关系显示各进程状态
- a 将选定的进程绑定到指定的CPU核心上
vmstat
- 命令概述及格式
概述:生成虚拟内存统计报告
命令格式:vmstat [options] [delay [count]] - 显示内容介绍
举个例子:1秒钟采集一次数据,共采集三次
[bhps@test ~]$ vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 31135592 183408 976124 0 0 0 0 0 0 0 0 100 0 0
0 0 0 31135592 183408 976124 0 0 0 0 45 41 0 0 100 0 0
0 0 0 31135584 183408 976124 0 0 0 0 37 60 0 0 100 0 0
- procs
- r 等待运行的程序个数
- 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 中断速率
- cs 上下文切换速率
- cpu
- us 用户态cpu使用率
- sy 内核态cpu使用率
- id 空闲cpu比率
- wa 等待cpu比率
- st 被虚拟化偷走的cpu比率
dstat
-
命令概述及格式
概述:一款多功能的用于生成系统资源使用统计数据的工具
命令格式: dstat [-afv] [options…] [delay [count]] -
常用选项
- -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
[bhps@test ~]$ dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
4 1 93 2 0 0|9174B 83k| 0 0 | 0 0 |3683 5226
11 3 72 13 0 1| 0 0 | 10M 19M| 0 0 | 18k 15k
2 1 97 1 0 0| 0 0 |1609k 2670k| 0 0 |3151 2722
2 1 96 1 0 0| 0 124k|1881k 2707k| 0 0 |3968 3045
kill
- 命令概述及格式
概述:关闭进程
命令格式:
kill [-s signal|-p] [–] pid…
kill -l [signal] 显示可用的信号 - 常用信号
信号标识方式有三种:数字标识,完整名称标识和简写名称标识。
- 1)SIGHUP 不关闭进程,重读配置文件
- 2)SIGINT 终止正在运行的进程,相当于Ctrl+c
- 9)SIGKILL 杀死运行中的进程,直接杀死进程,进程不会正常释放占用的句柄
- 15)SIGTERM 终止运行的进程,终止前,进程会正常释放占用句柄
- 18)SIGCONT 如果进程被停止了,会继续运行
- 19)SIGSTOP 停止进程
shell编程until和while的基本用法
while命令
- 命令格式
while CONDITION;do
循环体
循环变量修正表达式
done
当CONDITION为真时,执行循环
当CONDITION为假时,退出循环 - 命令使用
i.e.使用while分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"
#!/bin/bash
let count=1
while [ $count -lt 255 ];do
temp_ip="192.168.0.$count"
ping -w 3 -c 3 -q $temp_ip &> /dev/null
[ $? -eq 0 ] && echo "Success to ping $temp_ip"|| echo "Fail to ping $temp_ip"
let count++
done
echo "Complete"
[bhps@test ~]$ sh test.sh
Fail to ping 192.168.0.1
Fail to ping 192.168.0.2
Fail to ping 192.168.0.3
until命令
- 命令格式
until CONDITION;do
循环体
循环控制变量修正表达式
done
当CONDITION为假时,执行循环
当CONDITION为真时,退出循环 - 命令使用
i.e.使用until分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"
#!/bin/bash
let count=1
until [ $count -ge 255 ];do
temp_ip="192.168.0.$count"
ping -w 3 -c 3 -q $temp_ip &> /dev/null
[ $? -eq 0 ] && echo "Success to ping $temp_ip"|| echo "Fail to ping $temp_ip"
let count++
done
echo "Complete"
[bhps@test ~]$ sh test.sh
Fail to ping 192.168.0.1
Fail to ping 192.168.0.2
Fail to ping 192.168.0.3