学习笔记: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三次握手过程:
首先由Client发出请求连接即 SYN=1,声明自己的序号是 seq=x
然后Server 进行回复确认,即 SYN=1 ,声明自己的序号是 seq=y, 并设置为ack=x+1,
最后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