TCP/IP協定是什麼
TCP/IP協定是一個面向連接配接的可靠的網絡協定
面向連接配接:一個邏輯概念,它需要自己與目标主機進行三次握手來建立連接配接才能完成通信。建立連接配接完成也會進行資源的配置設定。
可靠的:連接配接時三次握手确認機制保證自己與目标主機的連接配接。四次分手機制來保證連接配接資源的釋放。每次接收消息都會傳回發送方ack确認包。
什麼是三次握手

這個圖就表示三次握手的過程,我個人認為他就是為了保證可靠性而進行的一個測試,測試兩台主機是否能接受對方的消息,是否能給對方發送消息。如果都沒有問題那麼建立連接配接,配置設定資源,生成socket
什麼是四次分手
四次分手其實就是釋放資源前确認的過程
為什麼需要四次分手
連接配接的兩個主機是不能隻顧着自己釋放資源的,需要兩個人同時同意才能釋放資源。如同一對戀人,不能隻顧着自己,如果隻有一個主機釋放了資源另外 一個主機還認為正在建立連接配接那麼就會出現歧義。
注意
HTTP1.0 沒有KEEP-ALICE,對于我們用浏覽器請求網址時,我們就與伺服器建立了連接配接,如果不保持連接配接的話,我沒每次請求都會有三次握手四次分手,配置設定資源釋放資源的過程,這肯定是不合理的,是以HTTP1.1引入了KEEP-ALIVE放在請求頭中用于保持連接配接。
HTTP協定通信過程
當我們應用層程式請求與目标主機進行通信時,就會把請求資訊交給傳輸控制層,傳輸控制層接到請求會嘗試與目标主機進行建立連接配接,也就是三次握手,
那麼第一個問題來了,傳輸控制層如何找到目标主機在哪。
首先呢作業系統不可能去維護到達網際網路值每一個主機的路徑,太多了,沒辦法實作。是以就引入了一個NEXT JUMP機制。
什麼是NEXT JUMP機制
要搞懂這個問題先看這張圖
網際網路是由多個區域網路來組成了,當我們一個區域網路來調用其他區域網路的主機時我們隻需要告訴跳點(中間節點)我要與哪個IP通信。
先解釋如何查找跳點
在作業系統中維護者一個路由表,路由表由目标主機号、網關、掩碼等組成當傳輸控制層接收到請求後會通過網絡層去route table中去周遊路由表,先将IP位址與掩碼進行二進制與運算,再與對應的目标主機号進行對比,如果相等就将請求交給目标主機,如果不等依次類推,這個相等的目标節點就是跳點。
在我們傳遞資料包時除了ip:port外還需要加一個MAC位址,表示下一個跳點,跳點收到資料包後發現MAC位址是自己的但是IP位址不是自己,先将保中MAC位址拆除,然後在路由表中找到到達目标位址的下一個跳點并添加MAC位址,重複操作直到找到目标主機。
路由表的維護就是由網絡層做的,跳點的拆包裝包是由資料鍊路層來做的。而最後的實體層就是由高低電平來傳遞資料包的。
找到目标主機後就會進行三次握手,建立連接配接,進行通信。