HTTP深入淺出

一 TCP/IP協議

TCP/IP通信數據流


IP協議:IP協議的作用在於把各種數據包準確無誤的傳遞給對方,其中兩個重要的條件是IP地址,和MAC地址(Media Access Control Address)。由於IP地址是稀有資源,不可能每個人都擁有一個IP地址,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器裏面會記錄我們的MAC地址。

(1)三次握手


TCP協議:如果說IP協議是找到對方的詳細地址。那麼TCP協議就是把安全的把東西帶給對方。各有分工,互不衝突。

                 按層次分,TCP屬於傳輸層,提供可靠的字節流服務。什麼叫字節流服務呢?這個名字聽起來讓人不知所以然,下面聽下我通俗的解釋。所謂的字節流,其實就類似於信息切割。比如你是一個賣自行車的,你要去送貨。安裝好的自行車,太過龐大,又不穩定,容易損傷。不如直接把自行車拆開來,每個零件上都貼上收貨人的姓名。最後送到後按照把屬於同一個人的自行車再組裝起來,這個拆解、運輸、拼裝的過程其實就是TCP字節流的過程。

                所謂的字節流服務是指,爲了方便傳輸,將大塊數據分割成以報文爲單位的數據包進行管理,而可靠的傳輸服務是指,能夠把數據準確可靠的傳給對方。一言以蔽之,TCP 協議爲了更容易傳送大數據才把數據分割,而且 TCP 協議能夠確認數據最終是否送達到對方。


(2)四次揮手(關閉連接)


SYN表示建立連接,

FIN表示關閉連接,

ACK表示響應,

由於TCP連接時全雙工的,因此每個方向都必須要單獨關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的連接,收到FIN只是意味着這一方向上沒有數據流動了,即不會再收到數據,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。

(1)第一次揮手:client發送一個FIN來關閉Client到Server的數據傳送,客戶端進入等待狀態

(2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號爲收到序號+1,Server進入Close_Wait

(3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。

(4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號爲收到序號+1,Server進入CLOSED狀態,完成四次揮手。



HTTP

概要:是一種無狀態協議(無記憶的)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章