精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

斯坦福 CS144 計算機網絡播客:互聯網核協議NAT, HTTP, BitTorrent/P2P, DNS, DHCP

網絡 通信技術
瀏覽器獲得了網頁的 HTML 源代碼。 瀏覽器會解析 HTML,如果發現其中還引用了其他資源(如 CSS 文件、圖片、JavaScript 文件),它會重復上述的第 3 步和第 4 步(如果域名相同,會重用已建立的 TCP 連接),去獲取這些資源,最終將完整的網頁渲染出來,呈現給你。?

本文將依次探討五個核心主題:

  1. 網絡地址轉換 (NAT) :它是如何讓億萬設備共享有限的 IPv4 地址,又給 P2P 應用帶來了哪些挑戰?
  2. 超文本傳輸協議 (HTTP) :作為 Web 的語言,它經歷了怎樣的演變?
  3. BitTorrent :P2P 文件共享背后蘊含著怎樣的智慧與博弈論?
  4. 域名系統 (DNS) :這個龐大的分布式“電話簿”是如何工作的?
  5. 動態主機配置協議 (DHCP) :我們是如何實現“即插即用”上網的?

希望這篇文章能帶你一窺網絡世界的精妙設計。

網絡地址轉換 (NAT):內網“保護傘”與 P2P 的“攔路虎”

你是否想過,為什么家里有多臺設備(手機、電腦、智能電視),卻通常只有一個公共 IP 地址?這背后的功臣就是 網絡地址與端口轉換 (Network Address Port Translation, NAPT) ,通常被簡稱為 NAT。它的核心使命是解決 IPv4 地址枯竭的問題,讓多個位于內網的設備能共享同一個公共 IP 地址訪問互聯網。

NAPT 的運作機制

想象一下,你的路由器就是一個公司的“前臺”。所有內部員工(內網設備)要寄信(發起網絡連接)時,都把信交給前臺,由前臺統一用公司的地址(公共 IP)寄出。前臺會記錄下是誰(內網 IP 和端口)、在什么時間、要寄給誰(目標 IP 和端口)。當收到回信時,前臺再根據記錄把信準確地分發給對應的員工。

這個“前臺”就是 NAPT 設備。當內網一臺 IP 地址為 10.0.0.7 的電腦向 Stack Overflow (151.101.1.69) 發起 TCP 連接時,數據包的源地址最初是 10.0.0.7:8000 (假設源端口是 8000)。

  1. 數據包離開內網 : 當數據包到達 NAPT 設備(路由器)時,設備會重寫數據包的源信息。
  2. 建立映射規則 : NAPT 會將源 IP 地址替換為自己的公共 IP 地址(例如 120.10.20.30),并將源端口替換為一個臨時的、未被占用的端口(例如 54321)。同時,它會在內部的映射表中創建一條規則。

這張映射表看起來像這樣:

+------------------------------------+-------------------------------------+
|         Internal Endpoint          |          External Endpoint          |
+------------------------------------+-------------------------------------+
|      (src) 10.0.0.7 : 8000         |      (src) 120.10.20.30 : 54321     |
| (dst) 151.101.1.69 : 443 (https)   | (dst) 151.101.1.69 : 443 (https)    |
+------------------------------------+-------------------------------------+
  1. 外部服務器響應 : Stack Overflow 的服務器看到的是一個來自 120.10.20.30:54321 的請求。它的響應包將以此為目標地址。
  2. 數據包返回內網 : 當響應包回到 NAPT 設備時,設備會查詢映射表,找到 120.10.20.30:54321 對應的內部地址是 10.0.0.7:8000。于是,它再次重寫數據包的目標地址和端口,并將其轉發給內網的電腦。

這個映射規則是動態創建的,當 TCP 連接關閉或長時間不活躍后,它會被自動 垃圾回收 (garbage collected) 。

NAPT 的雙重角色:節約與防護

NAPT 的主要優勢有兩個:

  • IP 地址共享 :這是它的初衷,極大地延緩了 IPv4 地址的耗盡。
  • 基礎防火墻 :由于 NAPT 只會轉發那些“有記錄可查”(即由內部設備主動發起)的返回數據包,對于外部網絡主動發起的連接請求,NAPT 會因為找不到匹配的映射規則而直接丟棄。這無形中為內網設備提供了一層基礎的安全保護。

NAPT 的四種類型

根據 RFC 3489 的定義,NAPT 根據其映射和過濾行為的嚴格程度可以分為四種類型:

  1. 全錐型 (Full Cone) :最寬松的類型。一旦一個內部地址 (IP_in:Port_in) 映射到了一個外部地址 (IP_out:Port_out),任何外部主機都可以通過向 IP_out:Port_out 發送數據來訪問 IP_in:Port_in。
  2. 受限錐型 (Restricted Cone) :比全錐型嚴格一些。它要求只有之前該內部主機發送過數據的那個外部 IP 地址,才能向映射的外部端口發送數據。
  3. 端口受限錐型 (Port Restricted Cone) :最嚴格的“錐型”。它不僅要求源 IP 地址匹配,還要求源端口也必須匹配。
  4. 對稱型 (Symmetric) :這是最嚴格且最麻煩的一種。對于同一個內部 IP 和端口,當它請求不同的外部目標時,NAPT 會為它分配不同的外部端口映射。例如,訪問服務器 A 可能映射為端口 50001,訪問服務器 B 則映射為端口 50002。這對 P2P 應用是毀滅性的,因為兩個客戶端很難預測對方的下一個映射端口。

一個例子深入理解 NAPT 的四種類型

為了更清晰地理解這四種 NAPT 類型,我們來設定一個場景并貫穿始終:

  • 你的電腦 (Alice) :內網地址為 192.168.1.10:12345。
  • 你的路由器 (NAT) :公網 IP 地址為 120.10.20.30。
  • 游戲服務器 (Bob) :IP 地址為 203.0.113.10:80。
  • 語音服務器 (Charlie) :IP 地址為 198.51.100.20:90。
  • 路人玩家 (Dave) :IP 地址為 200.20.30.40,他想直接連接你。

現在,你的電腦 (Alice) 首先向游戲服務器 (Bob) 發送了一個數據包,啟動了游戲。你的路由器 (NAT) 為此創建了一條映射規則。讓我們看看不同類型的 NAT 在此之后會如何表現。

全錐型 (Full Cone)

