這裏是修真院後端小課堂,每篇分享文從java
【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】程序員
八個方面深度解析後端知識/技能,本篇分享的是:算法
【什麼是TCP/IP協議?TCP的三次握手指的是什麼,爲何必定要三次握手,而不是四次或者是兩次? 】後端
標題:瀏覽器
【修真院java 小課堂】什麼是TCP/IP協議?TCP的三次握手指的是什麼,爲何必定要三次握手,而不是四次或者是兩次?安全
開場語:服務器
你們好,我是IT修真院鄭州分院第12期的學員張泉良,一枚正直純潔善良的JAVA程序員,今天給你們分享一下,修真院官網JAVA任務二,深度思考中的知識點—— 什麼是TCP/IP協議?TCP的三次握手指的是什麼,爲何必定要三次握手,而不是四次或者是兩次?網絡
網絡協議:app
書本上的定義:網絡協議是爲計算機網絡中進行數據交換而創建的規則、標準或約定的集合編碼
網絡協議就是人爲規定的一套通訊規範,只要雙方都遵循這個規範,就能實現交流
TCP/IP具體含義:利用ip進行通訊時所必須用到的協議羣的統稱。
具體來講,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都屬於 TCP/IP 協議。
TCP/IP協議族是一個四層協議系統,自底而上是數據鏈路層、網絡層、傳輸層和應用層。上層協議使用下層協議提供的輔助。
(1) 數據鏈路層實現了網卡接口的網絡驅動程序,以處理數據在物理媒介上的傳輸
(2) 網絡層實現數據包的選路和轉發。網絡層的任務就是選擇中間節點(路由器),以肯定兩臺主機之間的通訊路徑
(3) 傳輸層爲兩臺主機上的應用程序提供端到端的通訊。傳輸層只關心通訊的起始端和目的端,忽略數據包的中轉過程
傳輸層協議主要有三個:TCP協議、UDP協議和SCTP協議
(4) 應用層負責處理應用程序的邏輯。
數據鏈路層、網絡層和傳輸層負責處理網絡通訊細節,這部分必須既穩定又高效,所以在內核空間中實現。
而應用層則在用戶空間,由於它負責處理衆多邏輯,好比文件傳輸、名稱查詢等。
(1)TCP/IP協議通訊的過程?
瀏覽器訪問服務器服務流程:
一、瀏覽器訪問網址
二、dns協議解析域名
三、http協議---http數據,肯定數據傳輸格式等
四、TCP協議---加TCP首部----端口之間發送數據包----三次握手達成鏈接
五、IP協議---加IP首部----經過IP地址肯定網絡地址
六、以太網協議--加以太網首部----肯定mac地址(主機網卡的惟一標識)
(2)如何創建TCP/IP鏈接?
TCP協議提供可靠的鏈接服務,鏈接是經過三次握手進行初始化的。
所謂三次握手是指創建一個 TCP 鏈接時須要客戶端和服務器端總共發送三個包以確認鏈接的創建。
基礎信息:
TCP報文格式
(1)序列號:Sql序號,用來標識數據包,發起方發送數據時對此進行標記。
(2)確認序號:Ack序號,只有ACK標誌位爲1時,確認序號字段纔有效,Ack=Seq+1。
(3)標誌位:共6個,即SYN、ACK、PSH、RST、URG、FIN
(3)爲何要三次握手?
在《計算機網絡》一書中其中有提到,三次握手的目的是「爲了防止已經失效的鏈接請求報文段忽然又傳到服務端,
於是產生錯誤」
三次握手是在安全可靠的基礎上,握手次數最少的方案。兩次握手並不能保證可靠性。四次握手又浪費了效率
(1) TCP創建鏈接爲何須要三次握手而結束要四次揮手?
三次握手:client請求鏈接SYN---server確認收到,發送ACK和SYN---client確認收到
四次揮手:client請求關閉FIN---(server確認收到,發送ACK---server繼續發送數據直到完畢,發送FIN)
----client確認收到
(2)TCP與UDP的區別
(3) TCP的可靠傳輸原理
中止等待協議
連續ARQ協議
(1) https://www.jianshu.com/p/e7f...
(2) https://blog.csdn.net/be_happ...
(3) 計算機網絡第6版
7. 更多討論:
Q1:Sequence number序列號是什麼?
A1:Sql序號,用來標識數據包,發起方發送數據時對此進行標記。數據包的序號,有操做系統根據必定的算法生成,至關於id的做用。
Q2:acknowledgement number和ACK區別?
A2:ACK:標識符,只有0和1,只要有數據包的傳輸,ACK就要set爲1;
acknowledgement number:ack序號,只有ACK標誌位爲1時,確認序號字段纔有效,ack=Seq+1;
在數據包傳輸過程當中ack=seq+len;
Q3:TCP與UDP的區別
A3:TCP協議提供面向鏈接的,可靠的傳輸服務,但速度較慢,適合文件下載等傳輸任務;UDP協議提供無鏈接的,不可靠的傳輸服務,但速度較快,適合媒體流等看重傳輸速度的傳輸任務
8. 鳴謝:
9. 結束語:
今天的分享就到這裏啦,歡迎你們點贊、轉發、留言、拍磚~