您的位置:首页 > 理论基础 > 计算机网络

OSI七层模型和TCP/IP五层模型详解及ip route家族命令使用

2018-10-10 20:22 411 查看

1、简述osi七层模型和TCP/IP五层模型
OSI七层模型
简述:(从下往上)
物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚。————(数据形式:比特流)

数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。————(数据形式:数据帧)

网络层:提供逻辑地址,供路由器确定路径。 ————(数据形式:数据包)

传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测。————(数据形式:数据段)

会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。

表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。

应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务。

TCP/IP五层模型:

数据的封装过程:
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段 );
数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);
数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);
最后,帧被转换为比特,通过网络介质传输

OSI七层模型和TCP/IP五层模型的对应关系

2、简述iproute家族命令
ip命令是Linux系统下一款强大的网络配置工具,常用于显示或配置主机路由、网络设备、隧道的设置。

ip命令的使用

1、命令格式
ip [ OPTIONS ] OBJECT { COMMAND | help }
2、通用选项
-r:显示主机的时候,不使用ip地址,尝试使用主句的域名显示;
-s:显示更详细的信息;

3、ip命令的作用对象OBJECT
由于ip命令支持的对象有很多,这里不一一介绍了,其常用的作用对象包括:link、addr、route等等。

link
常见命令:
set:设置接口属性

ip link set DEVICE {up|down}:启用或禁用接口;
ip link set DEVICE promisc {on|off}:启用或禁用接口的混杂模式;
ip link set DEVICE name NEWNAME:设置接口使用的新名字;
show:显示接口状态,如启用的特性、mac地址等等;

ip link show [DEVICE]
addr
常用命令:
add:添加地址
del:删除地址

ip addr {add|del} ADDRESS/NETMASK dev DEVICE
show:显示该网卡的所有地址信息

ip addr show [dev NAME]
flush:清除协议地址

ip addr flush [dev NAME]
route
常用命令:
list|show:显示路由信息;

ip route list|show
add:添加路由;

ip route add DESTINATION via GATEWAY [dev NAME]
del:删除路由;

ip route del DESTINATON

使用实例

为指定接口设置新的名字
[root@localhost ~]# ip link set eno33554984 down   #在更改接口名字前需先将接口关闭
[root@localhost ~]# ip link set eno33554984 name link-to-wan
[root@localhost ~]# ip link list link-to-wan  #显示指定的接口信息
3: link-to-wan: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:21:59:c3 brd ff:ff:ff:ff:ff:ff
为指定接口添加新的IP地址
[root@localhost ~]# ip addr add 188.88.88.234/24 dev link-to-wan
[root@localhost ~]# ip addr show link-to-wan        #显示指定接口的地址信息
3: link-to-wan: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:0c:29:21:59:c3 brd ff:ff:ff:ff:ff:ff
    inet 188.88.88.234/24 scope global link-to-wan
       valid_lft forever preferred_lft forever
显示路由条目
[root@localhost ~]# ip route list
default via 192.168.0.1 dev eno16777736  proto static  metric 100 
192.168.0.0/24 dev eno16777736  proto kernel  scope link  src 192.168.0.188  metric 100 
192.168.0.0/24 dev eno16777736  proto kernel  scope link  src 192.168.0.188  metric 101 
添加路由
[root@localhost ~]# ip route add 10.1.1.0/24 via 192.168.0.1 dev eno16777736
[root@localhost ~]# ip route list
default via 192.168.0.1 dev eno16777736  proto static  metric 100 
10.1.1.0/24 via 192.168.0.1 dev eno16777736 
192.168.0.0/24 dev eno16777736  proto kernel  scope link  src 192.168.0.188  metric 100 
192.168.0.0/24 dev eno16777736  proto kernel  scope link  src 192.168.0.188  metric 101 
设置默认路由:
[root@localhost ~]#ip route add default via 192.168.0.1

查看邻居表
[root@localhost ~]# ip neigh list
188.88.88.39 dev eno16777736 lladdr e4:a4:71:8b:bc:08 REACHABLE
188.88.88.1 dev eno16777736 lladdr 90:6c:ac:56:be:ca STALE
3、详细说明进行管理工具htop、vmstat等相关命令,并举例 
htop命令
选项:
    
