第六周 "1、简述osi七层模型和TCP/IP五层模型
1.1 OSI七层模型
全称:open system Internetconnection(开放系统互联)
由ISO国际标准化组织定义
目的:规范网络环境,实现软硬件兼容
内容:共分为七层,自上而下分别为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
应用层:应用程序及接口
表示层:对数据进行转换,加密、压缩
会话层:维持不同应用程序的数据分离
传输层:提供可靠的端到端的报文传输和差错控制
网络层:将分组从源端到目的端,提供路由选择
数据链路层:将分组数据封装成帧,提供节点到节点的方式传输
物理层:在媒体上传输比特,提供电气和机械的规约
举例:小明和小红需要通过QQ传输一段视频
应用层:QQ这个软件
表示层:对传输的视频进行压缩加密
会话层:打开一个qq窗口
传输层:断点续传,保证数据端到端的传递
网络层:路由选择,传递数据和选路
数据链路层:交换机 节点到节点 MAC
特点:上层依赖于下层,下层为上层提供服务
1.2TCP/IP五层协议
TCP/IP的应用层相当于OSI七层协议的应用层、表示层、会话层,其他各层一一对应,在每一层工作者不同的设备,如网络层工作着路由器,数据链路层工作着交换机;每一层的协议也不通。
应用层:为应用软件提供接口,使应用程序能够使用网络服务
常见的应用层协议:
--http(80)、https(443)、dns(53)
-ftp(20/21) -smtp(25) -pop3(110) -telnet
传输层(TCP/UDP)
2、简述iproute家族命令
静态配置地址的方法有一下几种方式:
(1)ifconfig (2)ip命令 (3)GUI工具 (4)TUI工具 (5)编辑配置文件
2.1ifconfig[Interface] -a:包括未激活状态的所有接口
启用或者禁用:ifconfig IFNAME up|down 也可以是启用:ifup IFNAME 禁用:ifdown IFNAME
设置IP地址:ifconfig IFNAME IP/Netmask [up] 或者:ifconfig IFNAME IP netmask Netmask
设定的地址会立即送往内核,因此,会立即生效,但不会永久生效。
2.2通过ip命令来配置网卡IP地址参数
ip [OPTIONS] OBJECT {COMMAND| help}
OBKECT:={link | addr | route}
link:连接接口,如eth0
addr:管理接口上的地址
route:管理路由地址
link有如下子属性:
set:设定接口属性 ip link set DEVICE {up|down}:启用或者关闭接口
promisc{on|off}:是否支持混杂模式:
name NEWNAMW:设定接口使用新名字
show:显示接口状态,例如启用的特性,HWADDR等;
ip link show [DEVICE],显示设备相关信息
addr:管理地址
add:添加地址
del:删除地址
ip addr {add | del} IFNAME dev STRING
show:显示该网卡的所有地址
flush:清除协议地址
route:管理路由
list|show:显示路由
add:添加路由
ip route add DESTINETION via GATEWAY [dev IFNAME]
del:删除路由
ip route del:
2.3路由管理
主机想访问其他网络就必须有网关和相应的路由信息,路由管理主要通过route命令来管理。
2.3.1 查看本机内核路由表:route -n
-n:以数字格式显示地址 route -n
2.3.2 添加路由:新增路由条目,用户告诉本机至某目标网络或主机要经过的下一跳路由
route add [-net|-host] TARGET gw GATEWAY [dev IFNAME]
-net 后面需要跟一个网络地址,表示网络路由
-host后面跟一个主机地址,表示路由地址
2.3.3删除路由:
route del [-net|-host] TARGET gw GATEWAY [dev IFNAME]
注意:所有配置立即发往内核中的协议栈,所以会立即生效;不会永久生效,如果想永久生效就得修改对应的静态路由的配置文件,配置文件可以通过两种方式进行定义。(配置文件路径为 /etc/sysconfig/network-scripts/route-IFNAME)
2.3.4 网络状态探测工具:
netstat -r:显示路由表
-n:numeric,数字显示,不反解ip地址至主机名:
-t:tcp 协议的相关连接
-u:udp协议的相关连接
-l:显示所有处于监听状态(即等待别的进程连接访问)
-a:显示所有连接,对于tcp而言即处于各种状态;
-p:显示相关连接的关联到的进程的名字及PID;
常用组合:-tcp -udp
ss:-t:tcp协议相关连接
-n:数字格式
-u:udp相关的连接
-l:处于监听状态
常用组合:-tnl -unl -tan
3、详细说明进行管理工具htop、vmstat等相关命令,并举例
3.1 ps:显示系统当前进程的运行情况
选项与参数:-A:所有的进程均显示出来,与-e有同样的效果
-a:不与终端相关的进程
-u:与用户相关的进程
x:通常与a参数一起使用,列出较为完整的信息
输出格式:
l:较详细的将该pid的信息列出来
j:工作格式(job format)
-f:做一个较为完整的输出
常见的组合方式:
1、ps -ef 以完整的信息显示所有进程的信息
2、ps aux
3、 ps axo
进程有以下几种状态:
R:running,运行状态;
S:interruptable sleeping,可中断睡眠
D:uninteruptable sleeping,不可中断睡眠
T:stopped
Z:zombie
自定义显示ps axo ,如:只显示pid,command,psr,pri,ni
我们有时还可能只显示指定的进程信息,此时就可以通过pgrep命令来检索,例如查找root用户的进程:pgrep -U root
显示指定命令所启动的进程ID:pidof
语法格式:pidof PROGRAM
3.2 top:动态的持续监控进程的状态
VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存大小
RES:进程实际所占用的内存大小,不包括swap
TIME+:累计使用的CPU时间大小
3.3 uptime:更加简洁地命令,列出当前系统时间,登录时长,登录用户数,以及系统的平均负载
3.4htop:htop是top的增强版命令,系统默认没有安装,需要epel源来进行安装。
htop支持的一些选项:
-d #:延迟时长
-u USERNAME:仅显示指定用户的进程
-s COLUMN:根据指定的字段进行排序
3.5 vmstat:vmstat主要用来动态显示系统资源的使用情况,这些资源包括:磁盘,内存网络cpu等
用法:vmstat【OPTION】【delay【count】】
-s:将一些时间导致的内存变化列出来
-S:后面可以接单位,如K、M取代bytes的容量;
-d:列出磁盘的读写总量统计表
3.6 glances:glances是一款用于Linux、BSD的开源命令行系统监视工具,它使用Python语言开发,能够监视CPU、磁盘、内存、网络流量、文件系统、系统温度等等,功能非常强大。
glances的使用方法及常用选项:
-b:以Byte/s为单位显示网卡设备数据交换速率
-d:关闭磁盘IO的功能模块
-f: /path/to/somefile:设置输出文件的位置及格式
-o{HTML|CSV}
-m:关闭mount功能模块
-n:关闭网络功能模块
-r:关闭进程列表功能模块
-t:指定延时时长,默认3秒
-l:单独显示每颗CPU的相关负载数据信息
glances支持远程模式,即可以在C/S模式工作
Server:以监听模式启动glances:glances -s -B IPADDR,此时的IPADDR表示用于指明监听的本地地址;
Client:以远程模式启动glances,远程连入指定服务器,启动:glances -c IPADDR
-c:用于连入的服务器地址
3.7dstat:dstat是可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat克服了命令的局限并增加了另外的功能,增加了监控项,变得更加灵活。dstat可以很方便的监控系统运行状态并用于基准测试和排除故障。
dstat可以让你实时看到系统的所有资源
--top-cpu:显示最占用CPU的进程
--top-io:显示最消耗io的进程
--top-mem:显示最消耗内存的进程
--tcp:显示tcp套接字相关的数据
3.8 kill:显示当前系统的可用信号,并对进程发送信号
kill -l:可显示当前系统的可用信号
信号可以用完整名称,简写名称和数字序号表示
向进程发送信号:kill [-SIGNAL]PID
killall [-SIGNAL]PROGRAM,这个使用的是进程名称
3.9作业管理
1、对于已经启动并处于运行的作业:使用Ctrl+z
2、对于尚未启动的作业:使用 COMMAND &
作业查看:jobs
作业控制命令:fg(将作业调回前台)bg(将作业调入后台)
kill【%job_num】:终止指定的作业
3.10 调整nice值的方法:
1、对于尚未启动的进程:nice -n N COMMAND:N表示nice。范围是-20~19
2、对于已经启动并在运行的进程:renice -n N PID
注意:ps -l 可以查看进程的优先级及nice值
4、使用until和while分别实现192.168.0.0/24
网段内,地址是否能够ping通,若ping通则输出""success!"",若ping不通则输出""fail!""
4.1使while循环:
declare -i i=0
while [ $i -lt 255 ];do
ping 192.168.0.$i >& /dev/null
if [ $? -eq 0 ];then
echo "192.168.0.$isuccess!"
else
echo "192.168.0.$ifailed!"
fi
let i++
done
4.2使用until循环
declare -i i=0
until [ $i -ge 255 ];do
ping 192.168.0.$i >& /dev/null
if [ $? -eq 0 ];then
echo "192.168.0.$isuccess!"
else
echo "192.168.0.$ifailed!"
fi
let i++
done