這是最“開放”的 NAT。當 Alice 連接 Bob 時,NAT 會在公網 120.10.20.30 上打開一個端口(比如 54321)并映射到 Alice 的 192.168.1.10:12345。

  • 映射規則 :120.10.20.30:54321 <-> 192.168.1.10:12345
  • 行為特點 :這個 54321 端口現在對整個互聯網開放。 任何人 (無論是 Bob、Charlie 還是路人 Dave)只要向 120.10.20.30:54321 發送數據,NAT 都會將其轉發給 Alice。
  • 生活比喻 :你點了一份外賣(連接 Bob),外賣員知道了你的公寓地址和房間號。在全錐型 NAT 下,你家的門(54321 端口)就此敞開,不僅外賣員能進來,你的朋友、鄰居、甚至任何知道你地址的路人都能直接推門進來。這對 P2P 應用(如語音聊天)非常友好。
受限錐型 (Restricted Cone)

這種 NAT 增加了一層“IP 地址”限制。

  • 映射規則 :同上,120.10.20.30:54321 <-> 192.168.1.10:12345。
  • 行為特點 :只有 曾經接收過 Alice 數據的 IP 地址 (在這個例子里是 Bob 的 203.0.113.10)才能向 120.10.20.30:54321 發送數據并被轉發。來自 Charlie 或 Dave 的數據包會被 NAT 丟棄。
  • 生活比喻 :你點了一份外賣。現在,你家的樓棟有了門禁,只有外賣員(Bob)刷他的門禁卡(IP 地址 203.0.113.10)才能進入樓棟給你送東西。你的朋友(Charlie)和路人(Dave)因為沒有門禁卡,所以被攔在樓下。
端口受限錐型 (Port Restricted Cone)

這是最嚴格的“錐型” NAT,在 IP 地址的基礎上,又增加了“端口”限制。

  • 映射規則 :同上。
  • 行為特點 :只有 嚴格匹配 Alice 曾經通信過的 IP 和端口 (即 Bob 的 203.0.113.10:80)的數據包,才能被 NAT 轉發。如果 Bob 換了一個端口(比如從 203.0.113.10:8888)給你發消息,也會被拒絕。
  • 生活比喻 :門禁系統升級了。它不僅認識外賣員(Bob 的 IP),還只認他用來聯系你的那部特定手機(端口 80)。如果外賣員換個手機給你打電話,門禁系統就不認了。
對稱型 (Symmetric)

這是對 P2P 應用最不友好的類型,因為它的映射是“動態且有針對性的”。

  • 行為特點 :映射關系與 目標地址 有關。

當 Alice 連接游戲服務器 Bob (203.0.113.10:80) 時,NAT 創建映射:120.10.20.30:54321 <-> 192.168.1.10:12345。只有 Bob 能通過這個映射聯系 Alice。

如果此時,Alice 又從 同一個 內網端口 192.168.1.10:12345 去連接語音服務器 Charlie (198.51.100.20:90),對稱型 NAT 會 創建一個全新的、不同的 公網端口映射,例如:120.10.20.30:61111 <-> 192.168.1.10:12345。只有 Charlie 能通過這個新映射聯系 Alice。

  • 生活比喻 :你是一個特工,對外有多個一次性電話。聯系 Bob 時,你用電話 A (54321);聯系 Charlie 時,你用電話 B (61111)。Bob 無法通過電話 B 找到你,反之亦然。如果你想讓 Bob 和 Charlie 直接通話,他們互相告知的電話號碼都是錯的,因為那個號碼只對你有效。這就是為什么對稱型 NAT 會嚴重阻礙 P2P 通信。

應對 NAPT 的挑戰

NAPT 的防火墻特性也給需要 傳入連接 (incoming connections) 的應用(如 P2P 下載、在線游戲、視頻會議)帶來了巨大挑戰。為了穿透這層“保護”,開發者們想出了多種策略:

  • 中繼 (Relay) :通過一個公共服務器(如 TURN 服務器)來轉發所有數據。這是最可靠但成本最高的方式。
  • 連接反轉 (Connection Reversal) :兩個客戶端 A 和 B 都連接到一個公共的 會合服務器 (Rendezvous Server) 。當 A 想連接 B 時,它通過服務器告訴 B。然后,B 主動向 A 發起連接。
  • **端口轉發 (Port Forwarding)**:在路由器上手動配置一條靜態規則,將某個外部端口的所有流量都轉發到指定的內部 IP 和端口。
  • NAT 穿透 (NAT Hole Punching) :一種非常巧妙的技術。客戶端 A 和 B 首先都通過一個公共服務器(如 STUN 服務器 )獲知自己經過 NAT 轉換后的公網 IP 和端口。然后,它們嘗試 同時 (Simultaneous Open) 向對方的公網地址發送數據。這個動作會“欺騙”雙方的 NAPT 設備,讓它們各自創建一條“允許對方進入”的映射規則,從而打通一條直接的 P2P 通道。

為了讓網絡應用更好地工作,后續的 RFC 規范(如 RFC 4787)建議 NAPT 設備應實現更友好的行為,例如 端點獨立映射 (Endpoint-Independent Mapping) (即不要做對稱型 NAT)和支持 發卡彎 (Hair-pinning) (允許內網設備通過路由器的公網 IP 訪問另一個內網設備)。

NAT 穿透策略詳解

面對 NAT 的阻礙,開發者們發明了多種“穿透”技術,其核心思想都是借助一臺在公網上的、地址固定的服務器來協調兩個位于 NAT 后的客戶端建立連接。

中繼 (Relay) - TURN 協議

這是最可靠但也最“笨”的方法,它的代表是 TURN (Traversal Using Relays around NAT) 協議。

  • 工作原理 :當中繼服務器介入時,它不試圖建立直接連接,而是充當一個數據“中轉站”。

客戶端 A 和 B 都無法直接通信。

于是,A 和 B 都與公網上的 TURN 服務器建立連接。

A 想發送數據給 B 時,它先把數據包封裝一層,目標地址寫成 TURN 服務器。

TURN 服務器收到后,拆開封裝,看到里面真正的目標是 B,于是將數據轉發給 B。

  • 比喻 :你和你的朋友住在兩個管理嚴格、禁止訪客的小區。為了交流,你們都把信寄給一個共同的、地址公開的“郵政信箱”(TURN 服務器),再由這個信箱的管理員把信分發給對方。
  • 優缺點 :優點是它幾乎能兼容所有類型的 NAT(包括對稱型),是最后的保底方案。缺點是所有流量都要經過服務器中轉,這會增加延遲,并且極大地消耗服務器的帶寬和計算資源,成本高昂。
