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

时间:2023-06-14 11:06:37

目录

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


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

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

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

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

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

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

分层作用:方便管理

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

七层模型优点:

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)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

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

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

如下图所示

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

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

例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报文段的首部格式:

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

  • 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次挥手整体过程说明图:

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

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

tcp三次握手过程:

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

Server:可以

Client:好的

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

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

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三次握手包:

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


[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三次握手连接状态详解:

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

TCP连接状态详解:

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

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

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

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



END

2019-6-24 16:02:36