傳輸層是國際標准化組織提出的開放系統互連(OSI)參考模型中的第四層。該層協議為網絡端點主機上的進程之間提供了可靠、有效的報文傳送服務。其功能緊密地依賴於網絡層的虛擬電路或數據報服務。傳輸層定義了主機應用程序之間端到端的連通性。傳輸層只存在於端開放系統中,是介於低3層通信子網系統和高3層之間的一層,但是很重要的一層,因為它是源端到目的端對數據傳送進行控制從低到高的最后一層。
傳輸層的服務一般要經歷傳輸連接建立階段,數據傳送階段,傳輸連接釋放階段3個階段才算完成一個完整的服務過程。而在數據傳送階段又分為一般數據傳送和加速數據傳送兩種形式。傳輸層中最為常見的兩個協議分別是傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram Protocol) 。傳輸層提供邏輯連接的建立、傳輸層尋址、數據傳輸、傳輸連接釋放、流量控制、擁塞控制、多路復用和解復用、崩潰恢復等服務。
本篇文章主要講述傳輸層協議TCP連接的建立(三次握手)和斷開(四次揮手),與路由器的數據轉發原理(封裝過程)。
1、TCP建立連接的過程稱為三次握手,我們可以通過下圖來了解TCP三次握手的過程:
從圖上我們可以看出,PC1要與PC2建立通訊連接,要經過3個步驟,這個三個步驟我們就稱為三次握手。經過這3個握手PC1和PC2才可以真正通訊,傳輸數據。
首先我們要先了解在TCP報文格式中比較重要的幾個標志位,①、ACK:確認位(確認序號位,當該位為1時,用於確認發送方的數據)。②、SYN:建立連接的請求標記(同步序號位,TCP需要建立連接時將該值設為1)。③、FIN:請求斷開標記(當TCP斷開連接時將該位置為1)。這里我們主要了解這三個標志位。
當PC1想要與PC2建立連接時,從圖中可以看到PC1首先發送SYN報文,該位置為1,請求與PC2建立連接,這個時候PC2接收到請求,通過查看SYN報文位置知道PC1想要建立連接,PC2回應PC1請求,並發送建立連接請求(兩台PC機建立通訊是雙向的,當一台PC請求建立連接時,另一台PC同樣會請求建立連接),PC2發送SYN+ACK報文,該位置同樣為1,PC1接受到PC2確認回應與請求后確認PC2信息位置,然后回復確認,發送ACK報文,位置為1。經過這3次握手過程,PC1與PC2成功建立連接。
2、TCP斷開連接的四次揮手,我們可以通過下圖來了解TCP四次揮手的過程:
上圖中我們可以看到PC1和PC2斷開連接的過程其實和上面我們講述的TCP三次握手的過程差不多,不過中間多了一個步驟3,這里也就是我們要理解的TCP半關閉的概念,我們可以通過關閉瀏覽網站這個過程來理解TCP半關閉的概念,同時來闡述TCP斷開連接四次揮手的過程。
在這里我們把PC2看做是一台服務器,當我們在瀏覽網頁時,數據是雙向傳輸的,PC1發起請求,服務器響應請求並發送數據提供PC1瀏覽查看,當PC1關閉瀏覽器時,首先發送FIN/ACK報文,位置位為1,確認關閉連接,服務器接收請求,然后發送ACK報文,位置為1,確認請求,這個時候PC1關閉瀏覽器窗口,但是服務器還沒有斷開與PC1的連接,還會繼續向PC1發送數據,斷開的只是PC1單向的連接,這也就是TCP半關閉狀態,當PC1斷開連接后,服務器重復PC1操作,發送FIN/ACK報文,位置為1,請求確認斷開連接,PC1接收到服務器請求,並發送ACK報文,位置為1,確認請求,這個時候服務器與PC1斷開連接,經過這四個步驟,PC1與服務器(PC2)斷開連接,這就是我們說的TCP斷開連接的四次揮手。
3、路由器的數據轉發原理(封裝過程),通過下圖來講述路由器的數據轉發原理:
路由器轉發封裝過程我們也稱之為路由器的重封裝過程,如上圖所示,主機A要把數據發送給主機B要經過兩個路由的轉發來完成,在這個轉發過程中是經過三個不同網段的轉發最終到達主機B,在同一個段中傳輸時就是數據鏈路層(二層)的工作原理,數據鏈路層是以數據幀的格式通過封裝源MAC地址與目標MAC地址發送ARP尋找目標MAC地址進行轉發,如上圖,主機A發送數據到主機B,要經過三個不同的網段通過兩次重封裝來完成數據發送。
①、首先主機A通過ARP,找到默認網關路由A的MAC地址,然后封裝源IP地址(192.168.1.2/24)與目標IP地址(192.168.2.2/24),源MAC地址(…11-11),目標MAC地址(…22-22),經過E0端口發送到路由A中。
②、路由A接收到數據,通過解析MAC地址,查看主機A發過來的目標IP地址,在路由表中查找目標IP網段,當查找到這個網段后,知道應該從E1接口轉發出去,然后路由A重新封裝MAC地址,源IP地址與目標IP地址不變,這個時候封裝的源MAC地址為…33-33,目標MAC地址為:…44-44,通過E1接口發送給路由B。
③、路由B接受到數據后與路由A同樣操做,解封MAC地址,查看目標IP地址,同時在路由表中查找目標IP網段,找到目標IP網段接口E0,然后通過ARP,獲得主機B的MAC地址,並封裝MAC地址,源MAC地址為…55-55,目標MAC地址為…66-66,源IP地址與目標IP地址不變,通過E0接口轉發到主機B,這個時候主機B接受到主機A發過來的數據,通過解析MAC地址,查看源IP與目標IP地址,確定是否是發給自己的數據。
通過上面所述的過程通過三次重新封裝MAC地址,源IP地址與目標IP地址不變,完成數據的轉發,這就是路由器的重封裝過程,也就是路由器的數據轉發原理(封裝過程)。