文章目錄
一、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