-d #:指定延迟时间间隔;
    
-u UserName:仅显示指定用户的进程;
    
-s COLUME:以指定字段进行排序;

子命令:
    
l:列出选定的进程所占用的文件列表;(需要lsof命令)
    
s:跟踪选定的进程的系统调用;(需要trace命令)
    
t:以层级关系显示各进程状态;
    
a:将选定的进程绑定至指定的CPU核心;

[root@localhost ~]# htop


[root@localhost ~]# htop 

  Avg[*                            0.3%]
  1  [*                            0.7%]   Tasks: 35, 19 thr; 1 running
  2  [                             0.0%]   Load average: 0.00 0.01 0.05 
  Mem[||||||||||||||||||||||2.65G/3.70G]   Uptime: 16 days, 10:29:46
  Swp[                         0K/1.50G]   Time: 19:56:24
                                           Avg[*                            0.3%]
  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                 
28006 root       20   0  119M  2180  1488 R  0.0  0.1  0:00.13 htop                    
  885 root       20   0  560M 17004  6016 S  0.0  0.4  3:29.15 /usr/bin/python -Es /usr
14617 root       20   0  218M  5068  3212 S  0.0  0.1  0:50.76 /usr/sbin/httpd -DFOREGR
    1 root       20   0  132M  6568  4120 S  0.0  0.2  5:29.28 /usr/lib/systemd/systemd
  355 root       20   0 40204  8300  7916 S  0.0  0.2  0:20.54 /usr/lib/systemd/systemd
  380 root       20   0 47040  4624  2804 S  0.0  0.1  0:00.96 /usr/lib/systemd/systemd
  504 root       16  -4 55508   896   492 S  0.0  0.0  0:00.48 /sbin/auditd
  503 root       16  -4 55508   896   492 S  0.0  0.0  0:03.65 /sbin/auditd
  529 root       20   0 21668  1292   976 S  0.0  0.0  1:22.94 /usr/sbin/irqbalance --f
  542 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:00.00 /usr/lib/polkit-1/polkit
  544 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:04.18 /usr/lib/polkit-1/polkit
  552 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:00.00 /usr/lib/polkit-1/polkit
  553 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:00.00 /usr/lib/polkit-1/polkit
  554 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:00.00 /usr/lib/polkit-1/polkit
  530 polkitd    20   0  526M 11944  4920 S  0.0  0.3  0:06.97 /usr/lib/polkit-1/polkit
  543 dbus       20   0 66428  2596  1892 S  0.0  0.1  0:00.00 /usr/bin/dbus-daemon --s
  534 dbus       20   0 66428  2596  1892 S  0.0  0.1  0:29.93 /usr/bin/dbus-daemon --s
  545 root       20   0 26516  1940  1472 S  0.0  0.0  0:24.61 /usr/lib/systemd/systemd
  546 root       20   0  123M  1728  1056 S  0.0  0.0  0:17.93 /usr/sbin/crond -n
  550 root       20   0 96532  2460  1788 S  0.0  0.1  0:00.24 login -- root
  590 root       20   0  615M  9468  6968 S  0.0  0.2  0:32.70 /usr/sbin/NetworkManager
  592 root       20   0  615M  9468  6968 S  0.0  0.2  0:03.54 /usr/sbin/NetworkManager
  576 root       20   0  615M  9468  6968 S  0.0  0.2  0:40.25 /usr/sbin/NetworkManager
 1998 root       20   0  560M 17004  6016 S  0.0  0.4  0:00.00 /usr/bin/python -Es /usr
 1999 root       20   0  560M 17004  6016 S  0.0  0.4  3:26.77 /usr/bin/python -Es /usr
 2009 root       20   0  560M 17004  6016 S  0.0  0.4  0:01.85 /usr/bin/python -Es /usr
 2130 root       20   0  560M 17004  6016 S  0.0  0.4  0:00.00 /usr/bin/python -Es /usr
  886 root       20   0  110M  4324  3300 S  0.0  0.1  0:01.41 /usr/sbin/sshd -D
  907 root       20   0  211M  8068  7136 S  0.0  0.2  1:39.22 /usr/sbin/rsyslogd -n
  908 root       20   0  211M  8068  7136 S  0.0  0.2  0:00.84 /usr/sbin/rsyslogd -n
  888 root       20   0  211M  8068  7136 S  0.0  0.2  1:40.43 /usr/sbin/rsyslogd -n
 1439 named      20   0  235M 58932  3172 S  0.0  1.5  0:00.07 /usr/sbin/named -u named
 1440 named      20   0  235M 58932  3172 S  0.0  1.5  0:00.41 /usr/sbin/named -u named
 1441 named      20   0  235M 58932  3172 S  0.0  1.5  0:00.00 /usr/sbin/named -u named
