TCP连接通信过程及网络管理

一、TCP报文头部

1.TCP 6种状态标志位
在这里插入图片描述
1.URG(urgent紧急指针)
2.ACK(acknowledgement 确认)
表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效
3.PSH(push传送)
接收方应该尽快将这个报文交给应用层
4.RST(reset重置连接)
如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接
5.SYN(synchronous建立联机)
在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
6.FIN(finish结束)
表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

二、建立连接前三次握手

1.发起方由客户端发起请求
2.通讯过程:
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=N,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=N+1,随机产生一个值seq=M,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,将标志位ACK置为1,ack=M+1,并将该数据包发送给Server;至此连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
在这里插入图片描述

3.为什么是三次握手
答:如果发送两次就可以建立连接话,那么只要客户端发送一个连接请求,服务端接收到并发送了确认,就会建立一个连接。

可能出现的问题:如果一个连接请求在网络中跑的慢,超时了,这时客户端会从发请求,但是这个跑的慢的请求最后还是跑到了,然后服务端就接收了两个连接请求,然后全部回应就会创建两个连接,浪费资源!

如果加了第三次客户端确认,客户端在接受到一个服务端连接确认请求后,后面再接收到的连接确认请求就可以抛弃不管了

三、断开连接的四次(三次)挥手

1.发起方可能由Client或Server任意一方发起,或双方同时发起(三次挥手)
2.通讯过程:
(1)第一次挥手:比如Client先发起断开连接,发送一个FIN=1,Client进入FIN_WAIT_1状态。
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态。
(3)第三次挥手:Server在所有数据发送结束后,发送一个FIN=1,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,Server进入CLOSED状态,至此连接断开。
在这里插入图片描述
3.为什么需要四次分手
TCP是双向的,所以需要在两个方向分别关闭,每个方向的关闭又需要请求和确认,所以一共就4次。

四、多网卡绑定Bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

多网卡绑定工作模式

Mode 0 (balance-rr)
轮转(Round-robin)策略: 从头到尾顺序的在每一个slave 接口上面发送数据包。本模式提供负载均衡和容错的能力

Mode 1 (active-backup)
活动-备份(主备)策略: 只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave.为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见

Mode 3 (broadcast)
广播策略: 在所有的slave接口上传送所有的报文,提供容错能力

active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置 其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel

多网卡绑卡步骤:

多网卡必须是同网段的(虚拟机环境下网卡类型必须相同,如都是NAT);绑定前确认多个网卡都能正常ping通!

1.创建绑定网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
IPADDR=192.168.37.200
PREFIX=24
BONDING_OPTS="mode=1 miimon=100"	#mode指定模式; miimon指定监控间隔,单位毫秒

2.修改多个网卡配置文件

网卡不需要具体IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE="ens33"
NAME="ens33"
MASTER=bond0
SLAVE=yes

vim /etc/sysconfig/network-scripts/ifcfg-ens37
DEVICE="ens37"
NAME="ens37"
MASTER=bond0
SLAVE=yes

3.重启网络服务,查看bonding工作状态

重启网络后,绑定网卡bond0 会模拟slave某个网卡的mac地址,如果是虚拟机环境可能会提示"适配器"Ethernet1"的MAC地址在保留地址范围内,或系统另一个虚拟机适配器正在使用该地址,适配器Ethernet可能没有网络",忽略即可!

systemctl restart NetworkManager    #或重启systemctl restart network  
cat /proc/net/bonding/bond0  #重启服务后会在/proc/net/目录中生成bonding文件夹并创建bond0文件

在这里插入图片描述
模拟断开一个网卡后,另一个网卡马上接管过来,通过ping可以看到中间可能有一个丢包
在这里插入图片描述
MODE1:

[root@CentOS7 network-scripts]#cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)	#bonding工作模式
Primary Slave: None
Currently Active Slave: ens33			#当前工作网卡名
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33	#网卡名称
MII Status: up				#网卡状态
Speed: 1000 Mbps	#工作速度
Duplex: full		#双工状态
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:a2:52	#网卡mac地址
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:a2:5c
Slave queue ID: 0

在这里插入图片描述

在这里插入图片描述
MODE 3:

[root@CentOS7 network-scripts]#cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)		#模式3:广播
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:a2:52
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:01:a2:5c
Slave queue ID: 0

在这里插入图片描述
在这里插入图片描述

4.多网卡配置删除:

1.ifconfig bond0 down
2.rmmod bonding

注意: VMware添加桥接网卡,设置桥接模式选择网卡时,笔记本连接的无线网与有线网卡切换时,需要更改桥接设置
在这里插入图片描述
在这里插入图片描述

五、网卡名称变更为传统命名方式

更改步骤:
1.修改/etc/default/grub 配置文件

[root@CentOS7 ~]#vim /etc/default/grub 

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"                                                                                
GRUB_DISABLE_RECOVERY="true"

Ubuntu修改形式:

GRUB_CMDLINE_LINUX="net.ifnames=0"

2.命令生成/boot/grub2/grub.cfg配置文件

[root@CentOS7 ~]#grub2-mkconfig -o /boot/grub2/grub.cfg		#centos7
root@ubuntu1804:~# grub-mkconfig -o /etc/default/grub  	#Ubuntu

