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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章