美文网首页
网络基本概念和命令

网络基本概念和命令

作者: 明翼 | 来源:发表于2021-12-25 20:41 被阅读0次

    一 网络概念:

    1.带宽: 标识网卡的最大传输速率,单位为b/s,比如1Gbps,10Gbps,相当于马路多宽
    2.吞吐量: 单位时间内传输数据量大小单位为b/s或B/s ,吞吐量/带宽,就是网络的使用率,相当于单位时间内马路上路过有多少人吧(包括车里的等)
    3.延时: 发送网络请求,到收到远端响应,需要的时间延迟,比如TCP握手延迟,或者数据包往返时间,相当于一去一回时间。
    4.PPS : 每秒转发包数量,如果吞吐量是以字节为单位,pps是以包为单位,可以理解成路上车的数量,以车位单位。
    5.并发连接数: TCP连接数量
    6.丢包率: 丢包的百分比
    7.重传率: 重传的包的比例。

    二 网卡有用命令

    2.1 监控是否丢包 watch

    watch -d ifconfig ens33
    

    errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
    dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包,主要应用层或系统内核处理慢;
    overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包(网卡收包队列已满);
    carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;collisions 表示碰撞数据包数。
    collisions 表示碰撞数据包数。

    2.2 查看系统中连接信息

    netstat -lnp
    其中:
    -l 表示只显示监听套接字 ; -n 表示显示数字地址和端口(而不是名字)
    -p 表示显示进程信息

    [root@iZbp10p2g1civrw4ggigvfZ ~]# netstat -lnp 
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1444/master         
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      20330/nginx: master 
    tcp        0      0 0.0.0.0:2332            0.0.0.0:*               LISTEN      1712/nginx: master  
    tcp        0      0 0.0.0.0:5278            0.0.0.0:*               LISTEN      27975/java          
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1840/php-fpm: maste 
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1937/mysqld         
    tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      1684/redis-server 0 
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20330/nginx: master 
    tcp        0      0 0.0.0.0:2353            0.0.0.0:*               LISTEN      24490/sshd: /usr/sb 
    tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      1/systemd           
    tcp6       0      0 :::25                   :::*                    LISTEN      1444/master         
    tcp6       0      0 :::33060                :::*                    LISTEN      1937/mysqld         
    tcp6       0      0 :::2353                 :::*                    LISTEN      24490/sshd: /usr/sb 
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           1026/dhclient       
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           749/chronyd         
    udp6       0      0 ::1:323                 :::*                                749/chronyd         
    Active UNIX domain sockets (only servers)
    Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
    ....
    

    ss -ltnp
    -l 表示只显示监听套接字
    -t 表示只显示 TCP 套接字
    -n 表示显示数字地址和端口(而不是名字)
    -p 表示显示进程信息
    注意:下面是ss命令下的解释:
    Established 状态时,Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数( ,而 Send-Q 表示还没有被远端主机确认的字节数
    LISTEN 状态时候Recv-Q表示使用的全连接队列的长度 Send-Q 表示全连接队列的最大长度。
    ss 只显示已经连接、关闭、孤儿套接字等简要统计,而 netstat 则提供的是更详细的网络协议栈信息。

    netstat -s 
    root@iZbp10p2g1civrw4ggigvfZ ~]# netstat -s 
    Ip:
        368894134 total packets received
        0 forwarded
        0 incoming packets discarded
        368894127 incoming packets delivered
        204418238 requests sent out
        133 dropped because of missing route
        7 reassemblies required
        1 packets reassembled ok
    Icmp:
        91913511 ICMP messages received
        90910972 input ICMP message failed.
        InCsumErrors: 2
        ICMP input histogram:
            destination unreachable: 4391
    ....
    
    

    netstat 在排查tcp连接时候还是非常有用的,比如我们可以通过:

    netstat -s | egrep "listen"
        79019 times the listen queue of a socket overflowed
    

    多次观察是否会增加,如果会增加,说明有监听队列满了,导致的连接拒绝问题。
    如果队列满了,可以通过查看:

    cat /proc/sys/net/ipv4/tcp_abort_on_overflow 
    

    值为0 表示连接队列如果满了,系统会直接扔掉客户端的ack报文,将这个值改成1,会在队列满的情况下直接发reset包给客户端。

    ss -s 命令统计信息:

    [root@iZbp10p2g1civrw4ggigvfZ ~]# ss -s
    Total: 210 (kernel 276)
    TCP:   22 (estab 7, closed 2, orphaned 0, synrecv 0, timewait 1/0), ports 0
    Transport Total     IP        IPv6
    *     276       -         -        
    RAW   0         0         0        
    UDP   3         2         1        
    TCP   20        17        3        
    INET      23        19        4        
    FRAG      0         0         0    
    

    2.3 网络统计指标统计信息

    sar -n DEV 1
    [root@iZbp10p2g1civrw4ggigvfZ ~]# sar -n DEV 1
    Linux 3.10.0-1062.4.3.el7.x86_64 (iZbp10p2g1civrw4ggigvfZ)  12/25/2021  _x86_64_    (2 CPU)
    
    02:16:52 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    02:16:53 PM      eth0      0.99      0.99      0.06      0.09      0.00      0.00      0.00
    02:16:53 PM        lo     11.88     11.88      1.95      1.95      0.00      0.00      0.00
    
    02:16:53 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    02:16:54 PM      eth0      0.99      0.99      0.06      0.17      0.00      0.00      0.00
    02:16:54 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    • rxpck/s 和 txpck/s 每秒接收的数据包数量和每秒发送数据包的数量。
    • rxkB/s 和 txkB/s 每秒接收的字节数和发送的吞吐量。
    • rxcmp/s 和 txcmp/s 每秒钟接收和发送的压缩数据包。
    • rxmcst/s 每秒收到多播的数量。

    2.4 带宽查看

    [root@localhost ~]#  ethtool ens33 | grep Speed
    Speed: 1000Mb/s
    

    以上为千兆网卡

    2.5 连通性测试和延时查看

    这个比较简单,我们一般通过ping进行测试,如下:

    [root@localhost ~]# ping -c10 www.baidu.com
    PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=36.2 ms
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=55 time=36.1 ms
    64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=55 time=35.8 ms
    ...
    

    time=35.8 ms 标识往返时延。
    设置ping包大小,可以测试网络中mtu大概范围:

    [root@localhost ~]# ping -c 4 -s 1420 www.baidu.com
    PING www.a.shifen.com (14.215.177.38) 1420(1448) bytes of data.
    1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=55 time=36.4 ms
    1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=55 time=35.2 ms
    1428 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=55 time=36.5 ms
    
    

    相关文章

      网友评论

          本文标题:网络基本概念和命令

          本文链接:https://www.haomeiwen.com/subject/evudqrtx.html