3.重启reboot
在这里插入图片描述

[root@CentOS7 ~]#vim /boot/grub2/grub.cfg  #不建议直接vim编辑

#                                                                                                                            
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/10_linux ###
........
linux16 /vmlinuz-0-rescue-be531f1b322b4a7e967d43799e071ed4 root=UUID=9ad8c591-beee-4b08-af57-219a3829a8fb ro rhgb quiet   #应在此行后面添加

xshell 连接 Ubuntu:

root@ubuntu1804:~# vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password
PermitRootLogin yes

六、nmcli网络管理工具

使用场景:提前生成多种网卡配置方案,方便快速更换网卡配置,方便配置管理!

1.命令格式

命令 功能
nmcli dev status 查看所有设备状态
nmcli con show 查看网卡信息
nmcli con up 网卡 启动网卡
nmcli con down 网卡 禁用网卡
nmcli dev dis 关闭该接口,并暂时的停止自动连接
nmcli net off 关闭所有接口
nmcli con add 添加新链接
nmcli con mod 网卡 修改链接
nmcli con del 网卡 删除链接

2.类比网卡配置文件nmcli命令行写配置文件

#添加网卡连接
nmcli connection add type ethernet con-name ens33-test ifname ens33
#IP获取方式设置成手动
nmcli connection modify ens33-test ipv4.method manual
#给ens33-test添加一个IP
nmcli connection modify ens33-test ipv4.addresses 192.168.37.119
#给ens33-test添加一个子网掩码
nmcli connection modify ens33-test ipv4.addresses 192.168.37.119/24
#添加一个ipv4
nmcli connection modify ens33-test +ipv4.addresses 192.168.37.118/24
#删除一个ipv4
nmcli connection modify ens33-test -ipv4.addresses 192.168.37.118/24
#添加DNS
nmcli connection modify ens33-test ipv4.dns 114.114.114.114
#删除DNS
nmcli connection modify ens33-test -ipv4.dns 114.114.114.114
#添加一个网关(GATEWAY)
nmcli connection modify ens33-test ipv4.gateway 192.168.37.2
#删除网卡连接
nmcli con delete ens33-test

3. nmcli配置网卡方案

添加网卡配置方案:
[root@CentOS7 ~]#nmcli connection add con-name ens33-test ifname ens33 type ethernet ipv4.method manual ipv4.addresses 192.168.37.119
[root@CentOS7 network-scripts]#nmcli connection reload      #手动添加的配置文件重新加载

查看网卡配置方案:
[root@CentOS7 network-scripts]#nmcli con

启用网卡配置方案
[root@CentOS7 network-scripts]#nmcli con up ens33-test 

删除网卡配置方案:
1.命令行:删除后自动切换
[root@CentOS7 network-scripts]#nmcli con delete ens33-test   #命令行方式删除网卡,网卡配置文件会自动删除
2.删除配置文件
[root@CentOS7 network-scripts]#rm -f ifcfg-ens33-test 	#删除配置文件,命令查看不会自动更新
[root@CentOS7 network-scripts]#nmcli con
[root@CentOS7 network-scripts]#nmcli connection reload 

多网卡绑定:
绑定网卡执行完,不需要执行reload即可生效;不配置多网卡MASTER、SLAVE也会生效,原因是网卡状态是global,如果一个网卡收到请求,其他网卡都可以回应;如果原网卡设置MASTER和SLAVE,原来的也不会生效
1.添加bond网卡配置
[root@CentOS7 network-scripts]#nmcli connection add con-name newbond type bond mode active-backup ipv4.method manual ipv4.addresses 192.168.37.118/24
2.添加SLAVE-MASTER映射
[root@CentOS7 network-scripts]#nmcli connection add con-name Master-NewBond-Slave-ens33 type bond-slave master NewBond ifname ens33
[root@CentOS7 network-scripts]#nmcli connection add con-name Master-NewBond-Slave-ens37 type bond-slave master NewBond ifname ens37
3.启用SLAVE
[root@CentOS7 network-scripts]#nmcli connection up Master-NewBond-Slave-ens33 
[root@CentOS7 network-scripts]#nmcli connection up Master-NewBond-Slave-ens37

命令行删除后,配置文件自动删除:
在这里插入图片描述
直接删除配置文件,不能直接同步nmcli状态:
在这里插入图片描述

在这里插入图片描述
网络类型:
802-11-olpc-mesh bond generic macvlan pppoe vxlan
802-11-wireless bridge gsm olpc-mesh team wifi
802-3-ethernet cdma infiniband ovs-bridge tun wimax
adsl dummy ip-tunnel ovs-interface vlan
bluetooth ethernet macsec ovs-port vpn

七、一个网卡绑定多个IP

多个IP称为网卡别名

(一)添加绑定多个IP的方式:

1.命令行(临时生效)

ip addr add 172.16.1.1/16 dev ens33 label ens33:1

2.配置文件(永久生效)

[root@CentOS7 network-scripts]#vim ifcfg-ens33:1		# 通过:分隔
DEVICE=ens33:1		#设备名称与文件名一致
IPADDR=192.168.36.8
PREFIX=24   

(二)删除指定IP别名:

[root@CentOS7 network-scripts]#ip addr flush dev ens33 label ens33:1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章