第六周--简述osi七层模型和TCP/IP五层模型

目录

一、简述osi七层模型和TCP/IP五层模型

OSI 七层模型:

TCP/IP五层模型

二、简述iproute家族命令

三、详细说明进行管理工具htop、vmstat等相关命令,并举例 

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


一、简述osi七层模型和TCP/IP五层模型

OSI 七层模型:

7、应用层:OSI 参考模型中最靠近用户的一层,为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。

6、表示层:提供各种用于应用层数据的编码和转换功能,确保一个主机的应用层发送的数据能被另一个主机的应用层识别。如果有必要,该层可以提供一种标准的表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。

5、会话层:负责创建、管理和终止表示层实体之间的通信会话。

4、传输层:创建了主机之间的端到端的连接。传输层的作用,是为上层协议提供端到端的可靠的透明的数据传输服务,包括差错控制和流量控制等问题。我们通常说的TCP、UDP就是在这一层。端口号即是这里的“ 端 ”。TCP 协议。UDP 协议。

3、网络层:网络层通过 IP 寻址来创建两个网络节点之间的连接,为源主机的传输层送来的分组,选择合适的路由和交换节点,正确无误的按照 IP 地址传送给目的主机的传输层。就是通常说的 IP 层,使用 IP协议和路由器的路由选择信息。数据传输单位是分组。IP 地址。路由器。IP 协议。

2、数据链路层:将比特组合成字节,再将字节组合成帧,使用数据链路层地址 (以太网使用的是 MAC 地址)来访问介质,并进行差错检测。在物理层提供的服务基础之上,负责在通信的实体之间创建数据链路。传输以帧为单位的数据包。

1、物理层:实际的最终信号的传输是通过物理层实现的。通过物理介质传输0-1 比特流。常用的设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。 传输的单位是比特。

TCP/IP五层模型

二、简述iproute家族命令

使用查看命令:

]# rpm -qi iproute:查看iproute程序包;
]# uname -r:查看内核版本;

其结果是iproute与内核版本一致,因为iproute配置的大多数功能都是直接放置在内核中生效的,必须同内核做密切配合;

1、ip命令:
            show / manipulate routing, devices, policy routing and tunnels(操作路由、设备、策略路由和隧道)

            ip [ OPTIONS ] OBJECT { COMMAND | help }
                OBJECT := { link | addr | route | netns }

                link:网络设备配置;
                        ip link set:改变设备属性;

                            dev

                            NAME(default):指明要管理的设备,dev关键字可省略;
                            up和down:启用和禁用接口;
                            multicast on或multicast off:启用或禁用多播功能;
                            name NAME:重命名接口(先down掉接口,才能改名);
                            mtu NUMBER:设定mtu大小;默认1500字节;
                            txqlen|txqueuelen NUMBER:设定发送队列长度;
                            netns PID:ns为namespace,内核支持名称空间,用于将接口移动到指定的网络名称空间;

                            

例如:
]# ip link set eth1 down:禁用eth1接口;
]# ip link set dev eth1 up:启用eth1接口;
]# ip link set eth1 multicast on:启用eth1接口多播;
]# ip link set eth1 name eno666:把eth1接口重命名为eno666;

          ip link show:显示设备属性(查看二层设备的属性,与IP地址无关);

          ip link list

          

例如:
]# ip link show:类似ifconfig命令;
           qdisc:队列;
           pfifo_fast:队列类型先进先出;
           qlen:队列长度;
           link/ether:MAC地址;
           brd:MAC的广播地址;
]# ip link show:查看二层设备的属性;
]# ip link list:同show功能;
]# ip li l:命令简写;
]# ip li sh:命令简写;

注意:命令可简写,只要是唯一识别的命令; ip link help:显示简要使用帮助;

2、 netns:网络名称空间;

                        ip netns add NETNAMESPACE_NAME:设定网络名称空间名称;
                        ip link set IFACE netns NETNAMESPACE_NAME:把指定接口移动到指定网络名称空间中;
                        ip netns exec  NETNAMESPACE_NAME COMMAND:在网络名称空间中执行命令;

                        ip netns :manage network namespaces
                        ip netns add NAME:创建指定的netns;
                        ip netns del NAME:删除指定的netns;
                        ip netns list:列出所有的netns;
                        ip netns exec NAME COMMAND:在指定的netns中执行命令;

例如:
]# ip netns add mynet:设定网络名称空间为mynet;
]# ip link set eno33554984 netns mynet:把接口移动到网络名称空间为mynet中;
]# ip link show:此时就看不到eno33554984接口了;
]# ip netns exec mynet ip link show:使用exec才能查看网络名称空间为mynet中的接口;

3、addr:协议地址管理

