當發出一個http請求時,如在瀏覽器輸入www.baidu.com並回車時,其流程如下所示:

應用層
應用層規定了應用程序之間如何相互傳遞報文,以HTTP協議為例,規定了:
- 報文類型:請求或者是響應報文
- 報文語法:分為幾段,每段的含義 分隔符 每個部分的每個字段的含義
- 進程應該以什么樣的時序發送報文和處理響應報文
HTTP報文格式由三部分組成:
- 起始行:確定是請求還是響應報文
- 首部(header):常見的K-V結構,如
Content-length - 可選的實體(entity):實體就是
HTTP真正要傳輸的內容,比如傳輸的一段HTML
如下所示:

除了我們熟知的HTTP協議,還有下面這些非常常用的應用層協議
- 域名解析協議
DNS - 郵件收發協議
SMTP和POP3 - 時鍾同步協議
NTP - 網絡文件共享協議
NFS
傳輸層
傳輸層的作用是為兩台主機之間的應用進程提供端到端的邏輯通信,相隔幾千公里的兩台主機的進程可以直接進行通信。傳輸層主要對傳輸行為進行控制,主要的協議有TCP和UDP。TCP主要為下面兩層協議提供數據包的重傳、流量控制、擁塞控制等。

傳輸層使用端口號來標識不同的應用程序,主機收到數據包以后根據目標端口號將數據包傳遞給對應的應用程序進行處理。比如常見的80端口,服務器在接收到請求之后,將會把這個請求交給監聽80端口的應用程序(也有可能是Ngix等負載均衡器)處理。

網絡互連層
網絡互連層提供了主機到主機的通信,將傳輸層產生的數據包封裝成分組數據包發送到目標主機,並提供路由選擇的能力。這層的主要協議主要是IP協議,TCP和UDP都是使用IP協議作為網絡層協議。這一層的主要作用就是給包加上源地址和目標地址,將數據包傳送到目標地址。

網絡訪問層
網絡訪問層也稱之為網絡接口層,以太網、WIFI以及藍牙都是在這一層,網絡訪問層提供了主機連接到物理網絡需要的硬件和相關協議。
整體分層圖如下所示:

分層好處
- 限制了依賴關系范圍,各層之間使用標准化接口,各層之間不需要知道上下層如何工作
- 靈活性更好
- 易於測試和維護
- 促進標准化
