一、什么是協議?
協議就是兩個或多個物件之間為了某個或多個需求而設定的約定,即在什么時間,遇到什么情況該做什么,
舉例: 小強和小明約定周末一起去玩小霸王游戲機,但是如果遇上停電就去掏鳥窩,
二、什么是TCP/IP協議?
TCP/IP 協議就是為了滿足世界上成千上萬的網路設備的各種通信需求而設計的一套約定,
舉例: 你要從某網站下載一部電影,如何實作呢?
首先網站服務器和你的電腦互相識別,需要 IP協議;
為了跨越幾千公里的互聯網找到一條通往你電腦的路徑,需要路由協議;
為了片子資料傳輸不丟失亂序重復,需要 TCP協議;
另外你可以用FTP協議接收電影,單個協議就是單個約定,以TCP為例,
約定了通信時超時怎么辦?
資料丟失怎么辦?
亂序怎么辦?
網路擁塞了怎么辦? 等等,
三、TCP/IP為什么這么多協議?
? 不是協議多,而是需求多,每個協議都是從具體的實際需求中產生的,需求多了,問題就多,為了解決一個個的問題,而出現了一個個的協議,
舉例:支付頁面一般是https,因為安全需求;
組播協議出現是因為網路點播需求;
IP over AOS 出現是因為宇航員方便上網的需求等等,
四、TCP/IP協議為什么分層?
? “分層”的思想可以應用到很多領域,它是復雜問題簡單化的有效方法,
協議分層好處: 協議只需關注本層問題,直接利用下層提供的服務,同時向上層提供服務,并且每層的更改不會影響其他層,
舉例:
經典四層模型: 應用層—>傳輸層—>網路層—>物理層(鏈路層)
五、TCP/IP協議如何入門?
要點1: 謹記“網路協議因需求而產生,以解決實際問題為目的”,因此學習某個協議一定要了解它的應用場景和提出目的,
要點2: 選一本好的入門教程,本人極力推薦謝希仁教授的《計算機網路》,本書概念清晰,思路明確,既不膚淺又不是很深入且面面俱到,現在已經出到第六版,本書閱讀不得低于3遍,
要點3: 針對某個協議,深入理解其報文格式是學習的關鍵,協議程式化后就是“資料結構+演算法”,報文格式就是“資料結構”,
要點4: 一定要動手實驗,這可以加深對協議理解,比如可以用網路抓包(如wireshark)學習某個協議的演算法,如ARP的發現程序,TCP的握手協議,TFTP的檔案傳輸原理,還可以網路編程,如簡單的網路攻擊軟體制作等,
六、TCP/IP 的分層:

七、各協議層打包和拆包程序:
在瀏覽器發送資訊到服務的時候,在通信協議的程序中,會分為四層:
首先,是應用層(http協議),封裝一些要傳遞的資訊,
其次,到傳輸層(tcp協議), tcp協議對應用層資料進行打包,
然后,到網路層(ip協議),通過ip找到對應的服務器,
最后,到鏈路層(通過物理的介質傳輸資料),
每一層都會對上一層進行打包,

八、瀏覽器訪問網頁的整個流程:

九、舉例:網上購物的請求流程
1.各層間的走向
客戶端(瀏覽器) —> 應用層 (http,https,DNS)—> 傳輸層(TCP, UDP) —> 網路層 (IP)—>物理層—> 服務器
—> 物理層—>網路層 —> 傳輸層 —> 應用層 —>具體的應用處理
2.具體的請求程序
你先在瀏覽器里面輸入 https://www.kaola.com ,這是一個URL,瀏覽器只知道名字
是“www.kaola.com”,接著它打開地址簿去查找(DNS),查找到對應的 IP(106.114.138.24) 地址,
知道了具體的 IP 地址后,瀏覽器開始打包請求(HTTP):

經過應用層封裝后,瀏覽器會將應用層的包交給下一層去完成,通過 socket 編程來實作,下一層是傳輸層(TCP, UDP),TCP 協議里面會有兩個埠,一個是瀏覽器監聽的埠,一個是電商的服務器監聽的埠,作業系統往往通過埠來判斷,它得到的包應該給哪個行程,

傳輸層封裝完畢后,瀏覽器會將包交給作業系統的網路層,網路層的協議是 IP 協議,在 IP 協議
里面會有源 IP 地址,即瀏覽器所在機器的 IP 地址和目標 IP 地址,也即電商網站所在服務器的
IP 地址,

于是作業系統將 IP 包交給了下一層,也就是MAC 層,網卡再將包發出去,由于這個包里面是
有 MAC 地址的,因而它能夠到達網關,
網關收到包之后,會根據自己的知識,判斷下一步應該怎么走,網關往往是一個路由器,到某個
IP 地址應該怎么走,這個叫作路由表,

走到最后一個網關后,通過 IP 找到具體的機器,通過埠找到對應的應用進行處理該筆請求,
3.服務器端處理流程

參考資料:
①書籍《圖解HTTP》
②極客時間|趣談網路協議 --劉超
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/51332.html
標籤:其他
上一篇:利用開源軟體自建WAF系統--OpenResty+unixhot
下一篇:涉密資訊系統