ip address add:添加新的协议地址;
ip addr add IFADDR dev IFACE ,可在一个接口加多个IP地址;同网段IP地址显示为secondary;
       [label NAME]:为额外添加的地址指明接口别名,使用ifconfig就能显示了;
       [broadcast ADDRESS]:广播地址,会根据IP和NETMASK自动计算得到;
       [scope SCOPE_VALUE]:
       SCOPE_VALUE:
       global:全局可用:
       site:
       link:接口可用,仅自己ping自己可以,不用于和其它主机通信;
       host:仅本机可用;

例如:
]# ip ad show:查看接口地址;
]# ifconfig eth1 0:删除eth1的地址;
]# ip addr add 192.168.10.101/24 dev eth1:添加eth1接口地址为192.168.10.101;
]# ip addr show eth1:查看eth1接口地址;
]# ifconfig eth1:查看eth1接口地址;
]# ip addr add 10.0.10.100/8 dev eth1:添加eth1接口第二个IP地址;
]# ifconfig:只能显示接口的第一IP地址;查看多地址可使用ip addr show;
如果想让ifconfig显示一个接口的多个地址,要在设置多地址时,添加标签后,才能显示;
]# ip addr add 10.1.1.10/8 dev eth1 label eth1:0:给eth1第二地址配置label名称为eth:0;

ip address del:删除协议地址;
                            ip addr del IFADDR dev IFACE

例如:
]# ip addr del 10.1.1.10/8 dev eth1:删除eth1接口的地址;

ip address show:查看协议地址;
ip addr list [IFACE]:显示指定接口的地址;

ip address flush:清空所有协议地址(linux可以在一个接口上添加多个地址);
ip addr flush dev IFACE:清空指定接口上所有地址;

例如:
]# ip addr flush dev eth1:删除eth1上的所有地址;

说明:flush和show可以使用模式,查找或删除以什么开头的ip地址的功能;

4、ip route命令:
        routing table management

ip route add:添加路由;
            dev NAME:设置由哪个接口出去;
            via ADDRESS:下一跳地址(gw);
            src ADDRESS:配置一个接口有多个地址时,要指明源地址;

            ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
                ip route add default via GW:添加默认路由;

例如:
]# ip addr add 10.0.10.100/8 dev eth1:添加eth1接口ip地址;
]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1
到达192.168.0.0网络通过eth1接口到达下一跳地址为10.0.0.1出去,注意确保主机在10.0.0.0网络上;
]# ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
通过eth1接口下的10.0.20.100地址,经下一跳10.0.0.1达到192.168.1.0网络,注意确保主机在10.0.0.0网络上;
]# ip route list:查看路由表;
]# ip route add default via 172.18.0.1 dev eth0
添加默认路由,通过eth0接口,经下一跳172.18.0.1地址出去,注意确保主机在172.18.0.0网络上;

ip route change:更改路由;使用格式同ip route add;
ip route replace:替换路由;使用格式同ip route add;

        ip route delete:删除路由条目;
        ip reoute del TYPE PREFIX

例如:
]# ip route del 192.168.1.0/24:删除192.168.1.0这条路由;

ip route show:查看路由表;
            ip route show TYPE PREFIX
               

例如:
~]# ip route show src 172.18.252.23:显示原地址172.18.252.23能到达的路由;

        ip route flush:清空路由表;同show用法;
            ip route flush TYPE PREFIX
              

 例如:
]# ip route flush 10/8:清空10网段的路由;
注意:删除IP地址是大范围时,因为大范围包括小范围有时删不掉

        ip route get:获取指定路由条目;
            ip route get TYPE PREFIX
                    前提是路由表内要有路由条目,否则查询不到;
               

例如:
]# ip route get 10.0.0.0/8:查看到达10.0.0.0的路由从本地哪个端口出去的;

5、ss命令:
            another utility to investigate sockets

ss [options] [ FILTER ]
                选项:
                    -t:查看tcp协议相关的链接;
                    -u:查看udp相关的链接;
                    -w:查看raw socket相关的链接;
                    -l:查看监听状态的链接;
                    -a:查看所有状态的链接;
                    -n:以数字格式显示;
                    -p:查看相关的进程及其PID;
                    -e:查看扩展格式信息;
                    -m:查看内存用量;
                    -o:查看计时器信息;

                FILTER := [ state TCP-STATE ] [ EXPRESSION ]
                    TCP状态过滤功能,讲完后的的内容才会理解此处命令;

                TCP的常见状态:
                    LISTEN:监听;
                    ESTABLISHED:建立的连接;
                    FIN_WAIT_1:发送断开后等待断开确认;
                    FIN_WAIT_2:收到断开后确认断开;
                    SYN_SENT:确认收到断开信号;
                    SYN_RECV:确认
                    CLOSED:

                EXPRESSION:
                    dport:目标端口;
                    sport:源端口;
                        例如:'(dport=:22 or sport=:22'
                            ]# ss -tan state ESTABLISHED:查看tcp连接状态为ESTABLISHED的信息;
                            ]# ss -tan '( dport = :22 or sport = :22 )':查看tcp连接中源端口为22或目标端口为22的信息;
                            ]# ss -tan state ESTABLISHED:仅查看tcp连接中ESTABLISHED状态的信息;