F1Help  F2Setup F3SearchF4FilterF5Tree  F6SortByF7Nice -F8Nice +F9Kill  F10Quit   
    
vmstat命令:
            - Report virtual memory statistics
            
            vmstat  [options]  [delay [count]]
                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
                    sy:system
                    id:idle
                    wa:wait 
                    st: stolen
[root@localhost ~]# vmstat 
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 219688   4172 949876    0    0     0     0   12   10  0  0 100  0  0
[root@localhost ~]# 
            选项:
                -s:显示内存统计数据;        
[root@localhost ~]# vmstat 
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 219688   4172 949876    0    0     0     0   12   10  0  0 100  0  0
[root@localhost ~]# vmstat -s
      3881340 K total memory
      2707640 K used memory
       466892 K active memory
       434476 K inactive memory
       219652 K free memory
         4172 K buffer memory
       949876 K swap cache
      1572860 K total swap
            0 K used swap
      1572860 K free swap
        62767 non-nice user cpu ticks
          639 nice user cpu ticks
        84803 system cpu ticks
    283782100 idle cpu ticks
         9580 IO-wait cpu ticks
            0 IRQ cpu ticks
          616 softirq cpu ticks
            0 stolen cpu ticks
       239192 pages paged in
      1155486 pages paged out
            0 pages swapped in
            0 pages swapped out
     32774851 interrupts
     28955442 CPU context switches
   1533777997 boot time
       676506 forks
[root@localhost ~]# 

dstat
    1. 命令概述及格式 概述:一款多功能的用于生成系统资源使用统计数据的工具 命令格式: dstat [-afv] [options…] [delay [count]]
    2. 常用选项
    • -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
[root@localhost ~]#  dstat 
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  0   0 100   0   0   0| 172B  830B|   0     0 |   0     0 |  23    20 
  0   0 100   0   0   0|   0     0 | 428B  374B|   0     0 |  52    38 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  39    32 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  19    15 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  36    30 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  45    37 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  36    30 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  30    25 
  0   0 100   0   0   0|   0     0 |  60B  214B|   0     0 |  32    30 

kill
    1. 命令概述及格式 概述:关闭进程 命令格式: kill [-s signal|-p] [–] pid… kill -l [signal] 显示可用的信号
    2. 常用信号 信号标识方式有三种:数字标识,完整名称标识和简写名称标识。
    • 1)SIGHUP 不关闭进程,重读配置文件
    • 2)SIGINT 终止正在运行的进程,相当于Ctrl+c
    • 9)SIGKILL 杀死运行中的进程,直接杀死进程,进程不会正常释放占用的句柄
    • 15)SIGTERM 终止运行的进程,终止前,进程会正常释放占用句柄
    • 18)SIGCONT 如果进程被停止了,会继续运行
    • 19)SIGSTOP 停止进程


4、使用until和while分别实现192.168.0.0/24网段内, 地址是否能够ping通,若ping通则输出”success!”,若ping不通则输出”fail!”

while方式

[root@localhost ~]# vi ping.sh 
#!/bin/bash
#
declare -i i=1
while [ $i -le 254 ];do
    ping -c 2 192.168.0.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "success!"
    else
        echo "fail!"
    fi
    let i++
done

until方式:

[root@localhost ~]# vi ping1.sh 
#!/bin/bash
#

declare -i i=1
until [ $i -gt 254 ];do
    ping -c 2 192.168.0.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "success!"
    else
        echo "fail!"
    fi
    let i++
done
[root@localhost ~]# 
 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: