先放一張圖了解tcp 和http的關系
http屬於應用層,而tcp屬於傳輸層 http是基於tcp的
有幾個字段需要重點介紹下:
(1)序號:Seq序號,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。(順序碼)
(2)確認序號:Ack序號,占32位,只有ACK標志位為1時,確認序號字段才有效,Ack=Seq+1。(確認碼)
(3)標志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
(A)URG:緊急指針(urgent pointer)有效。
(B)ACK:確認序號有效。
(C)PSH:接收方應該盡快將這個報文交給應用層。
(D)RST:重置連接。
(E)SYN:發起一個新連接。
(F)FIN:釋放一個連接。
需要注意的是:
(A)不要將確認序號Ack與標志位中的ACK搞混了。
(B)確認方Ack=發起方Req+1,兩端配對。
第一次握手:主機A發送 位碼syn=1 和seq number=xxxx 的一個隨機數 到主機B 代表要請求建立連接
第二次握手:主機B 接受到請求 向主機A發送數據包 ack=number+1(接收到的seq+1 代表確認收到主機A所發送的請求)並且自己也發送一個位碼syn=1 和seq number=xxxx
第三次握手:主機A 接收到 確認序號 驗證確認序號是否有效 ,並向主機B 發送 確認序號 ack=number+1 發送完后 建立連接
TCP的特點 靈活性 安全性 可操作性 可靠性 適用性
為什么說TPC協議安全可靠 不會出點丟失數據的情況?
正是因為三次握手的特性