三、详细说明进行管理工具htop、vmstat等相关命令,并举例 

  • htop命令:
    选项:
    -d #:指定延迟时间间隔
    -u UserName:仅显示指定用户的进程
    -s COLUME:以指定字段进行排序
  • htop -u root -d 10
  •  
  • PID:进程ID
  • USER:用户名
  • PRI:优先级
  • NI:nice值
  • VIRT:Size in memory of the total program size
  • RES:所使用的物理内存
  • SHR:共享内存
  • S:进程状态
  • CPU%:cpu使用率
  • MEM%:内存使用率
  • TIME+:消耗的cpu时间
  • COMMADN:有哪些命令执行
    子命令:
    l:显示选定的进程打开的文件列表
    s:跟踪选定的进程的系统调用
    t:以层级关系显示各进程状态
    a:将选定的进程绑定至某指定的cpu核心
  • 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)
    lo
    bi:从块设备读入数据到系统的速度(kb/s)
    bo:保存数据至块设备的速率(kb/s)
    system
    in:interrupts,中断产生的速率;
    cs:context switch上下文切换的速率;进程被内核调来调去的速率
    us:user space
    sy:system
    id:idle空闲的
    wa:wait等待io完成
    st:stolen被虚拟化偷走的
  • 选项:
    -s:显示内存统计数据
    pmap命令:
    -report memory map of a process
  • pmap [options] pid […]
  • -x:显示详细格式的信息;
    另一种查看方式:cat /proc/PID/maps
  • glance命令:
    -A cross-platform curses-based monitoring tool
  • 内建命令:
  • 选项:
    -b:以byte为单位显示网上数据速率;
    -d:关闭磁盘i/o模块
    -m:关闭mount模块
    -n:关闭network
    -t #:刷新时间间隔
    -1:每个cpu的相关数据单独显示
    -o:{HTML|CSY}:输出格式;
    -f:/path/to/somedir:设定输出文件的位置
  • C/S模式下运行glances命令:
    服务模式:
    glances -s -B IPADDR 本机的某地址,用于监听.
    客户端:
    glance -c IPADDR
    IPADDR:是远程服务器地址;
  • dstat命令:
    -verstile tool for generating system resource statistics
    dstat [-afv] [options..] [delay] [count]
  • 常用选项:
    -c,–cpu:显示cpu相关信息
    -d,–disk:显示磁盘相关信息
    -g:显示page相关的速率数据
    -m:memory的相关统计数据
    -n:interface的相关统计数据
    -p:显示process的相关统计数据
    -r:显示io请求的相关的统计数据
    -s:显示swapped的相关统计数据
  • –tcp
    –udp
    –raw
    –socket
    –ipc
    –top-cpu:显示最占用cpu的进程
    –top-io:显示最占用io的进程
    –top-mem:显示最占用内存的进程
    –top-lantency:延迟最大的进程
  • kill命令:
    -terminate a process
    用于向进程发送信号,以实现对进程的管理;
  • 显示当前系统可用信号:
    kill -l [signal]
  • 每个信号的标识方式由三种
    1.信号的数字标识
    2.信号的完整名称
    3.信号的简写名称
    向进程发信号:
    kill [-s signal | -SIGNAL] pid…
  • 常用信号:
    1.SIGHUP:无须关闭进程而让其重读配置文件
    2.SIGINT:终止正在运行的进程,相当于ctrl+c
    9.SIGKILL:杀死运行中的进程
    15.SIGTERM:终止运行中的进程
    18.SIGCONT:
    19.SIGSTOP
    killall命令:
    -kill processes by name
    killall [-SIGNAL] program

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

while

#!/bin/bash
#
declare -i i=1
 
while [ $i -le 254 ];do
        if ping -W 1 -c 1 192.168.0.$1 &> /dev/null;then
                echo "host 192.168.0.$i is alive."
        else
                echo "host 192.168.0.$i is down."
        fi
        let i++
done

until

#!/bin/bash
#
declare -i i=1
 
until [ $i -gt 254 ];do
        if ping -W 1 -c 1 192.168.0.$1 &> /dev/null;then
                echo "host 192.168.0.$i is alive."
        else
                echo "host 192.168.0.$i is down."
        fi
        let i++
done

猜你喜欢

转载自blog.csdn.net/weixin_39924535/article/details/82817485