linux网络和进程管理简述
OSI七层模型和TCP/IP模型简述
OSI模型
OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。该模型共有7层,实际应用以TCP/IP模型为主,而OSI模型层级分明,便于学习理解。
OSI各层级结构简述:
物理层(Physical Layer)
物理层是OSI分层结构体系中最重要、最基础的一层,它建立在传输媒介基础上,起建立、维护和取消物理连接作用,实现设备之间的物理接口。物理层之接收和发送一串比特(bit)流,不考虑信息的意义和信息结构。
数据链路层(Data Link Layer)
在物理层提供比特流服务的基础上,将比特信息封装成数据帧Frame,起到在物理层上建立、撤销、标识逻辑链接和链路复用以及差错校验等功能。通过使用接收系统的硬件地址或物理地址来寻址。建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,同时为其上面的网络层提供有效的服务。
网络层(Network Layer)
网络层也称通信子网层,是高层协议之间的界面层,用于控制通信子网的操作,是通信子网与资源子网的接口。在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。
传输层(Transport Layer)
传输层建立在网络层和会话层之间,实质上它是网络体系结构中高低层之间衔接的一个接口层。用一个寻址机制来标识一个特定的应用程序(端口号)。传输层不仅是一个单独的结构层,它还是整个分层体系协议的核心,没有传输层整个分层协议就没有意义。
会话层(Session Layer)
在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
表示层(Presentation Layer)
表示层向上对应用层提供服务,向下接收来自会话层的服务。表示层是为在应用过程之间传送的信息提供表示方法的服务,它关心的只是发出信息的语法与语义。表示层要完成某些特定的功能,主要有不同数据编码格式的转换,提供数据压缩、解压缩服务,对数据进行加密、解密。例如图像格式的显示,就是由位于表示层的协议来支持。
应用层(Application Layer)
网络应用层是通信用户之间的窗口,为用户提供网络管理、文件传输、事务处理等服务。其中包含了若干个独立的、用户通用的服务协议模块。网络应用层是OSI的最高层,为网络用户之间的通信提供专用的程序。
TCP/IP模型
TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。
模型比较:
共同点:
(1)OSI参考模型和TCP/IP参考模型都采用了层次结构的概念。
(2)都能够提供面向连接和无连接两种通信服务机制。
不同点:
(1)OSI采用的七层模型,而TCP/IP是四层结构。
(2)TCP/IP参考模型的网络接口层实际上并没有真正的定义,只是一些概念性的描述。而OSI参考模型不仅分了两层,而且每一层的功能都很详尽,甚至在数据链路层又分出一个介质访问子层,专门解决局域网的共享介质问题。
(3)OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。
(4)OSI参考模型与TCP/IP参考模型的传输层功能基本相似,都是负责为用户提供真正的端对端的通信服务,也对高层屏蔽了底层网络的实现细节。所不同的是TCP/IP参考模型的传输层是建立在网络互联层基础之上的,而网络互联层只提供无连接的网络服务,所以面向连接的功能完全在TCP协议中实现,当然TCP/IP的传输层还提供无连接的服务,如UDP;相反OSI参考模型的传输层是建立在网络层基础之上的,网络层既提供面向连接的服务,又提供无连接的服务,但传输层只提供面向连接的服务。
(5)OSI参考模型的抽象能力高,适合与描述各种网络;而TCP/IP是先有了协议,才制定TCP/IP模型的。
(6)OSI参考模型的概念划分清晰,但过于复杂;而TCP/IP参考模型在服务、接口和协议的 区别上不清楚,功能描述和实现细节混在一起。
(7)TCP/IP参考模型的网络接口层并不是真正的一层;OSI参考模型的缺点是层次过多,划分意义不大但增加了复杂性。
(8)OSI参考模型虽然被看好,由于没把握好时机,技术不成熟,实现困难;相反,TCP/IP参考模型虽然有许多不尽人意的地方,但还是比较成功的。
iproute家族命令
iproute是linux下的网络配置工具,用来实现对路由表,路由策略,网卡设备以及网络信道的管理和查看操作。其家族命令有ip,address,route以及ss等常用操作。
ip命令
用来查看管理路由,设备,策略路由以及信道等信息。
使用方法:ip OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
ip link 配置网络设备
ip link set 用来设置以下选项:
dev NAME (default):指明要管理的设备,dev关键字可省略;
up和down:
multicast on或multicast off:启用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:设置MTU的大小,默认为1500;
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;
[root@localhost ~]# ip link set dev eno16777736 up 开启指定的网卡
[root@localhost ~]# ip link set dev eno16777736 name eth0 修改网卡名称
ip link show 显示网卡属性
ip netns 管理网络命名空间
ip netns help查看帮助。
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
ip address 命令
用来管理网络接口的IP地址,可以给指定接口分配多个IP地址。
ip address add/delete 添加或删除IP地址
ip address show 查看配置的IP地址
ip address flush 清空某接口的配置的所有IP地址
示例:
# ip addr add 192.168.1.176/24 dev eth0
# ip addr add 192.168.1.177/24 dev eth0
# ip addr list 可以看到上面配置的eth0有两个IP
ip route命令
用来管理本地的路由表。
用法:
ip route add - add new route
ip route change - change route
ip route replace - change or add new one
ip route show - list routes
ip route flush - flush routing tables清空路由表
ip route get - get a single route查看某个单条路由
示例:
删除默认路由 添加路由信息ss命令
网络状态查看工具,类似netstat
ss [options] [ FILTER ]
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FILTER := [ state STATE-FILTER ] [ EXPRESSION ] 过滤器
常用组合:-tan,-tanl,-tanlp,-uan
示例:
查看所有的TCP连接并以数字显示 分别以指定状态的形式或者指定端口的形式查看所有的TCP连接状态进程管理工具
linux拥有众多的进程监控和管理的工具,包括pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup, nice, renice, killall等工具。
进程查看工具:
pstree 查看进程树
ps 查看当前进程状态,常用组合aux,-ef,-eFH,-eo,axo
top命令:动态查看进程信息
%CPU说明:
us:用户空间进程占比
sy:内核空间占比,二者比例7:3
ni:nice时间
id:空闲
wa:等待IO完成的时间
hi:硬件中断处理
si:软件中断处理所占比
st:虚拟化程序占用CPU百分比
排序:
P:以占据CPU百分比排序;
M:以占据内存百分比排序;
T:累积占用CPU时间排序;
进程管理类命令:
htop命令:类似top的一个工具,比top功能更强大,更人性化。
htop工具运行界面选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
在打开界面中执行的部分命令,按F1查看帮助:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;F5亦可
a:将选定的进程绑定至某指定的CPU核心;
vmstat命令:报告虚拟内存的统计数据
输出内容说明:
procs:即process,显示running和blocking状态的进程个数
memory:物理内存使用情况
swap:交换分区使用情况
io:数据块的写入和读出速率
system:系统相关的速率信息
cpu:各种情形下的CPU利用率
glances 跨平台监控工具
h命令获取帮助常用命令:
-b:以Byte为单位显示网上数据速率;
-d:关闭磁盘I/O模块;
-m:关闭mount模块;
-n:关闭network模块;
-t #:刷新时间间隔;
-1:每个cpu的相关数据单独显示;
-o {HTML|CSV}:输出格式;
-f /PATH/TO/SOMEDIR:设定输出文件的保存目录
dstat命令:
一款多功能的工具,用来生成对系统资源的统计信息。
常用选项:
-c, --cpu:显示cpu相关信息;
-d, --disk:显示磁盘的相关信息
-g:显示page相关的速率数据;
-m:Memory的相关统计数据
-n:Interface的相关统计数据;
-p:显示process的相关统计数据;
-r:显示io请求的相关的统计数据;
-s:显示swapped的相关统计数据;
until和while循环使用举例
使用until和while分别实现192.168.1.0/24网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"。
说明:上述网段有效地址范围是192.168.1.1-254,用while控制外层循环,测试ping的结果,在用选择执行输出两种结果。
while实现 测试结果 until实现 测试结果