NAT 穿透 (Hole Punching) - STUN 協議

這是一種更高效、更主流的技術,其核心在于“打洞”。它通常需要 STUN (Session Traversal Utilities for NAT) 協議的輔助。

第一步:自我認知 (STUN 的角色)

STUN 服務器非常簡單,像一面“鏡子”。

  1. 客戶端 A 向公網的 STUN 服務器發送一個請求。
  2. 數據包穿過 A 的 NAT 時,源地址被改寫為公網地址,例如 A_public_IP:A_public_port。
  3. STUN 服務器收到包后,它并不關心包的內容,而是讀取包的源地址 A_public_IP:A_public_port,并把這個地址作為響應數據發回給 A。
  4. 這樣,客戶端 A 就從“鏡子”里看到了自己在外網的樣子。

第二步:打洞 (Hole Punching 的過程)

現在,假設 A 和 B 都通過 STUN 服務器知道了自己的公網地址,并通過一個信令服務器(Rendezvous Server)交換了這些信息。

  1. 約定時間 :A 和 B 約定好,在某個時刻 同時 向對方的公網地址發送一個 UDP 數據包。
  2. A 的動作 :A 從其內網端口向 B 的公網地址 B_public_IP:B_public_port 發送數據包。這個動作會迫使 A 的 NAT 創建一條映射規則,并打開一個“洞”,該規則允許來自 B_public_IP:B_public_port 的數據進入。
  3. B 的動作 :與此同時,B 也從其內網端口向 A 的公網地址 A_public_IP:A_public_port 發送數據包。同樣,B 的 NAT 也創建了一條規則,打開了一個允許 A_public_IP:A_public_port 進入的“洞”。
  4. 連接建立 :當 A 的數據包到達 B 的 NAT 時,B 的 NAT 查表發現“哦,我正等著這個地址來的包呢”,于是放行。反之亦然。這樣,一條直接的 P2P 通道就奇跡般地建立起來了。
  • 比喻 :你和朋友被關在相鄰的兩個房間,墻壁很薄。你們事先約好,數到三就同時對著墻上同一個位置用力一推。由于你們同時向外用力,墻壁(NAT 規則)就被推開了一個洞,你們可以直接對話了。
  • 局限性 :這個方法對錐型 NAT 非常有效,但常常在對稱型 NAT 上失敗。因為對稱型 NAT 會為不同的目標地址創建不同的公網端口,A 在 STUN 服務器上看到的端口,與 A 連接 B 時 NAT 創建的端口很可能不是同一個。

超文本傳輸協議 (HTTP):從簡單文檔到現代 Web 的基石

超文本傳輸協議 (Hypertext Transfer Protocol, HTTP) 無疑是現代互聯網的通用語言。它最初被設計用來傳輸 HTML 文檔,如今已發展為承載網頁、視頻流、API 調用等各種網絡應用的基礎。

HTTP 的基本模型

HTTP 是一個運行在 TCP 之上的客戶端-服務器協議。其交互流程非常直觀:

  1. 客戶端(如瀏覽器)與服務器建立一個 TCP 連接。
  2. 客戶端向服務器發送一個 請求 (Request) 。
  3. 服務器處理請求,并返回一個 響應 (Response) 。

請求和響應都采用易于閱讀的 ASCII 文本格式。它們都由三部分組成:

  • 起始行 (Start Line) :對于請求,是 方法 URL 版本(如 GET /index.html HTTP/1.1);對于響應,是 版本 狀態碼 描述(如 HTTP/1.1 200 OK)。
  • 頭部 (Headers) :零個或多個鍵值對,提供關于請求/響應的元數據。
  • 消息體 (Body) :可選的、實際傳輸的數據。

一個簡單的 HTTP GET 請求如下:

