計算機網絡基本原理(一)

一、五層網絡模型

1. 主要的網絡協議

以下每層列出的協議,都能夠在代碼或者操作系統中使用和管理,當程序進行網絡通信時,需要由這些協議共同協作完成。

  • 應用層,包括HTTP、TLS(SSL3.1)、DNS、Thrift、FTP等
  • 傳輸層,TCP(傳輸控制協議)、UDP(用戶報文協議)
  • 網絡層,IP(網際協議)
  • 鏈路層,ARP(地址解析協議)
  • 物理層,該層與硬件關係更爲緊密,無需太過關注

2. 網絡通信的過程

網絡通信的過程
在程序中發送HTTPS請求時,數據經過各層的處理,最終到達目標地址。上圖以https://www.baidu.com爲例,對各層處理的主要部分進行了描述,其中第1、2、3步在程序中進行,第4、5、6步在操作系統內核中進行,第7步由硬件設備完成,下面對每一步進行詳細描述:

  1. DNS解析將域名www.baidu.com轉換爲IPv4或IPv6地址,它依託於UDP協議向DNS服務器發送查詢請求並獲取響應信息。
  2. HTTP報文由程序中的httpclient工具生成,包含用戶設置的HTTP相關參數(URL、header、body等)。
  3. TLS協議通過四次握手機制協商出公鑰/私鑰,客戶端生成“會話密鑰”由公鑰加密發送到服務端,服務端通過私鑰解密獲取,最終使用該“會話密鑰”對HTTP報文進行加密。
  4. TCP連接通過三次握手機制建立,HTTP報文以字節流形式寫入,發送的數據都需要經過“發送-確認”的過程,以保證其完整送達到指定IP地址。
  5. IP數據包將字節流按MTU大小進行拆分,局域網內通常爲1500字節,互聯網通常爲512字節。IP數據包的頭信息上記錄了發送者IP和接收者IP。
  6. MAC幀在發送時,實際無法直接發送到指定的IP地址,需要內核根據路由表中記錄的信息(本地路由表查看命令route -n),通過“IP地址與子網掩碼”進行“與運算”得到下一跳的網關IP。然後,鏈路層通過ARP協議獲取網關IP的MAC地址(本地ARP緩存表查看命令arp -a),將發送者MAC地址和網關MAC地址封裝到MAC幀中。

二、關鍵的外部服務

上一節描述的網絡通信過程,需要多種外部服務的參與才能完成,包括DNS服務、CA服務、路由器、ISP服務。

1. DNS服務

DNS服務器由DNS服務提供商進行管理,提供根據域名查詢IP地址的服務,常見的DNS服務提供商有中國電信(114.114.114.114)和谷歌(8.8.8.8),Linux系統中在文件/etc/resolv.conf中和目錄/etcc/sysconfig/network-scripts/下使用cat命令查看配置的DNS服務器IP地址。

2. CA頒發與驗證服務

CA服務器提供了TLS協議中需要的證書頒發服務,在TLS進行四次握手時通過CA服務驗證服務器提供的證書是否可信。瀏覽器內置了多種CA服務器的地址,並且也可以在本地配置證書進行驗證(如:12306.cn需要在瀏覽器安裝私有證書)。

3. 路由器

路由器是個人電腦發送IP數據包到互聯網的第一道網關,路由器內置了相關ISP服務器的信息。

4. ISP服務器

ISP(Internet Service Provider)互聯網服務提供商(如:中國電信、中國聯通)是網絡服務的關鍵角色,ISP服務器的作用與路由器相同,它們記錄了龐大的路由表提供給數據鏈路層進行查詢。當我們想要將自己的服務器接入到互聯網中,需要付費給ISP進行註冊,本質就是在ISP服務添加了自己服務器的路由信息(實際還涉及到光纖建設等物理層實施,這裏不做描述)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章