zoukankan      html  css  js  c++  java
  • 学习笔记:CentOS7学习之十九:Linux网络管理技术

    [TOC]

    #学习笔记:CentOS7学习之十九:Linux网络管理技术


    本文用于记录学习体会、心得,兼做笔记使用,方便以后复习总结。内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK老师和学神教育的优质教学。希望各位因学习需求而要进行转载时,能申明出处为学神教育,谢谢各位!

    19.1 OSI七层模型和TCP/IP四层模型

    19.1.1 OSI七层参考模型,TCP/IP四层参考模型

    OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。

    TCP/IP四层模型:TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。

    分层作用:方便管理

    七层模型优点:

    1、把复杂的网络划分成为更容易管理的层(将整个庞大而复杂的问题划分为若干个容易处理的小问题)

    2、没有一个厂家能完整的提供整套解决方案和所有的设备,协议.

    3、独立完成各自该做的任务,互不影响,分工明确,上层不关心下层具体细节,分层同样有益于网络排错 功能与代表设备

    分层 名字 功能 工作在该层的设备
    7 应用层 提供用户界面 QQ,IE 。应用程序
    6 表示层 表示数据,进行加密等处理 QQ,IE 。应用程序
    5 会话层 将不同应用程序的数据分离 QQ,IE 。应用程序
    4 传输层 提供可靠或不可靠的传输,在重传前执行纠错 防火墙
    3 网络层 提供逻辑地址,路由器使用它们来选择路径 三层交换机、路由器
    2 数据链路层 将分组拆分为字节,并讲字节组合成帧,使用MAC地址提供介质访问,执行错误检测,但不纠错 二层交换机,网卡
    1 物理层 在设备之间传输比特,指定电平,电缆速度和电缆针脚 集线器

    19.1.2 常见网络相关的协议

    • ARP(Address Resolution Protocol):地址解析协议,将IP解析成MAC地址
    • DNS:域名解析协议 www.baidu.com
    • SNMP(Simple Network Management Protocol)网络管理协议
    • DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议
    • FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。
    • HTTP(Hypertext Transfer Protocol ):超文本传输协议
    • HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.
    • ICMP(Internet Control Message Protocol):Internet控制信息协议,互联网控制报文协议
    • ping ip定义消息类型有:TTL超时、地址的请求与应答、信息的请求与应答、目的地不可到达
    • SMTP(Simple Mail Transfer Protocol):简单邮件传送协议
    • TELNET Protocol:虚拟终端协议
    • TFTP(Trivial File Transfer Protocol):小文件传输协议
    • UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议
    • TCP(Transmission Control Protocol): 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议 log转发:开启一个协议:tcp(三次握手和四次挥手)

    TCP协议和UDP协议的区别

    (1)TCP协议:TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。

    (2)UDP协议:UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

    总结:TCP与UDP的区别:

    1.基于连接与无连接;

    2.对系统资源的要求(TCP较多,UDP少);

    3.UDP程序结构较简单;UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。所以传输速度可更快

    4.TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。

    场景: 视频,语音通讯使用udp,或网络环境很好,比如局域网中通讯可以使用udp。 udp数据传输完整性,可以通过应用层的软件来校对就可以了。 tcp传文件,数据完整性要求高。

    18.1.3 TCP和UDP 常用端口号名称

    (1)TCP 端口分配:

    端口号 协议
    21 ftp 文件传输服务
    22 ssh 安全远程连接服务
    23 telnet 远程连接服务
    25 smtp 电子邮件服务
    53 DNS 域名解析服务,有tcp53也有用udp53端口传输
    80 http web服务
    443 https 安全web服务
    [root@CentOs7_64_1_128 ~]# vim /etc/services
    ....
    tcpmux          1/tcp                           # TCP port service multiplexer
    tcpmux          1/udp                           # TCP port service multiplexer
    rje             5/tcp                           # Remote Job Entry
    rje             5/udp                           # Remote Job Entry
    echo            7/tcp
    echo            7/udp
    discard         9/tcp           sink null
    discard         9/udp           sink null
    systat          11/tcp          users
    systat          11/udp          users
    daytime         13/tcp
    daytime         13/udp
    qotd            17/tcp          quote
    qotd            17/udp          quote
    msp             18/tcp                          # message send protocol (historic)
    msp             18/udp                          # message send protocol (historic)
    chargen         19/tcp          ttytst source
    chargen         19/udp          ttytst source
                                                                  21,1           0%
    ....
    
    

    此文件可以查看常用端口对应的名字。iptables或netstat要把端口解析成协议名时,都需要使用到这个文件。另外后期xinetd服务管理一些小服务时,也会使用到此文件来查询对应的小服务端口号。 注:有的服务是UDP和TCP端口都会监听的

    19.1.4 IP地址分类

    IP地址分5类,常见的地址是A、B、C 三类

    **A类地址:**范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回口用的。因此A类地址的可用的范围其实是从1-126之间。以子网掩码:255.0.0.0.

    **B类地址:**范围从128-191,如172.168.1.1,以子网掩码来进行区别:255.255.0.0

    **C类地址:**范围从192-223,以子网掩码来进行区别: 255.255.255.0

    **D类地址:**范围从224-239,被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

    **E类地址:**范围从240-254,为将来使用保留。

    ABC 3类中私有IP地址范围:

    A:10.0.0.0--10.255.255.255 /8

    B: 172.16.0.0--172.31.255.255 /16

    C: 192.168.0.0--192.168.255.255 /24

    注意:这个127这个网段都用于环回口

    [root@CentOs7_64_1_128 ~]# ping 127.2.2.2 PING 127.2.2.2 (127.2.2.2) 56(84) bytes of data. 64 bytes from 127.2.2.2: icmp_seq=1 ttl=64 time=0.042 ms 64 bytes from 127.2.2.2: icmp_seq=2 ttl=64 time=0.067 ms 64 bytes from 127.2.2.2: icmp_seq=3 ttl=64 time=0.049 ms 64 bytes from 127.2.2.2: icmp_seq=4 ttl=64 time=0.081 ms 64 bytes from 127.2.2.2: icmp_seq=5 ttl=64 time=0.050 ms ^C --- 127.2.2.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4009ms rtt min/avg/max/mdev = 0.042/0.057/0.081/0.017 ms

    19.2 linux网络相关的调试命令

    19.2.1 查看网卡物理连接是否正常

    
    [root@CentOs7_64_1_128 ~]# mii-tool ens33
    ens33: negotiated 1000baseT-FD flow-control, link ok
    
    

    查看IP相关信息:ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。

    
    [root@CentOs7_64_1_128 ~]# mii-tool ens33
    ens33: negotiated 1000baseT-FD flow-control, link ok
    [root@CentOs7_64_1_128 ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.87.128  netmask 255.255.255.0  broadcast 192.168.87.255
            inet6 fe80::7dc1:577a:3eaa:c0b  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:0c:ae:01  txqueuelen 1000  (Ethernet)
            RX packets 11938  bytes 15985649 (15.2 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2954  bytes 192573 (188.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 42  bytes 3432 (3.3 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 42  bytes 3432 (3.3 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:1d:53:9d  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    常见的一些网络接口:

    eth0 ..... eth4 ... 以太网接口(linux6)
    waln0 无线接口
    eno177776 以太网接口 (linux7)
    ens33 以太网接口(linux7)
    bond0 team0 网卡绑定接口
    virbr0 虚拟交换机桥接接口
    br0 虚拟网桥接口
    lo 本地回环接口
    vnet0 KVM虚拟机网卡接口

    19.2.2 修改网卡IP地址

    方法1:手工修改网卡配置文件

    [root@CentOs7_64_1_128 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    IPADDR=192.168.87.128 #IP地址
    NETMASK=255.255.255.0 #子网掩码,24相当于255.255.255.0
    GATEWAY=192.168.87.2  #默认网关
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33 #网卡名字
    UUID=f8e250be-4e78-49f6-87ea-34b476f66305 #网卡UUID,全球唯一
    DEVICE=ens33   #设备名字,在内核中识别的名字
    ONBOOT=yes #启用该设备,如果no,表示不启动此网络设备
    IPV6_PRIVACY=no
    PREFIX=24
    DNS1=8.8.8.8
    DNS2=114.114.114.114
    ZONE=public
    
    
    

    方法2:nmtui-edit图形界面配置

    [root@CentOs7_64_1_128 ~]# nmtui-edit

    如下图所示

    例1:启动关闭指定网卡:

    
    [root@CentOs7_64_1_128 ~]# ifconfig ens33 down #临时关闭ens33网卡
    [root@CentOs7_64_1_128 ~]# ifconfig ens33
    ens33: flags=4098<BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.87.128  netmask 255.255.255.0  broadcast 192.168.87.255
            ether 00:0c:29:0c:ae:01  txqueuelen 1000  (Ethernet)
            RX packets 13436  bytes 16420348 (15.6 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3027  bytes 198393 (193.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@CentOs7_64_1_128 ~]# ifconfig ens33 up #临时开启ens33网卡
    
    

    例2:临时配置IP地址

    [root@CentOs7_64_1_128 ~]# ifconfig ens33 192.168.1.3 netmask 255.255.255.252 #临时配置ens33的ip地址
    [root@CentOs7_64_1_128 ~]# ifconfig ens33 #查看发现ip地址已经修改
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.3  netmask 255.255.255.252  broadcast 192.168.1.3
            inet6 fe80::7dc1:577a:3eaa:c0b  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:0c:ae:01  txqueuelen 1000  (Ethernet)
            RX packets 13786  bytes 16523315 (15.7 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3073  bytes 206036 (201.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    [root@CentOs7_64_1_128 ~]# systemctl restart network.service #重启网络服务以后,ip地址恢复
    [root@CentOs7_64_1_128 ~]# ifconfig ens33
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.87.128  netmask 255.255.255.0  broadcast 192.168.87.255
            inet6 fe80::7dc1:577a:3eaa:c0b  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:0c:ae:01  txqueuelen 1000  (Ethernet)
            RX packets 13912  bytes 16560017 (15.7 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3099  bytes 210035 (205.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    19.2.3 查看端口的监听状态

    netstat 命令: 查看系统中网络连接状态信息

    常用的参数格式 : netstat -anutp

    • -a, --all 显示本机所有连接和监听的端口
    • -n, --numeric don't resolve names 以数字形式显示当前建立的有效连接和端口
    • -u 显示udp协议连接
    • -t 显示tcp协议连接
    • -p, --programs 显示连接对应的PID与程序名
    [root@CentOs7_64_1_128 ~]# netstat -nautp
     netstat -nautp
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      10090/dnsmasq       
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      9683/sshd           
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      9681/cupsd          
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      9923/master         
    tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
    tcp6       0      0 :::22                   :::*                    LISTEN      9683/sshd           
    tcp6       0      0 ::1:631                 :::*                    LISTEN      9681/cupsd          
    tcp6       0      0 ::1:25                  :::*                    LISTEN      9923/master         
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                           9060/avahi-daemon:  
    udp        0      0 0.0.0.0:56581           0.0.0.0:*                           9060/avahi-daemon:  
    udp        0      0 192.168.122.1:53        0.0.0.0:*                           10090/dnsmasq       
    udp        0      0 0.0.0.0:67              0.0.0.0:*                           10090/dnsmasq       
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           9023/chronyd        
    udp        0      0 0.0.0.0:704             0.0.0.0:*                           9013/rpcbind        
    udp6       0      0 :::111                  :::*                                1/systemd           
    udp6       0      0 ::1:323                 :::*                                9023/chronyd        
    udp6       0      0 :::704                  :::*       
    
    

    字段说明如下:

    Proto===连接协议的种类

    Recv-Q====接收到字节数

    Send-Q====从本服务器,发出去的字节数

    Local Address====本地的IP地址,可以是IP,也可以是主机名

    Foreign Address====远程主机的IP 地址

    网络连接状态STATE:

    • CLOSED : 初始(无连接)状态。
    • LISTEN : 侦听状态,等待远程机器的连接请求。
    • ESTABLISHED: 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
    • TIME_WAIT : 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。

    **MSL:**即Maximum Segment Lifetime,一个数据分片(报文)在网络中能够生存的最长时间,在RFC 793中定义MSL通常为2分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。对于一个TCP连接,在双方进入TIME_WAIT后,通常会等待2倍MSL时间后,再关闭掉连接,作用是为了防止由于FIN报文丢包,对端重发导致与后续的TCP连接请求产生顺序混乱

    修改主机名配置文件,作用:设置主机名永久生效

    
    [root@CentOs7_64_1_128 ~]# vim /etc/hostname
    CentOs7_64_1_128
    
    

    配置IP与主机名(域名)的对应关系。

    
    [root@CentOs7_64_1_128 ~]# vim /etc/hosts  #优先级高于DNS解析
    
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.87.128 CentOs7_64_1_128 
    
    
    

    19.2.4 配置DNS-路由相关信息

    1、DNS配置的配置文件

    [root@CentOs7_64_1_128 ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 8.8.8.8
    nameserver 114.114.114.114
    

    注:在centos5版本,配置DNS用这个文件。在centos6以后,直接在网卡配置文件中指定:DNS1=192.168.1.1 默认情况下,域名解析顺序: 本地hosts文件-》DNS查询

    2、本机域名解析顺序

    [root@CentOs7_64_1_128 ~]# vim /etc/nsswitch.conf
    # To use db, put the "db" in front of "files" for entries you want to be
    # looked up first in the databases
    #
    # Example:
    #passwd:    db files nisplus nis
    #shadow:    db files nisplus nis
    #group:     db files nisplus nis
    
    passwd:     files sss
    shadow:     files sss
    group:      files sss
    #initgroups: files sss
    
    #hosts:     db files nisplus nis dns #可以看到是先查看 files hosts文件,再查看DNS的
    hosts:      files dns myhostname
    
    # Example - obey only what nisplus tells us...
    #services:   nisplus [NOTFOUND=return] files
    #networks:   nisplus [NOTFOUND=return] files
    #protocols:  nisplus [NOTFOUND=return] files
    #rpc:        nisplus [NOTFOUND=return] files
    
    

    3、查看路由信息:

    
    [root@CentOs7_64_1_128 ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.87.2    0.0.0.0         UG    100    0        0 ens33
    192.168.87.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    
    
    

    说明:

    参数: -n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;

    route命令输出的路由表字段含义如下:

    • Destination 目标 :The destination network or destination host. 目标网络或目标主机。
    • Gateway 网关 :网关地址,如果是本地网段IP,就显示0.0.0.0
    • Genmask :子网掩码

    4、添加/删除路由条目:

    route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]

    增加 (add) 与删除 (del) 路由的相关参数:

    • -net :表示后面接的路由为一个网域;
    • -host :表示后面接的为连接到单部主机的路由;
    • netmask :与网域有关,可以设定 netmask 决定网域的大小;
    • gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同;
    • dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等

    添加/删除路由条目:

    添加路由(把Linux做成路由器时或服务器有多个网卡,指定到不同网段走哪个网卡)

    实战场景:多个网卡,多个网段,实现不同数据走不同网卡。如果网络管理和生产数据分开管理。

    
    
    [root@CentOs7_64_1_128 network-scripts]# route add -net 192.168.2.0 netmask 255.255.255.0 dev ens37
    [root@CentOs7_64_1_128 network-scripts]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.87.2    0.0.0.0         UG    100    0        0 ens33
    0.0.0.0         192.168.2.2     0.0.0.0         UG    101    0        0 ens37
    192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens37
    192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 ens37
    192.168.87.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    
    

    5、删除路由

    
    [root@CentOs7_64_1_128 network-scripts]# route del -net 192.168.2.0 netmask 255.255.255.0 
    [root@CentOs7_64_1_128 network-scripts]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.87.2    0.0.0.0         UG    100    0        0 ens33
    0.0.0.0         192.168.2.2     0.0.0.0         UG    101    0        0 ens37
    192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 ens37
    192.168.87.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    
    
    

    6、使用traceroute进行路由跟踪

    路由跟踪:查看经过多少个路由器到目标网址:

    实战场景:经过几跳可以到达服务器。

    
    [root@CentOs7_64_1_128 network-scripts]# traceroute www.baidu.com
    traceroute to www.baidu.com (103.235.46.39), 30 hops max, 60 byte packets
     1  gateway (192.168.87.2)  0.423 ms  0.334 ms  0.416 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  * * *
     8  * * *
     9  * * *
    10  * * *
    
    

    7、ping命令

    ping命令的一般格式为:

    -c 数目 在发送指定数目的包后停止。

    -i 秒数 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。

    
    [root@CentOs7_64_1_128 network-scripts]# ping -i 0.05 -I ens33 -c 20 119.1.241.1  
    #每隔0.05秒,使用网卡ens33,总共20次,ping 119.1.241.1
    PING 119.1.241.1 (119.1.241.1) from 192.168.87.128 ens33: 56(84) bytes of data.
    64 bytes from 119.1.241.1: icmp_seq=1 ttl=128 time=55.2 ms
    64 bytes from 119.1.241.1: icmp_seq=2 ttl=128 time=64.9 ms
    64 bytes from 119.1.241.1: icmp_seq=3 ttl=128 time=50.2 ms
    64 bytes from 119.1.241.1: icmp_seq=4 ttl=128 time=71.4 ms
    64 bytes from 119.1.241.1: icmp_seq=5 ttl=128 time=84.5 ms
    64 bytes from 119.1.241.1: icmp_seq=6 ttl=128 time=51.5 ms
    64 bytes from 119.1.241.1: icmp_seq=7 ttl=128 time=47.9 ms
    64 bytes from 119.1.241.1: icmp_seq=8 ttl=128 time=60.7 ms
    64 bytes from 119.1.241.1: icmp_seq=9 ttl=128 time=87.0 ms
    64 bytes from 119.1.241.1: icmp_seq=10 ttl=128 time=93.2 ms
    64 bytes from 119.1.241.1: icmp_seq=11 ttl=128 time=87.8 ms
    64 bytes from 119.1.241.1: icmp_seq=12 ttl=128 time=120 ms
    64 bytes from 119.1.241.1: icmp_seq=13 ttl=128 time=102 ms
    64 bytes from 119.1.241.1: icmp_seq=14 ttl=128 time=92.4 ms
    64 bytes from 119.1.241.1: icmp_seq=15 ttl=128 time=97.4 ms
    64 bytes from 119.1.241.1: icmp_seq=16 ttl=128 time=122 ms
    64 bytes from 119.1.241.1: icmp_seq=17 ttl=128 time=68.6 ms
    64 bytes from 119.1.241.1: icmp_seq=18 ttl=128 time=85.1 ms
    64 bytes from 119.1.241.1: icmp_seq=19 ttl=128 time=78.9 ms
    64 bytes from 119.1.241.1: icmp_seq=20 ttl=128 time=59.4 ms
    
    --- 119.1.241.1 ping statistics ---
    20 packets transmitted, 20 received, 0% packet loss, time 1018ms
    rtt min/avg/max/mdev = 47.902/79.138/122.579/21.576 ms, pipe 3
    
    
    

    arping: 查看IP地址是否有冲突

    例:查看网关是否有冲突

    
    [root@CentOs7_64_1_128 network-scripts]# arping -I ens33 192.168.87.2
    ARPING 192.168.87.2 from 192.168.87.128 ens33
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  0.752ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  1.060ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  1.085ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  0.753ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  1.091ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  1.069ms
    Unicast reply from 192.168.87.2 [00:50:56:FD:A4:16]  1.025ms
    ^CSent 7 probes (1 broad
    
    

    watch :实时监测命令的运行结果,可以看到所有变化数据包的大小

    • -d, --differences ['dɪfərəns] #高亮显示指令输出信息不同之处;
    • -n, --interval seconds [ˈɪntəvl] #指定指令执行的间隔时间(秒);
    [root@CentOs7_64_1_128 network-scripts]# watch -n 1 -d "ifconfig ens33"
    
    

    19.3 tcp三次握手

    19.3.1 tcp三次握手及tcp连接状态

    TCP报文段的首部格式:

    • ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1
    • SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。
    • synchronization 同步
    • FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。
    • finis 终结

    建立tcp连接时的tcp三次握手和断开tcp连接时的4次挥手整体过程说明图:

    实战1:使用tcpdump抓包查看tcp三次握手过程

    tcp三次握手过程:

    Client:我可以给你发数据吗?

    Server:可以

    Client:好的

    三次握手的核心是: 确认每一次包的序列号。

    tcp三次握手过程:

    1. 首先由Client发出请求连接即 SYN=1,声明自己的序号是 seq=x

    2. 然后Server 进行回复确认,即 SYN=1 ,声明自己的序号是 seq=y, 并设置为ack=x+1,

    3. 最后Client 再进行一次确认,设置 ack=y+1.

    tcpdump常用参数:

    • -c 指定包个数
    • -n IP,端口用数字方式显示
    • -S 查看绝对序号
    • port 指定端口

    模拟:在127上登录128,抓取ssh远程登录128时,产生的tcp三次握手包:

    
    [root@CentOs7_64_1_128 network-scripts]# tcpdump -n -S -c 3 port 22 -i ens33
    #使用tcpdump查看端口22,dev:ens33上的数据包
    
    

    在127上ssh远程登陆128

    
    [root@CentOs7_64_2_127  ~]# ssh root@192.168.87.128
    root@192.168.87.128's password: 
    Last login: Mon Jun 24 14:48:21 2019
    
    
    

    查看数据包

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
    15:57:53.660068 IP 192.168.87.127.38774 > 192.168.87.128.ssh: Flags [S], seq 2798814586, win 29200, options [mss 1460,sackOK,TS val 612354 ecr 0,nop,wscale 7], length 0
    15:57:53.660136 IP 192.168.87.128.ssh > 192.168.87.127.38774: Flags [S.], seq 391499546, ack 2798814587, win 28960, options [mss 1460,sackOK,TS val 3951488 ecr 612354,nop,wscale 7], length 0
    15:57:53.660288 IP 192.168.87.127.38774 > 192.168.87.128.ssh: Flags [.], ack 391499547, win 229, options [nop,nop,TS val 612355 ecr 3951488], length 0
    3 packets captured
    3 packets received by filter
    0 packets dropped by kernel
    
    
    

    可以发现ack的数值全部是上一个seq序列+1

    TCP三次握手连接状态详解:

    TCP连接状态详解:

    服务器端:LISTEN:侦听来自远方的TCP端口的连接请求

    客户端:SYN-SENT:在发送连接请求后等待匹配的连接请求

    服务器端:SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认

    客户端/服务器端:ESTABLISHED:代表一个打开的连接


    END
    2019-6-24 16:02:36
  • 相关阅读:
    FOAT、SOAT、OAT
    autosar mcal之启动代码
    华为2020操作系统相关链接openeuler
    CCP/XCP
    autosar资料(持续更新。。。)
    liteos相关源码资料
    autosar学习之通信栈
    Autosar COM层发送模式选择(信号发送属性和I-PDU发送模式)
    统一诊断服务 (Unified diagnostic services , UDS)
    Linux路由器及交换机工作原理
  • 原文地址:https://www.cnblogs.com/yj411511/p/11077767.html
Copyright © 2011-2022 走看看