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次。
将多块网卡绑定同一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通!
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指定监控间隔,单位毫秒
网卡不需要具体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
重启网络后,绑定网卡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
[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
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
[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 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 网卡 | 删除链接 |
#添加网卡连接
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
添加网卡配置方案:
[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
多个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
[root@CentOS7 network-scripts]#ip addr flush dev ens33 label ens33:1