tpc協議屬於傳輸層協議,本篇主要介紹下幾個概念,以及握手和揮手的過程。
1.tcp的幾個概念
位碼:即tcp標誌位,有6種提示
syn:synchronus,表示建立聯機。
ack:acknowledgement,確認。
push:push,傳送。
fin:finish,結束。
rst:rest,重置。
urg:urgent,緊急。
sequence number:順序號碼。
acknowledge number:確認號碼。
2.三次握手過程(假設主機a和主機b進行通訊)
第一次握手:主機a傳送syn=1,seq_number=123456的資料報到達主機b,主機b由syn=1知道,主機a要求建立聯機。
第二次握手:主機b收到請求之後,需要確認聯機資訊。需要像a傳送ack=1,ack_number=(主機a的seq_number+1),syn=1,seq_number=7654321的包。
第三次握手:主機a收到b的資料報之後,會去檢查ack_number(即第一次傳送的seq_number+1)以及ack=1是否正確,若正確,主機a會像主機b傳送
ack=1,ack_number=(主機b的seq_number+1)
的資料報到達主機b,主機b收到後確認ack=1和ack_number無誤後,建立正常連線。
3.四次揮手的原因
由於tcp的全雙工特性(即資料在兩個方向上能夠同時傳遞),因此每個方向上必須進行單獨的關閉。 關閉的原則是:當一方完成資料傳輸之後,就可以傳送fin=1的資料報
來終止這個方向上
的連線。當一端收到這個fin=1的資料報後,通知應用層另一端已經終止了資料的傳送操作(即收到乙個fin=1的資料報證明這個方向上已經沒有資料流動了)。
兩端單獨關閉的目的就是為了保證
兩端能夠完全的接收到對方傳送的資料報。
4.四次揮手過程(假設主機a和主機b進行通訊)
第一次揮手:主機a像主機b傳送fin=1的資料報;即a告訴b,我(a)傳送給你(b)的資料大小是n,我已經傳送完畢,請求斷開我(a)到你(b)的連線。
第二次揮手:主機b收到主機a傳送的fin資料報,並像主機a傳送ack資料報;即b告訴a,是的,我總共收到了你傳送給我n大小的資料報,現在斷開你(a)到我(b)的連線。
第三次揮手:主機b像主機a傳送fin=1的資料報;即b告訴a,我(b)傳送給你(a)的資料大小是n,我已經傳送完畢,請求斷開我(b)到你(a)的連線。
第四次揮手:主機a收到主機b傳送的fin資料報,並像主機b傳送ack資料報;即a告訴b,是的,我總共收到了你傳送給我n大小的資料報,現在斷開你(b)到我(a)的連線。
Http協議與TCP協議簡單理解
在c 編寫 很多時候會遇到http協議或者tcp協議,這裡做乙個簡單的理解。tcp協議對應於傳輸層,而http協議對應於應用層 從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服...
iOS Http協議與TCP協議簡單理解
在c 編寫 很多時候會遇到http協議或者tcp協議,這裡做乙個簡單的理解。tcp協議對應於傳輸層,而http協議對應於應用層 從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服...
Http協議與TCP協議簡單理解
在c 編寫 很多時候會遇到http協議或者tcp協議,這裡做乙個簡單的理解。tcp協議對應於傳輸層,而http協議對應於應用層,從本質上來說,二者沒有可比性。http協議是建立在tcp協議基礎之上的,當瀏覽器需要從伺服器獲取網頁資料的時候,會發出一次http請求。http會通過tcp建立起乙個到伺服...