GET /wiki/Main_Page HTTP/1.1
Host: en.wikipedia.org
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,*/*

HTTP 的演進之路

HTTP/1.0 的短板 :早期的 HTTP/1.0 有一個顯著的性能問題: 每個請求都需要建立一個新的 TCP 連接 。加載一個包含許多圖片和腳本的網頁,意味著需要進行數十次 TCP 的“三次握手”,這不僅耗時,也使得 TCP 的擁塞控制窗口難以有效增長,傳輸效率低下。

  • HTTP/1.1 的改進:持久連接 :HTTP/1.1 引入了 Connection: Keep-Alive 頭部(后來成為默認行為),允許在 同一個 TCP 連接上發送多個請求和接收多個響應 。這極大地減少了連接建立的開銷,是 Web 性能的一次飛躍。
  • HTTP/2 的未來:多路復用 :盡管 HTTP/1.1 解決了連接復用的問題,但隊頭阻塞 (Head-of-Line Blocking) 問題依然存在。HTTP/2(其前身是 Google 的 SPDY 協議)通過引入 多路復用 (Multiplexing) ,允許在一個 TCP 連接上同時發送多個請求和響應,并且響應可以不按請求的順序返回。它還支持頭部壓縮,進一步提升了效率。如今,HTTP/2 已經成為主流,而 HTTP/3 正在興起。

HTTP/2:解決隊頭阻塞的“多車道”高速公路

HTTP/1.1 的持久連接雖然減少了 TCP 握手的次數,但引入了新的問題: 隊頭阻塞 (Head-of-Line Blocking) 。在一個 TCP 連接上,所有請求是按順序發送的,響應也必須按順序回來。如果第一個請求(比如一個復雜的 API 調用)被服務器卡住了,那么后面的請求(比如加載一張小圖片)即使服務器已經處理完了,也必須排隊等著,導致整個頁面加載變慢。

HTTP/2 帶來了革命性的解決方案: 多路復用 (Multiplexing) 。

  • 核心概念:流 (Stream) 與幀 (Frame) :HTTP/2 將每個“請求-響應”視為一個獨立的、帶編號的“ 流 ”。然后,它把每個流的數據分割成更小的二進制“ 幀 ”。這些來自不同流的幀可以在同一個 TCP 連接上混合交錯地發送,到達對端后再根據編號重新組裝成完整的流。
  • 比喻

HTTP/1.1 就像一條 單車道 。前面有一輛慢悠悠的拖拉機(慢請求),后面的法拉利(快請求)也只能跟著堵車。

HTTP/2 則是 多車道高速公路 。拖拉機在慢車道走,法拉利在快車道飛馳,它們共享一條路(一個 TCP 連接),但互不干擾。

除了多路復用,HTTP/2 還帶來了兩個重要特性:

  1. 頭部壓縮 (HPACK) :HTTP 請求和響應的頭部信息有很多是重復的(如 User-Agent, Accept 等)。HPACK 算法可以智能地壓縮這些頭部,只發送變化的部分,大大減少了傳輸的數據量。
  2. 服務器推送 (Server Push) :服務器可以在瀏覽器請求一個 HTML 文件的同時,就“預見”到瀏覽器接下來肯定會請求相關的 CSS 和 JS 文件,于是主動將這些資源“推送”過去,減少了請求的往返次數。

HTTP/3:徹底告別 TCP,擁抱 QUIC

盡管 HTTP/2 解決了應用層的隊頭阻塞,但它依然建立在 TCP 之上,而 TCP 本身也存在隊頭阻塞問題。TCP 要求數據按序到達。如果一個 TCP 數據包在網絡中丟失,那么操作系統必須等待這個包被重傳并成功接收后,才會將后續的、已經到達的數據包交給上層應用。在這個等待期間,TCP 連接上的所有 HTTP/2 流都會被卡住。

為了根除這個問題,HTTP/3 做出了一個大膽的決定: 放棄 TCP,改用一個建立在 UDP 之上的新協議——QUIC (Quick UDP Internet Connections) 。

QUIC 的核心優勢

  1. 內置多路復用 :QUIC 自己實現了流的概念。一個 QUIC 連接可以包含多個流,每個流之間的數據是獨立傳輸和確認的。如果一個流的數據包丟失,只會阻塞那一個流,其他流完全不受影響。這徹底解決了傳輸層的隊頭阻塞。
  2. 更快的連接建立 :QUIC 將 TCP 的三次握手和 TLS(用于加密)的握手過程合并了。建立一個安全的 QUIC 連接通常只需要 1 個往返時延 (RTT),甚至對于已經訪問過的站點可以實現 0-RTT,大大降低了延遲。
  3. 更好的擁塞控制和連接遷移 :QUIC 的擁塞控制算法更靈活,并且連接不依賴于 IP 地址和端口四元組,而是依賴于一個唯一的連接 ID。這意味著當你的手機從 Wi-Fi 切換到 4G 網絡時,你的 IP 地址變了,但 QUIC 連接可以無縫遷移,下載或視頻通話不會中斷。

比喻

  • HTTP/2 over TCP 像是用一架大貨機(TCP 連接)運輸來自不同客戶(HTTP 流)的集裝箱。雖然集裝箱可以混裝,但只要貨機本身(TCP)延誤或出故障,所有客戶的貨都得等著。
  • HTTP/3 over QUIC 則像是為每個客戶都派了一架專屬的敏捷無人機(QUIC 流)。一架無人機迷路了,完全不影響其他無人機準時送達。

BitTorrent:P2P 文件共享的智慧與博弈

與傳統的客戶端-服務器下載模式不同, BitTorrent 是一種高效分發大文件的 點對點 (Peer-to-Peer, P2P) 協議。它的核心思想是“人人為我,我為人人”,讓每個下載者同時也成為上傳者,從而將下載壓力分散到整個網絡中。

核心概念

  • 文件分塊 (Pieces) :一個大文件會被切分成許多固定大小的“ 塊 (pieces) ”(通常為 256KB 或更大)。
  • 種子文件 (Torrent File) :這是一個小文件,包含了文件的元數據(如大小、分塊信息、每個塊的 SHA-1 哈希值)以及如何聯系 追蹤器 (Tracker) 或其他對等節點的信息。
  • 群 (Swarm) :所有正在下載或分享同一個文件的客戶端(或稱 對等節點 (peers) )組成的集合。
  • 追蹤器 (Tracker) :一個服務器,負責記錄群中有哪些活躍的對等節點。現代 BitTorrent 客戶端越來越多地使用 分布式哈希表 (Distributed Hash Table, DHT) 技術,實現了無需追蹤器的去中心化網絡。

關鍵算法:效率與公平的博弈

BitTorrent 的高效運作離不開幾個精妙的算法:

  1. 稀有塊優先 (Rarest First Policy) :客戶端會優先請求那些在它的鄰居節點中最稀有的文件塊。這個策略有兩個好處:

保證塊的多樣性 :確保所有塊都能在網絡中均勻分布,避免某些塊因只有少數節點擁有而成為下載瓶頸。

延長文件生命周期 :即使最初的發布者下線,只要所有塊都至少在網絡中存在一份,整個文件就能被完整地恢復出來。

  1. 一報還一報 (Tit-for-Tat / Choking Algorithm) :這是 BitTorrent 的激勵機制,鼓勵分享。每個客戶端會周期性地評估哪些對等節點為自己提供了最快的上傳速度。它會優先向這些“貢獻最大”的節點上傳數據(這個過程稱為 解除限制 (unchoking) ),同時暫時停止向其他節點上傳(稱為 限制 (choking) )。
  2. 樂觀的解除限制 (Optimistic Unchoking) :為了發現新的、可能更優質的上傳伙伴,客戶端會每隔一段時間,隨機地為一個被限制的節點“解除限制”。這給了新加入的節點一個獲取初始文件塊的機會,也讓系統有機會擺脫局部最優,找到更好的數據源。

最后,通過校驗 Torrent 文件中提供的哈希值,BitTorrent 保證了下載數據的 完整性 ,防止數據在傳輸過程中被損壞或篡改。

域名系統 (DNS):互聯網的“電話簿”

當你在瀏覽器輸入 www.stanford.edu 時,計算機是如何知道要去哪個 IP 地址獲取信息的?答案就是 域名系統 (Domain Name System, DNS) ,這個系統扮演著互聯網“電話簿”的角色,負責將人類易于記憶的域名翻譯成機器能夠理解的 IP 地址。

DNS 的設計原則

在 DNS 出現之前,域名和 IP 的映射關系存儲在一個名為 hosts.txt 的本地文件中。隨著互聯網的擴張,這種集中式管理方式很快暴露了可伸縮性、管理和健壯性問題。DNS 的設計正是為了解決這些問題,其核心原則包括:

  • 分布式管理 :不同域名的管理權可以委托給不同的組織。
  • 層次化命名空間 :域名結構呈樹狀,易于擴展和管理。
  • 健壯性 :通過冗余和緩存機制,確保系統的可用性。
  • 讀多寫少,寬松一致性 :DNS 查詢遠多于更新,系統允許數據更新有一定的延遲。

域名解析之旅

DNS 的查詢過程是一個精妙的協作過程,主要分為兩種查詢類型:

  • 遞歸查詢 (Recursive Query) :客戶端向其本地 DNS 解析器(通常由 ISP 提供)發起請求,并期望解析器返回最終的 IP 地址。
  • 迭代查詢 (Non-recursive/Iterative Query) :解析器在收到遞歸查詢后,會向其他 DNS 服務器發起一系列的迭代查詢。

讓我們以查詢 www.cs.stanford.edu 為例,看看一次典型的解析過程:

  1. 你的電腦向本地 DNS 解析器發起遞歸查詢:“www.cs.stanford.edu 的 IP 是什么?”
  2. 本地解析器(如果緩存中沒有答案)會向 根服務器 (Root Server) 發起迭代查詢。
  3. 根服務器回答:“我不知道,但 .edu 的 頂級域 (Top-Level Domain, TLD) 服務器知道。它們的地址是...”
  4. 本地解析器轉向 .edu TLD 服務器查詢。
  5. .edu TLD 服務器回答:“我不知道,但 stanford.edu 的 權威名稱服務器 (Authoritative Name Server) 知道。它們的地址是...”
  6. 本地解析器再轉向 stanford.edu 的權威名稱服務器查詢。
  7. stanford.edu 的服務器可能最終會找到 www.cs.stanford.edu 的 IP 地址,或者指向 cs.stanford.edu 這個子域的名稱服務器,再進行一次查詢。
  8. 最終,本地解析器獲得 IP 地址,返回給你的電腦,并將其緩存起來以備后用。

資源記錄 (RR) 與膠水記錄

DNS 中存儲的信息單元被稱為 資源記錄 (Resource Records, RRs) 。常見的記錄類型有:

  • A 記錄:將域名映射到 IPv4 地址。
  • AAAA 記錄:將域名映射到 IPv6 地址。
  • NS 記錄:指定管理某個域的權威名稱服務器。
  • MX 記錄:指定接收該域郵件的郵件服務器。
  • CNAME 記錄:為一個域名創建別名。

這里有一個有趣的概念叫 膠水記錄 (Glue Records) 。想象一下,如果 example.com 的 NS 記錄是 ns1.example.com。當你向 .com TLD 服務器查詢 example.com 的 NS 記錄時,它返回 ns1.example.com。但為了找到 ns1.example.com,你又需要查詢 example.com 的 DNS... 這就陷入了一個“雞生蛋,蛋生雞”的死循環。

為了解決這個問題,.com TLD 服務器在返回 NS 記錄 ns1.example.com 的同時,會附帶上 ns1.example.com 的 IP 地址。這個附帶的 A 記錄就是“膠水”,它將查詢過程“粘合”起來,使其能夠繼續進行。

動態主機配置協議 (DHCP):“即插即用”的網絡魔法

當你帶著筆記本電腦到一個新的咖啡館,連上 Wi-Fi 后幾乎瞬間就能上網,這個“即插即用”的體驗背后,是 動態主機配置協議 (Dynamic Host Configuration Protocol, DHCP) 在默默工作。它使得設備無需手動配置就能自動獲取上網所需的網絡參數。

DHCP 的使命

DHCP 主要解決三大問題:

  • 自動配置 :自動為設備分配 IP 地址、子網掩碼、默認網關和 DNS 服務器地址。
  • 簡化管理 :對于移動設備,當它從一個網絡移動到另一個網絡時,能自動獲取新的配置。
  • 高效利用 IP :通過 租約 (Lease) 機制,可以將不再使用的 IP 地址回收,分配給新的設備。

DHCP 是一個應用層 (Application Layer) 協議

這可能會讓人感到有些困惑,但我們可以從以下幾點來理解:

  1. 封裝結構 :這是最根本的判斷依據。協議棧的封裝遵循自上而下的原則。DHCP 協議的消息(如 DHCP DISCOVER)是作為 用戶數據報協議 (User Datagram Protocol, UDP) 的載荷來傳輸的。而 UDP 是一個 傳輸層 (Transport Layer) 協議。在 TCP/IP 模型中,任何運行在傳輸層之上的協議都被歸類為應用層協議。所以,其封裝順序是:DHCP 消息 -> UDP 頭部 -> IP 頭部 -> 以太網幀頭部。
  2. 工作模式 :DHCP 采用 客戶端-服務器 (Client-Server) 的通信模型。網絡中存在 DHCP 客戶端(你的電腦)和 DHCP 服務器(通常是路由器)。這種 C/S 模型是應用層協議的一個典型特征,與 HTTP、FTP、DNS 等協議類似。
  3. 功能與位置的分離 :我們需要區分一個協議的“功能”和它在協議棧中的“位置”。DHCP 的 功能 是為網絡層進行配置,但它實現這個功能所 依賴的服務 來自傳輸層(UDP)。可以把它理解成一個“網絡管理應用”,這個應用本身運行在應用層,它通過標準的網絡通信(UDP/IP)來完成它的管理任務,即為客戶端動態地配置 IP 地址等網絡參數。

所以,盡管 DHCP 的工作與網絡層緊密相關,但根據其在協議棧中的位置和工作方式,它確確實實是一個應用層協議。

DORA 四步握手

DHCP 的核心是一個四步交互過程,常被縮寫為 DORA :

  1. Discover (發現)
  • 一個剛接入網絡的客戶端(此時它還沒有 IP 地址)需要找到網絡中的 DHCP 服務器。
  • 它會廣播一個 DHCP DISCOVER 消息。這個消息的源 IP 是 0.0.0.0,目標 IP 是 255.255.255.255(本地網絡廣播地址)。
  1. Offer (提供)
  • 網絡上所有收到發現消息的 DHCP 服務器都會響應一個 DHCP OFFER 消息,其中包含了一個可供分配的 IP 地址和其他網絡配置信息。
  1. Request (請求)
  • 客戶端可能會收到多個 OFFER。它會選擇其中一個(通常是第一個收到的),然后再次廣播一個 DHCP REQUEST 消息,向網絡宣告它希望使用這個 IP 地址。
  • 之所以要再次廣播,是為了通知所有提供了 OFFER 的服務器,它已經做出了選擇。其他未被選中的服務器就可以收回它們提供的 IP 地址了。
  1. Acknowledge (確認)
  • 被選中的 DHCP 服務器會發送一個 DHCP ACK 消息,正式確認將該 IP 地址和配置信息分配給客戶端,并設定一個租約期限。
  • 至此,客戶端配置完成,可以正常上網了。客戶端會在租約到期前自動向服務器請求續約。

從輸入 URL 到網頁呈現的全過程

我們已經分別探討了 DHCP、DNS、NAT 和 HTTP。現在,讓我們通過一個最常見的場景——“在瀏覽器地址欄輸入一個網址后按下回車”——將這些知識點串聯起來,看看它們是如何協同工作的。

場景設定 :你剛剛啟動你的 Linux 桌面電腦,并通過網線連接到了家里的路由器。此時,你的電腦還沒有 IP 地址,瀏覽器也處于關閉狀態。我們的目標是訪問 http://www.example.com。

第 1 步:上線準備 - DHCP 動態獲取網絡配置

在你打開瀏覽器之前,你的操作系統需要先“上線”。

  1. 發現自我 :由于電腦沒有 IP 地址,它無法進行正常的 IP 通信。于是,操作系統會構建一個 DHCP DISCOVER 廣播包,源 IP 地址為 0.0.0.0(代表“我是誰”),目標 IP 地址為 255.255.255.255(代表“網絡上的所有人”)。
  2. 獲得 offer :你家里的路由器收到了這個廣播包。作為網絡中的 DHCP 服務器,它會從自己的地址池中挑選一個可用的 IP 地址(比如 192.168.1.100),連同子網掩碼、網關地址(192.168.1.1,也就是路由器自己)以及 DNS 服務器地址等信息,通過 DHCP OFFER 包回復給你的電腦。
  3. 確認請求與最終確認 :你的電腦收到 offer 后,會廣播一個 DHCP REQUEST 包,表示“我接受這個配置”。路由器最終回復一個 DHCP ACK 包,確認租約。

至此,你的電腦獲得了三樣寶貴的上網工具:自己的身份(IP 地址)、出網的門(默認網關)和問路用的地圖(DNS 服務器)。

第 2 步:尋址問路 - DNS 的層級解析

現在,你打開瀏覽器,輸入 http://www.example.com 并按下回車。瀏覽器需要知道 www.example.com 的 IP 地址才能建立連接。

  1. 本地緩存優先(The Fast Paths) :為了效率,系統會進行多級緩存檢查,順序如下:
  • 瀏覽器緩存 :瀏覽器會先看自己內部有沒有緩存過這個域名的 IP。
  • 操作系統緩存 :如果瀏覽器沒有,操作系統會檢查自己的 DNS 緩存(在 Linux 中可能由 systemd-resolved 或 nscd 等服務管理)。
  • hosts 文件 :最后,操作系統會查看 /etc/hosts 文件,這是一個靜態的、由用戶自己配置的域名-IP 映射表。
  1. 發起遞歸查詢 :假設以上緩存全部未命中。你的電腦會向 DHCP 分配給它的 DNS 服務器(即 192.168.1.1)發起一個 遞歸查詢 :“請告訴我 www.example.com 的 IP 地址。”
  2. 迭代查詢之旅 :你的路由器(作為 DNS 解析器)會開啟一趟 迭代查詢 之旅:
  • 它首先詢問 根服務器 ,根服務器說:“我不認識 www.example.com,但我知道誰管 .com。”
  • 接著它詢問 .com TLD 服務器 ,TLD 服務器說:“我不管 www.example.com,但我知道 example.com 的權威名稱服務器在哪。”
  • 最后它詢問 example.com 的權威名稱服務器 ,這個服務器最終在自己的記錄中找到了 www.example.com 對應的 A 記錄,并返回其 IP 地址(例如 93.184.216.34)。
  1. 結果返回與緩存 :路由器將這個 IP 地址返回給你的電腦。你的電腦和路由器都會將這個結果緩存起來(遵循 TTL,即 Time-To-Live),以便下次查詢時能直接使用。

至此,瀏覽器終于知道了它的目的地:IP 地址為 93.184.216.34 的服務器。

第 3 步:建立連接 - 穿越 NAT 的 TCP 握手

知道了 IP 地址,瀏覽器就可以開始建立連接了。由于是 http,目標端口是 80。

  1. 發起 TCP 握手 :瀏覽器向操作系統申請建立一個 TCP 連接。操作系統會發出第一個握手包(SYN 包)。這個包的初始信息是:

源地址:192.168.1.100 : 50000 (一個隨機的高位端口)

目標地址:93.184.216.34 : 80

  • NAT 的“偷天換日” :這個 SYN 包到達你的路由器(網關)。路由器的 NAT 功能開始工作:
  • 它將包的 源地址 從你的內網 IP 和端口(192.168.1.100:50000)改寫成路由器的公網 IP 和一個新的隨機端口(例如 120.10.20.30:62000)。
  • 同時,它在自己的映射表中記下一筆:120.10.20.30:62000 對應 192.168.1.100:50000。
  • 然后,它把這個修改后的包發送到互聯網。
  1. 透明的返回路徑 :Web 服務器收到 SYN 包后,回復一個 SYN-ACK 包,目標是 120.10.20.30:62000。當這個包回到你的路由器時,路由器查詢映射表,找到對應的內網地址,再次改寫目標地址為 192.168.1.100:50000,并轉發給你的電腦。
  2. 握手完成 :你的電腦回復 ACK 包,這個過程同樣經過 NAT 的翻譯。至此,一條 TCP 連接在你的瀏覽器和 Web 服務器之間成功建立,而 NAT 在其中扮演了一個透明的“中間人”。

第 4 步:數據交換 - HTTP 請求與響應

連接已建立,瀏覽器可以發送 HTTP 請求了。

發送請求 :瀏覽器通過建立好的 TCP 連接發送一個 HTTP GET 請求報文:

GET / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; ...)
...

接收響應 :Web 服務器接收到請求后,處理并返回一個 HTTP 響應報文,其中包含了狀態碼 200 OK 和網頁的 HTML 內容。

NAT 的持續工作 :這一來一回的所有數據包,都會被你的路由器上的 NAT 進行地址和端口的翻譯。

至此,瀏覽器獲得了網頁的 HTML 源代碼。 瀏覽器會解析 HTML,如果發現其中還引用了其他資源(如 CSS 文件、圖片、JavaScript 文件),它會重復上述的第 3 步和第 4 步(如果域名相同,會重用已建立的 TCP 連接),去獲取這些資源,最終將完整的網頁渲染出來,呈現給你。

責任編輯:武曉燕 來源: Piper蛋窩
相關推薦

2025-08-29 01:11:00

2025-09-01 04:00:55

2025-08-26 02:50:00

2025-08-26 00:38:48

2025-09-01 07:08:43

2025-08-27 06:29:45

2025-09-01 01:22:00

2013-11-25 10:07:31

P2P對等網絡

2010-06-28 11:15:45

BitTorrent協

2015-04-27 11:49:23

2021-09-02 19:45:21

P2P互聯網加速

2013-10-28 10:06:26

HTTP協議網絡協議

2010-03-10 10:51:30

2010-07-13 14:41:14

2010-06-12 16:56:37

2010-09-08 20:42:09

計算機網絡協議

2010-09-08 20:45:31

計算機網絡協議

2010-09-02 16:02:45

計算機網絡協議

2013-05-14 13:02:17

計算機網絡基礎協議

2013-03-08 12:51:03

計算機網絡基礎協議DHCP
點贊
收藏

51CTO技術棧公眾號

日韩精品在线免费看| 这里只有精品在线观看视频| 黄网站在线播放| 国产又粗又猛又爽又黄91精品| 欧美成人免费小视频| 在线看黄色的网站| 成人久久网站| 午夜精品福利在线| 先锋影音亚洲资源| 亚洲精品福利网站| 日韩电影一区二区三区四区| 欧美夫妻性生活视频| 中文精品在线观看| 国产精品一区免费在线| 一本久久a久久免费精品不卡| 老司机av福利| 三区在线观看| 国产在线看一区| 国产成人激情视频| 久久无码精品丰满人妻| 成人影院在线| 日韩国产高清视频在线| japan高清日本乱xxxxx| 国产一区二区三区朝在线观看| 一区二区三区.www| 性刺激综合网| 日色在线视频| 菠萝蜜视频在线观看一区| 国产深夜精品福利| 日韩中文字幕高清| 国产免费成人| 97精品视频在线播放| 天天天天天天天天操| 国产一区三区在线播放| 亚洲护士老师的毛茸茸最新章节| 男女视频在线观看网站| 日韩一级二级| 日本韩国精品在线| 丰满人妻中伦妇伦精品app| 欧美人与动牲性行为| 中文字幕中文乱码欧美一区二区 | 日韩久久精品成人| 久久久久无码精品| 日本电影久久久| 欧美午夜一区二区三区免费大片| 色综合av综合无码综合网站| 性欧美18xxxhd| 偷窥少妇高潮呻吟av久久免费| 日韩不卡视频一区二区| 福利视频在线| 亚洲人成网站色在线观看| 亚洲一区二区在线看| 激情小说 在线视频| 久久久美女毛片| 欧美精品免费观看二区| 三级毛片在线免费看| xnxx国产精品| 免费日韩av电影| 你懂的视频在线免费| 久久久蜜桃精品| 欧美亚州在线观看| 国产黄色在线播放| 国产精品色哟哟| 亚洲一区三区| 国内外激情在线| 一区二区三区国产精品| 日韩国产成人无码av毛片| 91视频欧美| 日韩欧美999| 一本久道中文无码字幕av| 免费观看成人性生生活片| 色网综合在线观看| 91高清国产视频| 国产亚洲高清一区| 亚洲精品成a人在线观看| 精品无码人妻一区| 久久精品国产大片免费观看| www亚洲精品| 久久久久久久久久久97| 国产日韩欧美三区| 国产精品高清在线观看| 国产在成人精品线拍偷自揄拍| 国产一区二区三区香蕉| 国产一区视频观看| 成年人视频在线看| 伊人夜夜躁av伊人久久| 精品视频免费在线播放| 欧美粗大gay| 制服丝袜亚洲播放| 免费a v网站| 精品久久久久久久久久久aⅴ| www.久久久久| www.av麻豆| 蜜乳av一区二区| 国产精品国产精品国产专区不卡| 久久精品蜜桃| 一区二区三区四区中文字幕| 国产女女做受ⅹxx高潮| 精品国产亚洲日本| 亚洲欧洲国产精品| 久久久久久国产精品视频| 日韩精品一区第一页| 91av免费看| 福利片在线看| 性久久久久久久| 97超碰人人爽| 西野翔中文久久精品字幕| xvideos成人免费中文版| 亚洲精品1区2区3区| 精品亚洲成a人在线观看| 精品一区国产| 尤物yw193can在线观看| 在线欧美日韩精品| 久久免费精品国产| 五月开心六月丁香综合色啪| 欧美在线视频免费观看| 99热这里只有精品在线观看| 国产色综合久久| 欧美黑人经典片免费观看| 日日夜夜亚洲精品| 国产亚洲精品高潮| 国产成人一区二区三区影院在线 | 97中文字幕在线观看| 精品理论电影| 欧美亚洲在线视频| 亚洲国产日韩在线观看| 国产精品夫妻自拍| 日本久久精品一区二区| 网红女主播少妇精品视频| 久久久亚洲成人| 欧美日本黄视频| 波多野结衣喷潮| 视频一区中文字幕| 久久久神马电影| 草草在线视频| 亚洲电影成人av99爱色| 久久久久久国产精品视频| 国产精品123| 自拍偷拍视频在线| 97久久精品一区二区三区的观看方式| 亚洲最新av在线| 中文字幕在线天堂| 久久久久久久久久久电影| 国产精品50p| 精品国产影院| 久久久伊人日本| 丰满人妻一区二区三区四区53| 亚洲美女在线国产| 91免费视频污| 欧美国内亚洲| 99热在线国产| 91美女精品| 日韩成人免费视频| 中文字幕第四页| 久久久久久久久久看片| 性生交免费视频| 青青草97国产精品麻豆| 国产日韩欧美电影在线观看| 日本欧美在线视频免费观看| 欧美日本一区二区在线观看| 夫妻性生活毛片| 国产福利精品导航| 真人抽搐一进一出视频| 奇米影视777在线欧美电影观看 | 日本美女一区二区三区视频| 天堂√在线观看一区二区| 欧美日韩伦理一区二区| 久久精品福利视频| 囯产精品一品二区三区| 欧美日韩激情网| 人妻一区二区视频| 久久精品国内一区二区三区| 操bbb操bbb| 好吊妞视频这里有精品| 日本一区二区不卡| 午夜激情在线观看| 精品精品欲导航| 69成人免费视频| 国产精品毛片大码女人| 国产一级二级av| 一区二区日本视频| 亚洲一二区在线| 国产精品极品国产中出| 日本精品免费一区二区三区| 黄色大片在线播放| 亚洲国产另类久久精品| 超碰在线97观看| 夜夜精品视频一区二区| 亚洲一级中文字幕| 国产一区二区91| 欧美性大战久久久久xxx | 国产一区二区三区精品在线观看| 久久久伊人日本| 最新av网站在线观看| 欧美不卡激情三级在线观看| 男人天堂av在线播放| 亚洲日本va午夜在线影院| 国产人妻人伦精品1国产丝袜| 美女视频一区二区三区| 三上悠亚久久精品| 婷婷精品进入| 久久亚洲免费| 精品中文字幕一区二区三区四区 | 成人一区二区三区中文字幕| 免费国产成人av| 国产一区观看| 亚洲一区二区三区加勒比| 91蜜桃臀久久一区二区| 国产玖玖精品视频| 午夜欧美激情| 欧美黑人xxx| 永久免费av在线| 日韩精品极品在线观看| 国产高潮流白浆喷水视频| 日韩欧美中文免费| 五月天婷婷网站| 亚洲特黄一级片| 91网站免费入口| a级高清视频欧美日韩| 国产精品探花在线播放| 日本aⅴ免费视频一区二区三区 | 精品无码久久久久成人漫画| 久久久国产午夜精品| 四虎精品一区二区| 国产精品1区二区.| 手机av在线免费| 日本不卡一区二区三区| 欧美韩国日本在线| 99pao成人国产永久免费视频| 国产精品12p| 欧美高清视频手机在在线| 亚洲成人18| 精品视频99| 日本成人黄色| 国产成人1区| 欧美日韩精品一区| 国产调教精品| 国产一区精品在线| 大型av综合网站| 岛国视频一区免费观看| 亚洲国产一区二区三区网站| 91视频国产精品| www.91精品| 91久久精品国产91久久| 国产精品久久免费视频| 91亚洲国产精品| 成人自拍视频| 99精彩视频| 日韩视频一二区| www.一区二区三区| 成人黄色av网址| 国产欧美日韩一区二区三区| 老司机在线精品视频| 久久精品日韩| 精品午夜久久| 一区二区三区欧美在线| 久久久五月天| 精品视频在线观看一区二区| 国模吧视频一区| 好吊妞无缓冲视频观看| 午夜影院日韩| 中文字幕网av| 国产美女娇喘av呻吟久久| 激情小说欧美色图| 99riav一区二区三区| 高潮毛片无遮挡| 国产精品久久三| 免费中文字幕在线| 亚洲丰满少妇videoshd| 亚洲欧美综合另类| 欧美精品乱人伦久久久久久| 精品人妻无码一区二区色欲产成人 | 久久综合九色综合97婷婷女人 | 国产99视频精品免视看7| 欧美高清你懂的| 亚洲综合一区二区不卡| 男人的天堂久久| 小说区图片区图片区另类灬| 欧美.www| 成人观看免费完整观看| 精品亚洲国内自在自线福利| 成人免费看片载| 欧美激情在线一区二区| 黄色a级片在线观看| 亚洲h精品动漫在线观看| 中文字幕在线观看视频免费| 欧美三级乱人伦电影| www男人的天堂| 亚洲性视频网址| 欧美人体视频xxxxx| 日韩免费在线观看视频| 警花av一区二区三区| 欧美凹凸一区二区三区视频| 一区二区影院| 国产真实乱子伦| 国产成人精品影院| 成年人在线免费看片| 亚洲一区二区三区中文字幕| 波多野结衣爱爱| 亚洲国产精品热久久| 成人在线观看免费网站| 日韩免费中文字幕| 国产精品115| youjizz.com亚洲| 老司机久久99久久精品播放免费| 亚洲区 欧美区| 欧美国产日产图区| 西西44rtwww国产精品| 宅男在线国产精品| 国产黄色免费在线观看| 97视频网站入口| 亚洲视频国产| 男人天堂成人网| 免费在线看成人av| 中文字幕xxx| 亚洲成人在线免费| 国产成人精品av在线观| 日韩毛片在线看| 黄色av电影在线观看| 国产精品普通话| 香蕉久久精品日日躁夜夜躁| 欧美狂野激情性xxxx在线观| 极品少妇一区二区| 日本一二三不卡视频| 丁香五六月婷婷久久激情| 亚洲狼人综合网| 裸体女人亚洲精品一区| 色婷婷成人网| 在线丝袜欧美日韩制服| 看国产成人h片视频| 内射毛片内射国产夫妻| 日韩欧美精品网址| 亚洲av激情无码专区在线播放| 欧美极品在线视频| youjizz亚洲| 国产美女作爱全过程免费视频| 精品一区中文字幕| 美国一级黄色录像| 欧美性色黄大片手机版| 国产对白叫床清晰在线播放| 国产激情综合五月久久| 国产精品一区二区av交换| 国产第一页视频| 国产日韩精品一区二区三区 | 日本最新不卡在线| 日本少妇高潮喷水xxxxxxx| 一本色道久久加勒比精品| 黄色影院在线播放| 国产精品成人一区二区三区吃奶| 免费视频国产一区| 男女视频一区二区三区| 国产欧美一区二区精品秋霞影院 | 日韩av中文字幕一区二区三区 | 天天干天天色天天| 国产综合在线视频| 欧美高清视频看片在线观看 | 免费在线观看成人| 男人的午夜天堂| 日韩一区二区电影网| 日本精品600av| 国产一区视频观看| 日韩国产一区二| 亚洲 欧美 国产 另类| 欧美一级一区二区| 欧美1—12sexvideos| 成人av影院在线| 亚洲一级黄色av| 成人免费看黄| 亚洲精品国产精品久久| 狠狠色2019综合网| 久青草视频在线观看| 亚洲精品久久久久久久久久久| 芒果视频成人app| 亚洲欧美日韩精品综合在线观看| 国产精品主播直播| 日韩三级视频在线播放| 国产亚洲精品久久| 国产一区二区三区精品在线观看| 成人免费性视频| 国产夜色精品一区二区av| 91超薄丝袜肉丝一区二区| 欧美疯狂性受xxxxx另类| 免费精品国产的网站免费观看| 在线观看免费的av| 亚洲国产一二三| caoporn国产精品免费视频| 999在线观看免费大全电视剧| 国产精品久久久一区二区| 激情五月激情综合| 亚洲国产精品福利| 欧美成人家庭影院| 日韩av三级在线| 亚洲欧洲av一区二区三区久久| 高h调教冰块play男男双性文| 国产不卡在线观看| 国内成人在线| 一二三四在线观看视频| 亚洲国产毛片完整版| 99国内精品久久久久| 美女福利视频在线|