一、網路分層
二、傳輸層協議——tcp和udp
2.1 tcp協議:建立連線(三次握手)——傳輸資料——斷開連線(四次揮手)
1. 三次握手
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_sent狀態,等待伺服器確認;syn:同步序列編號(synchronize sequence numbers);
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
若ack幀丟失,則伺服器會每隔一段時間向客戶端重發syn+ack包,直到收到客戶端的確認為止,如果一直未收到則斷開連線,但客戶端並不知情,以為連線已成功建立,就會像伺服器傳送資料,此時,伺服器會通過rst響應強制關閉連線。
2. tcp為什麼要進行三次握手?
在謝希仁著《計算機網路》第四版中講三次握手的目的是為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。在另一部經典的《計算機網路》一書中,三次握手的目的是為了解決網路中存在延遲的重複分組的問題,這兩種不同的表述其實闡明的是同乙個問題。
謝希仁版《計算機網路》中的例子是這樣的,已失效的連線請求報文段的產生在這樣一種情況下:client發出的第乙個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是乙個早已失效的報文段,但server收到此失效的連線請求報文段後,就誤認為是client再次發出的乙個新的連線請求,於是就向client發出確認報文段,同意建立連線。假設不採用三次握手,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用三次握手的辦法可以防止上述現象發生,例如剛才那種情況,client不會向server的確認發出確認,server由於收不到確認,就知道client並沒有要求建立連線。
3. 四次揮手
client對server說:我沒有資料傳送了,請求關閉連線;
server對client說:我知道了,但是我有資料要傳送,你還可以接收我傳送的資料;
server對client說:我也沒有資料要傳送了,請求關閉連線;
client對server說:我知道了。
server收到該確認時就關閉連線,client等待一段時間後沒有收到回覆,則認為server已關閉連線,則client也關閉連線。
2.2 udp協議:客戶端和伺服器之間不需要建立連線,客戶端隨時可以將資料傳送給伺服器端。
2.3 tcp和udp的區別
1. 基於連線與無連線;
2. 對系統資源的要求(tcp較多,udp少);
3. udp程式結構較簡單;
4. 流模式與資料報模式 ;
5. tcp保證資料正確性,udp可能丟包,tcp保證資料順序,udp不保證。
2.4 tcp和udp的優缺點
1. tcp的優點: 可靠,穩定。tcp的可靠體現在tcp在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源。
tcp的缺點: 慢,效率低,占用系統資源高,易被攻擊。tcp在傳遞資料之前,要先建連線,這會消耗時間,而且在資料傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每台裝置上維護所有的傳輸連線,事實上,每個連線都會占用系統的cpu、記憶體等硬體資源,而且,因為tcp有確認機制、三次握手機制,這些也導致tcp容易被人利用,實現dos、ddos、cc等攻擊。
2. udp的優點: 快,比tcp稍安全。udp沒有tcp的握手、確認、視窗、重傳、擁塞控制等機制,udp是乙個無狀態的傳輸協議,所以它在傳遞資料時非常快。沒有tcp的這些機制,udp較tcp被攻擊者利用的漏洞就要少一些,但udp也是無法避免攻擊的,比如udp flood攻擊等。
udp的缺點: 不可靠,不穩定。因為udp沒有tcp那些可靠的機制,在資料傳遞時,如果網路質量不好,就會很容易丟包。
3. 二者適用的場合
傳輸層 和網路層的區別
在 協議棧中,傳輸層位於網路層之上,傳輸層協議為不同 主機上執行的程序提供 邏輯通訊,而 網路層協議 為不同主機提供邏輯通訊。這個區別很微妙,但是卻非常重要。讓我們用一家人作為 模擬來說明一下這個區別。設想一下有兩所房子,乙個位於 東海岸而另乙個位於 西海岸,每所房子裡都住著12個小孩。東海岸的房子...
傳輸層與網路層的區別
傳輸層位於網路層之上,傳輸層協議為不同 主機上執行的應用程序提供 邏輯通訊,而 網路層協議 為不同主機提供邏輯通訊。網路層負責ip資料報的產生以及ip資料報在邏輯網路上的路由 網路層只是根據網路位址將源結點發出的資料報傳送到目的結點 點到點 其主要任務是 通過路由選擇演算法,為報文或分組通過通訊子網...
Web開發中的網路知識(網路請求 登入和跨域)
一 網路請求 1.1 訪問乙個網頁時發生了什麼?1 網域名稱解析成ip位址 2 與目的主機進行tcp連線 三次握手 3 傳送與收取資料 瀏覽器與目的主機開始http訪問過程 4 與目的主機斷開tcp連線 四次揮手 1.2 網路請求中的協議 二 登入和跨域 2.1 基於session登入 1.sess...