码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 网络基础及条件语句

时间:2018-09-24 17:48:57      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:获取   nod   lis   any   recv   最大的   帮助   value   主机   

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

  • OSI 七层模型
    OSI(Open System Interconnection Reference Model,开放系统互连参考模型)体系结构是第一个标准化的计算机网络体系,它是针对广域网(也就是不同网络之间的通信)进行设计的,将整个网络通信的功能划分为七个层次,由低到高分别为物理层(Physical Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)
    OSI七层模型中低四层(从物理层到传输层)定义了如何进行端到端的数据传输,也就是定义了如何通过网卡、物理电缆、交换机和路由器进行数据传输;而高三层(从会话层到应用层)定义了终端系统的应用程序和用户如何彼此通信,也即定义了如何重建从发送方到目的方的应用程序数据流。更多的是把OSI的七层结构分为低三层和高三层的,低三层负责创建网络通信所需的网络连接(面向网络),属于“通信子网”部分,高四层具体负责端到端的用户数据通信(面向用户),属于“资源子网”部分。OSI结构中各层功能如下图:

    技术分享图片

    TCP/IP 五层模型
    TCP/IP协议体系结构(又称TCP/IP协议参考模型)是专门针对使用TCP/IP协议簇的广域计算机网络而开发的,可以说是OSI的改进版本。但绝不能简单地认为是改进版,因为它与OSI参考模型所针对的网络类型存在较大区别,所以这两种体系结构中各层所采用的通信协议,以及功能实现原理上都存在非常大的差异。
    TCP/IP协议体系结构只划分了四层,从高到低分别是:应用层(Apllication Layer)、传输层(Transport Layer)、网际互连层(Internet Layer,又称互联网层)和网络访问层(Network Access Layer,又称网络接入层、网络接口层或者主机-网络层)。总体而言,TCP/IP协议体系结构更加精简,更有利于网络系统的设计,但是其中网络访问层本身并不是实际的一层,包括了OSI的物理层和数据链路层这两层的功能,把它们合并其实并不合理,所以推出TCP/IP五层网络体系结构,它是最为科学以及合理的,它综合了OSI七层模型和TCP/IP四层模型这两种体系结构的优点,同时克服了这两种体系结构的不足,如下图所示:

    技术分享图片

    • 2、简述iproute家族命令

    iproute家族:

    • ip命令:

      show / manipulate routing, devices, policy routing and tunnels
      ip [ OPTIONS ] OBJECT { COMMAND | help }
          OBJECT := { link | addr | route | netns  }
          注意: OBJECT可简写,各OBJECT的子命令也可简写;
          ```
          ip  OBJECT:
              ip link: network device configuration
                  ip  link  set - change device attributes
                      dev NAME (default):指明要管理的设备,dev关键字可省略;
                      up和down:
                      multicast on或multicast off:启用或禁用多播功能;
                      name NAME:重命名接口
                      mtu NUMBER:设置MTU的大小,默认为1500;
                      netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;
              ip  link  show  - display device attributes
              ip  link  help -  显示简要使用帮助;
              ip netns:  - manage network namespaces.
              ip  netns  list:列出所有的netns
              ip  netns  add  NAME:创建指定的netns
              ip  netns  del  NAME:删除指定的netns
              ip  netns   exec  NAME  COMMAND:在指定的netns中运行命令
              ip address - protocol address management.
                  ip address add - add new protocol address
                      ip  addr  add  IFADDR  dev  IFACE
                          [label NAME]:为额外添加的地址指明接口别名;
                          [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
                          [scope SCOPE_VALUE]:
                              global:全局可用;
                              link:接口可用;
                              host:仅本机可用;                                         
                  ip address delete - delete protocol address
                      ip addr  delete  IFADDR  dev  IFACE         
                  ip address show - look at protocol addresses
                      ip  addr   list  [IFACE]:显示接口的地址;
                  ip address flush - flush protocol addresses
                      ip  addr  flush  dev  IFACE
              ip route - routing table management
                  ip route add - add new route
                  ip route change - change route
                  ip route replace - change or add new one
                      ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP] 
                  ip route delete - delete route
                      ip  route  del  TYPE PRIFIX 
                  ip route show - list routes
                      TYPE PRIFIX  
                  ip route flush - flush routing tables
                      TYPE  PRIFIX
                  ip route get - get a single route
                      ip  route  get  TYPE PRIFIX
    • ss命令:

          ss  [options]  [ FILTER ]
              选项:
                  -t:TCP协议的相关连接
                  -u:UDP相关的连接
                  -w:raw socket相关的连接
                  -l:监听状态的连接
                  -a:所有状态的连接
                  -n:数字格式
                  -p:相关的程序及其PID
                  -e:扩展格式信息
                  -m:内存用量
                  -o:计时器信息
      
              FILTER := [ state TCP-STATE ]  [ EXPRESSION ]

    示例:

                [root@node1 ~]# ss -tan ‘( dport = :22 or sport = :22 )‘
    State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
    LISTEN     0      128                      *:22                                   *:*                  
    ESTAB      0      0            192.168.10.10:22                        192.168.10.1:50779              
    ESTAB      0      0            192.168.10.10:22                        192.168.10.1:54761              
    LISTEN     0      128                     :::22                                  :::*              
                                [root@node1 ~]# ss  -tan  state  ESTABLISHED
    Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
    0      52                192.168.10.10:22                             192.168.10.1:50779              
    0      0                 192.168.10.10:22                             192.168.10.1:54761   
    配置文件:
        IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
            IFACE:接口名称;
        路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
    
        配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
    
            ifcfg-IFACE配置文件参数:
                DEVICE:此配置文件对应的设备的名称;
                ONBOOT:在系统引导过程中,是否激活此接口;
                UUID:此设备的惟一标识;
                IPV6INIT:是否初始化IPv6;
                BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;
                TYPE:接口类型,常见的有Ethernet, Bridge;
                DNS1:第一DNS服务器指向;
                DNS2:备用DNS服务器指向;
                DOMAIN:DNS搜索域;
                IPADDR: IP地址;
                NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码;
                GATEWAY:默认网关;
                USERCTL:是否允许普通用户控制此设备;
                PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许;
                HWADDR:设备的MAC地址;
                NM_CONTROLLED:是否使用NetworkManager服务来控制接口;
    
            网络服务:
                network
                NetworkManager 
    
                管理网络服务:
                    CentOS 6:  service  SERVICE  {start|stop|restart|status}
                    CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]
    
                配置文件修改之后,如果要生效,需要重启网络服务;
                    CentOS 6:# service  network  restart
                    CentOS 7:# systemctl  restart  network.service
    
        用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE
            支持两种配置方式,但不可混用;
                (1) 每行一个路由条目:
                    TARGET  via  GW
    
                (2) 每三行一个路由条目:
                    ADDRESS#=TARGET
                    NETMASK#=MASK
                    GATEWAY#=NEXTHOP
    
    给接口配置多个地址:
        ip addr之外,ifconfig或配置文件都可以;
        (1) ifconfig  IFACE_LABEL  IPADDR/NETMASK
            IFACE_LABEL: eth0:0, eth0:1, ...
        (2) 为别名添加配置文件;
            DEVICE=IFACE_LABEL
            BOOTPROTO:网上别名不支持动态获取地址;
                static, none
    nmcli命令:
        nmcli  [ OPTIONS ] OBJECT { COMMAND | help }
            device - show and manage network interfaces
                COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
            connection - start, stop, and manage network connections
                COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
                modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
                如何修改IP地址等属性:
                    # nmcli  conn  modify  IFACE  [+|-]setting.property  value
                        ipv4.address
                        ipv4.gateway
                        ipv4.dns1
                        ipv4.method
    • 2、 详细说明进行管理工具htop、vmstat等相关命令,并举例

      htop命令:
      选项:
      -d #:指定延迟时间间隔;
      -u UserName:仅显示指定用户的进程;
      -s COLUME:以指定字段进行排序;
      子命令:
      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)
        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

    选项:
    -s:显示内存统计数据;

    示例:

    [root@node1 ~]# 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 855264   2108 257940    0    0    80    17   66   67  0  0 99  1  0
    [root@node1 ~]# vmstat -s
          1237288 K total memory
           122208 K used memory
           161724 K active memory
           101396 K inactive memory
           855000 K free memory
             2108 K buffer memory
           257972 K swap cache
          2097148 K total swap
                0 K used swap
          2097148 K free swap
              280 non-nice user cpu ticks
                0 nice user cpu ticks
              633 system cpu ticks
           239275 idle cpu ticks
             1606 IO-wait cpu ticks
                0 IRQ cpu ticks
               38 softirq cpu ticks
                0 stolen cpu ticks
           190868 pages paged in
            40644 pages paged out
                0 pages swapped in
                0 pages swapped out
           156772 interrupts
           161220 CPU context switches
       1537771118 boot time
             2113 forks

    pmap命令:

    • report memory map of a process
      pmap [options] pid [...]
      -x:显示详细格式的信息;

          另一种查看方式:cat  /proc/PID/maps

    glances命令:

    • A cross-platform curses-based monitoring tool
      内建命令:
      常用选项:
      -b:以Byte为单位显示网上数据速率;
      -d:关闭磁盘I/O模块;
      -m:关闭mount模块;
      -n:关闭network模块;
      -t #:刷新时间间隔;
      -1:每个cpu的相关数据单独显示;
      -o {HTML|CSV}:输出格式;
      -f /PATH/TO/SOMEDIR:设定输出文件的位置;
      示例:
      glances –b
      技术分享图片

    glances –1

    技术分享图片

    dstat命令:

            - versatile tool for generating system resource statistics
            dstat [-afv] [options..] [delay [count]]
            常用选项:
                -c, --cpu:显示cpu相关信息;
                    -C #,#,...,total
                -d, --disk:显示磁盘的相关信息
                    -D sda,sdb,...,tobal
                -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:延迟最大的进程;

    示例:

    [root@node1 ~]# dstat 
    You did not select any stats, using -cdngy by default.
    ----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  99   0   0   0|  70k  202k|   0     0 |   0     0 | 116   104 
      0   0 100   0   0   0|   0     0 |  60B  890B|   0     0 |  98    90 
      1   0 100   0   0   0|   0     0 | 120B  422B|   0     0 |  86    75 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 | 106    97 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  92    85 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 | 100    95 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  85    78 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  86    83 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  81    73 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  97    90 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  83    75 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  85    80 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  85    77 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  97    91 
      0   0 100   0   0   0|   0  1488k|  60B  362B|   0     0 | 109    83 
      0   0 100   0   0   0|   0     0 |  60B  362B|   0     0 |  85    78 
      0   0 100   0   0   0|   0     0

    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
    • 4、使用until和while分别实现192.168.0.0/24 网段内,地址是否能够ping通,弱ping通则输出"success!",若ping不通则输出"fail!"

    While 语句

    [root@node1 ~]# cat while.sh 
    #!/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.$1 is alive."
             else
                     echo "host 192.168.0.$1 is down."
             fi
             let i++
    done
    [root@node1 ~]# bash while.sh 
    host 192.168.0. is down.
    host 192.168.0. is down.
    host 192.168.0. is down.
    host 192.168.0. is down.
    host 192.168.0. is down.

    Until 语句

    [root@node1 ~]# cat until.sh 
    #!/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.$1 is alive."
             else
                     echo "host 192.168.0.$1 is down."
             fi
             let i++
    done
    [root@node1 ~]# bash until.sh 
    host 192.168.0. is down.
    host 192.168.0. is down.
    host 192.168.0. is down.

    Linux 网络基础及条件语句

    标签:获取   nod   lis   any   recv   最大的   帮助   value   主机   

    原文地址:http://blog.51cto.com/13929964/2282657

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!