• 网络模型、IP命令、SS命令介绍


    1. 分层对应关系


    OSI七层模型和TCP/IP五层模型都属于TCP/IP协议栈,而TCP/IP协议栈只有两种传输层协议:TCP、UDP,所以对于Telnet、FTP这些协议,建议称之为承载在TCP之上的协议,对于TFTP、SNMP这些协议,建议称之为承载在UDP之上的协议。

    2. OSI分层描述

    • 物理层(Physical Layer)提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。
    • 数据链路层(Data Link Layer)在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
    • 网络层(Network Layer)控制分组传送系统的操作、路由选择、用户控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
    • 传输层(Transport Layer)提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
    • 会话层(Session Layer)提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。
    • 表达层(Presentation Layer)代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
    • 应用层(Application Layer)提供OSI用户服务。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

    3. ip命令:查看或管理路由、设备、策略路由和隧道

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

    3.1 ip link:查看或更改设备状态

    语法及选项
    ip link show [ DEVICE ]

    dev NAME:查看指定名称的设备,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
    up and down:查看状态。
    

    ip link set [DEVICE]

    dev NAME:指定设备名称,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
    up and down:更改设备的状态为UP或DOWN。
    arp on or arp off:接口是否支持ARP。
    multicast on or multicast off:接口是否支持广播。
    name NAME:改变设备的名称。如果设备是UP的,或者已经配置了一些地址,则不建议使用此操作。
    mtu NUMBER:更改设备的MTU。
    address LLADDRESS:更改接口的MAC地址。
    broadcast LLADDRESS:设置接口的广播地址。
    

    3.2 ip addr命令:管理协议地址

    语法及选项
    ip addr { add | del } IFADDR dev STRING

    dev NAME:指定设备名称
    local ADDRESS (default):为指定设备添加IP地址,采用IP_ADDRESS/PREFIX的方式,这是默认选项,可以忽略local直接输出IP地址/前缀。
    broadcast ADDRESS:指定广播地址
    label NAME:指定别名,可以为eth1:0、eth1:1这类的(除了使用IP命令创建别名,也可以通过创建名字为ifcfg-eth1:0这样的配置文件来配置多个地址)。
    scope SCOPE_VAL:指定地址的生效范围:global、site、link、host。
    

    ip addr del与ip addr add的参数一致。ip addr del的设备名是必需的参数。其余的都是可选的。如果没有给出参数,则删除第一个地址。

    ip addr { show | flush } [ dev STRING ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ]

    dev NAME:查看指定名称的设备,因为这个参数是默认的,所以可以忽略dev直接输出设备名称。
    scope SCOPE_VAL:指定地址的生效范围:global、site、link、host。
    to PREFIX:列出匹配指定前缀的地址。
    label PATTERN:列出label能匹配PATTERN的地址。
    primary and secondary:列出primary或secondary地址。
    

    ip addr flush与ip addr show的参数一致。不同之处在于,ip addr fulsh不会在没有参数的情况下运行。这个命令比较危险,如果配置错误会清除所有地址。

    3.3 ip route命令:对主机的路由进行操作

    语法及选项

    ip route { add | change | replace} ROUTE

    to TYPE PREFIX:添加目的路由的前缀,格式为IP_ADDRESS/PREFIX。如果不输入前缀,则相当于创建主机路由。
    dev NAME:指定下一跳。
    src ADDRESS:当本机访问这个网段的时候,使用的源地址是哪个IP。
    mtu MTU:指定mtu大小。
    

    ip route del和ip route add有一样的参数,但是语义略有不同。如果存在可选属性,ip验证它们是否与要删除的路由的属性一致。如果找不到具有包含指定属性的路由条目,则ip route del将失败。

    ip route { show | flush } ROUTE

    to SELECTOR:要查看的路由,输入IP和前缀。
    dev NAME:查看指定出接口的路由。
    via PREFIX:查看指定下一跳的路由。
    src PREFIX:查看指定源地址的路由。
    type TYPE:查看指定类型的路由。
    

    ip route flush和ip route show有着相同的参数,但是flush不会列出路由,指挥清除。

    ip route netns ROUTE

    ip netns add NAME:创建指定的netns;
    ip netns del NAME:删除指定的netns;
    ip link set IFACE netns NETNAMESPACE_NAME:把指定接口移动到指定网络名称空间中;
    ip netns list:列出所有的netns;
    ip netns exec NAME COMMAND:在指定的netns中执行命令;
    

    4. ss命令:查看socket状态

    语法
    ss [options] [ FILTER ]

    选项

    -n:不解析服务服务名。
    -r:尝试解析地址与端口。
    -a:查看所有socket。
    -l:查看处于listen状态的socket。
    -o:查看计时器信息。
    -e:查看详细的socket信息。
    -m:查看socket内存使用情况。
    -p:查看socket使用的进程。
    -i:查看内部的TCP信息。
    -s:打印汇总统计,该选项不解析从各种来源获取摘要的套接字列表。
    -4:仅查看ipv4的socket信息(alias for -f inet4)。
    -6:仅查看ipv6的socket信息(alias for -f inet6)。
    -0:查看数据包的socket信息(alias for -f link).。
    -t:查看TCP的socket。
    -u:查看UDP的socket。
    -d:查看DCCP的socket。
    -x:查看Unix domain的sockets。
    -f FAMILY:Display  sockets  of type FAMILY,Currently the following families are supported: unix, inet, inet6, link, netlink.
    FILTER := [ state TCP-STATE ] [ EXPRESSION ]:Please take a look at the official documentation  (Debian  package  iproute doc) for details regarding filters.
    

    例如

    [leju_tianbao1@~]$sudo ss -antup
    sudo: ldap_sasl_bind_s(): Can't contact LDAP server
    dNetid  State      Recv-Q Send-Q                        Local Address:Port                          Peer Address:Port 
    udp    ESTAB      0      0                              10.207.0.150:45570                         10.207.0.190:8649   users:(("gmond",1257,3))
    tcp    LISTEN     0      128                                      :::22                                      :::*      users:(("sshd",1219,4))
    tcp    LISTEN     0      128                                       *:22                                       *:*      users:(("sshd",1219,3))
    tcp    ESTAB      0      164                            10.207.0.150:22                           10.207.69.144:11681  users:(("sshd",29779,3),("sshd",29781,3))
    
    [leju_tianbao1@~]$ss -o state established ' ( sport = :22 or dport = :23423 ) ' dst 10.207.69.0/24
    Recv-Q Send-Q                              Local Address:Port                                  Peer Address:Port   
    0      52                                   10.207.0.150:ssh                                  10.207.69.144:11681    timer:(on,438ms,0)
    
    [leju_tianbao1@~]$ss -o state established ' ( sport = :22 ) '
    Recv-Q Send-Q                              Local Address:Port                                  Peer Address:Port   
    0      52                                   10.207.0.150:ssh                                  10.207.69.144:11681    timer:(on,454ms,0)
    
    [leju_tianbao1@~]$ss -o state established '( dport = :ssh or sport = :ssh )'
    Recv-Q Send-Q                              Local Address:Port                                  Peer Address:Port   
    0      52                                   10.207.0.150:ssh                                  10.207.69.144:11681    timer:(on,525ms,0)
    
    
  • 相关阅读:
    单调栈
    ROS 运行Python程序报错:ERROR: cannot launch node of type [teleop/teleop_key]: can't locate node [teleop_key] in package [teleop]
    c++ dynamic_cast 笔记
    C++ STL map 随手笔记
    TDD 中关于mock一些理解
    C++ struct 初始化的问题
    C++ count_if/erase/remove_if 用法详解
    C++ 编译报错discards qualifiers [-fpermissive]
    笔记本外接显示器没有声音
    virtual box ubuntu 主机和虚拟机实现互相复制粘贴
  • 原文地址:https://www.cnblogs.com/jzbgltb/p/9718547.html
Copyright © 2020-2023  润新知