精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

污污视频网站在线免费观看| 成人免费观看视频在线观看| 国产超碰人人模人人爽人人添| 亚洲成人免费| 日韩视频免费观看高清完整版 | 日本亚洲不卡| 欧美在线一区二区三区| 日本丰满少妇黄大片在线观看| 亚洲精品免费在线观看视频| 久久精品日产第一区二区| xvideos成人免费中文版| 挪威xxxx性hd极品| 成人国产激情| 亚洲不卡av一区二区三区| 日韩欧美精品一区二区三区经典| 99热精品在线播放| 免费在线亚洲欧美| 伦理中文字幕亚洲| 草草影院第一页| 秋霞一区二区三区| 欧美在线一二三四区| 中文精品无码中文字幕无码专区 | 外国成人毛片| 五月天欧美精品| 色中文字幕在线观看| 日韩美女一级视频| 国产精品一区不卡| 国产精品久久久久99| 日韩乱码在线观看| 综合国产在线| 视频在线一区二区| wwwwww日本| 国产乱人伦精品一区| 欧美军同video69gay| 国产精品沙发午睡系列| 色呦呦视频在线观看| 国产精品久久久久一区二区三区| 韩国精品一区二区三区六区色诱| 国产乱码精品一区二三区蜜臂| 国产视频亚洲| 久久久久久国产三级电影| 91麻豆精品久久毛片一级| 国产videos久久| 亚洲精品国产拍免费91在线| 成年人看片网站| 韩国三级成人在线| 7777精品久久久大香线蕉| 天天影视综合色| 性欧美xxx69hd高清| 亚洲成人黄色影院| 日韩最新中文字幕| 日韩黄色影院| 中文字幕欧美国产| 日韩欧美亚洲在线| 国产三级在线观看| 国产三级一区二区| 色一情一乱一伦一区二区三区丨 | 久久影视一区二区| 久久综合久久久| 天堂中文资源在线| 91视视频在线观看入口直接观看www | 成人看片网页| 欧美亚州韩日在线看免费版国语版| 成年人视频网站免费观看| 日本在线高清| 一本一道综合狠狠老| 日韩视频第二页| 户外露出一区二区三区| 在线观看一区二区视频| 国产又大又黄又粗又爽| 成人看片毛片免费播放器| 欧美网站一区二区| 日韩视频在线观看一区二区三区| 国产精品一区免费在线| 欧美第一区第二区| 一级欧美一级日韩片| 日韩福利视频一区| 亚洲色图五月天| 国产精品视频在| 欧美伊人影院| 97在线看免费观看视频在线观看| 亚洲欧美日韩激情| 理论片日本一区| 99理论电影网| 偷拍自拍在线| 自拍视频在线观看一区二区| 美脚丝袜脚交一区二区| 英国三级经典在线观看| 欧洲国产伦久久久久久久| 三日本三级少妇三级99| 欧美18免费视频| 中文日韩在线视频| 五月天丁香激情| 亚洲欧美日韩国产一区二区| 国产日韩精品在线播放| 风流老熟女一区二区三区| 久久综合精品国产一区二区三区 | 9i精品一二三区| 亚洲精品国久久99热| 亚洲自偷自拍熟女另类| 欧美亚洲福利| 亚洲精品久久久久中文字幕二区 | 日韩理论电影| 欧美激情一区二区三区成人 | 少妇高潮在线观看| 亚洲精品一二| 成人写真福利网| 亚洲 欧美 激情 另类| 中文字幕制服丝袜成人av| 91免费国产精品| 国产精品伦一区二区| 亚洲国内精品在线| avtt天堂在线| 视频一区视频二区中文字幕| 成人片在线免费看| 中文字幕在线播放| 欧美性xxxxx极品| 亚洲欧美一区二区三区不卡| sdde在线播放一区二区| 97久久精品人人澡人人爽缅北| 亚洲图片欧美在线| 久久蜜臀精品av| 农民人伦一区二区三区| 国产成人免费视频网站视频社区 | 成人黄动漫网站免费| 波多野结衣在线网站| 午夜精品福利一区二区三区蜜桃| 激情黄色小视频| 色棕色天天综合网| 97成人在线视频| 蜜桃在线一区二区| 亚洲精品欧美在线| 久久精品国产一区二区| 91精品久久久久久综合乱菊| 国产私拍精品| 欧美三级xxx| 视频免费在线观看| 欧美三级视频| 亚洲一区二区中文字幕| 日本三级视频在线观看| 91福利区一区二区三区| 精品人妻一区二区免费视频| 欧美在线国产| 444亚洲人体| 精品国产丝袜高跟鞋| 欧美日韩亚洲国产综合| 少妇av片在线观看| 日韩有码一区二区三区| 日韩高清国产一区在线观看| 亚洲高清黄色| 在线观看视频亚洲| 成人一二三四区| 国产欧美日韩激情| 我看黄色一级片| 欧美一区二区三区激情视频| 国产精品久久av| yes4444视频在线观看| 在线观看欧美精品| 国产真人做爰视频免费| 日韩av一二三| 亚洲最新在线| 久久影院一区二区三区| 美日韩精品免费观看视频| 97久久人国产精品婷婷 | 永久免费看mv网站入口| 久久国产精品一区二区| 综合网五月天| 91在线一区| 欧美亚洲在线视频| 国产黄在线看| 欧美高清视频不卡网| 国精产品一区一区二区三区mba| 久久成人免费网| 国产一级片91| 美女午夜精品| 国产精品99导航| 黄色视屏免费在线观看| 日韩免费看网站| 少妇一级淫片免费放中国 | 欧美日韩电影一区二区| 国产在线|日韩| 久久精品国产亚洲精品| 91免费观看网站| 久久久pmvav| 欧美日韩一级黄| 久久久久久免费观看| 99久久久无码国产精品| 2025韩国理伦片在线观看| 你懂的网址国产 欧美| 国内一区在线| 成人亚洲免费| 欧美黑人巨大精品一区二区| 毛片在线播放网址| 7777精品伊人久久久大香线蕉的| 国产在线精品观看| 国产精品你懂的| 99久久免费看精品国产一区| 日韩成人免费电影| 日本一级黄视频| 免费成人结看片| 亚洲va欧美va国产综合久久| 国产在线天堂www网在线观看| 最近的2019中文字幕免费一页| 蜜桃av噜噜一区二区三区麻豆| 欧美亚洲一区三区| 久草精品视频在线观看| 国产精品福利一区| 免费在线观看成年人视频| 久久99国产精品麻豆| 亚洲精品无码久久久久久| 97久久视频| 欧美国产综合视频| 欧美精品影院| 国产精品视频自在线| 女人让男人操自己视频在线观看| 久久天天躁狠狠躁老女人| 韩国三级av在线免费观看| 精品国产髙清在线看国产毛片| 亚洲天堂视频在线播放| 午夜欧美一区二区三区在线播放| 美国美女黄色片| 91丨九色丨国产丨porny| 久久久久无码国产精品一区李宗瑞 | 日韩美女一级片| 亚洲激情自拍视频| 亚洲欧美综合7777色婷婷| 久久亚洲欧美国产精品乐播| 无码人妻一区二区三区一| 精品一区二区三区免费观看| 91看片就是不一样| 国产精品婷婷| 日韩av在线播放不卡| 欧美91福利在线观看| 中文字幕日韩精品久久| 欧美午夜精品一区二区三区电影| 久久99精品久久久水蜜桃| 97青娱国产盛宴精品视频| 亚洲大片av| 精品国产乱码久久久久久郑州公司| 99久久久国产| 成人黄色在线免费| 国产a亚洲精品| 国产精品午夜视频| av亚洲一区二区三区| 欧美在线视频观看| 在线看的毛片| 青青久久av北条麻妃海外网| 一区二区乱码| 国产91色在线|| 国产精品专区免费| 欧美在线视频网| 欧美男体视频| 国产精品国产自产拍高清av水多| 国偷自产一区二区免费视频| 欧美在线一区二区三区四| 亚洲涩涩在线| 国产成人亚洲精品| 日韩免费福利视频| 国产精品久久久久久久av电影 | 你懂的在线播放| 亚洲男人av在线| 国产在线视频网| 中文字幕精品在线视频| 素人av在线| 久久影院中文字幕| 欧美v亚洲v| 69视频在线免费观看| 免费日韩电影| 国产精品中文字幕在线| 久久wwww| 国产日韩二区| 欧美人与拘性视交免费看| 亚洲欧美电影在线观看| 久久久久亚洲| 国产精品久久..4399| 久久一区视频| 五月花丁香婷婷| 成人av在线一区二区| 变态另类丨国产精品| 日本一区二区三区免费乱视频| 亚洲女人毛茸茸高潮| 亚洲综合色丁香婷婷六月图片| 香蕉免费毛片视频| 欧美日韩中文字幕精品| 精品国产无码AV| 国产丝袜一区二区| 国产丝袜在线| 欧美在线www| 粉嫩一区二区三区在线观看| 国产综合18久久久久久| 日本女优一区| www.国产在线视频| 日本aⅴ精品一区二区三区| 日本高清免费观看| 久久影院电视剧免费观看| www.99re7| 日韩欧美亚洲范冰冰与中字| 国产精品视频一区二区三区四区五区| 欧美大片黄色| 青青久久av北条麻妃黑人| 在线免费观看亚洲| 精品福利影视| 亚洲综合色站| 免费av网址在线| 国产一区二区三区在线观看免费视频| 特级西西人体4444xxxx| 自拍偷在线精品自拍偷无码专区| 国内免费精品视频| 这里是久久伊人| 国产污视频在线| 欧美激情极品视频| 狂野欧美性猛交xxxx| 久久久久久久有限公司| 一个色综合网| 91福利国产成人精品播放| 成人黄色大片在线观看| 97在线观看免费高| 日本大香伊一区二区三区| 免费看日韩av| 久久艹在线视频| 国产精品天堂蜜av在线播放| 欧美大香线蕉线伊人久久国产精品 | 日本10禁啪啪无遮挡免费一区二区| 欧美精品自拍| 日本中文字幕二区| 国产女主播视频一区二区| 91午夜视频在线观看| 欧美va在线播放| 久久bbxx| 国产日韩欧美在线视频观看| 国产一区二区观看| 激情综合在线观看| 成人黄色小视频在线观看| 久草免费在线观看视频| 欧美一区二区三区小说| 秋霞a级毛片在线看| 国产精品一区二区久久久久| 国产精品欧美三级在线观看| 欧美成人xxxxx| 93久久精品日日躁夜夜躁欧美 | 在线视频1区2区| 国产精品高清在线| 欧洲杯什么时候开赛| 超碰影院在线观看| 久久久精品天堂| 日韩在线视频不卡| 亚洲免费中文字幕| 性感美女一区二区在线观看| 日本一区视频在线观看免费| 久久精选视频| 天天舔天天操天天干| 精品视频在线看| 在线观看av黄网站永久| 国产日韩在线视频| 婷婷色综合网| 亚洲av无码久久精品色欲| 亚洲在线免费播放| 日韩中文字幕综合| 91黄色8090| 国产成人影院| 国产成人黄色网址| √…a在线天堂一区| av动漫免费观看| 日韩国产欧美| 手机av在线免费| 亚洲精品你懂的| 99热这里只有精品5| 欧美精品久久久久| 色婷婷久久久| 天天视频天天爽| 亚洲色欲色欲www| 免费观看黄色一级视频| 1769国产精品| 日韩成人三级| 日本人dh亚洲人ⅹxx| 精品久久久久久久久久国产 | www.亚洲激情.com| 亚洲欧美自拍视频| 中文字幕日韩综合av| 国产亚洲字幕| 99视频在线免费播放| 国产三级一区二区三区| 国产又大又黄又爽| 韩剧1988在线观看免费完整版| 亚洲精品一级二级三级| 国产三级国产精品国产专区50| 亚洲欧美影音先锋| 天天综合天天综合| 国产精品手机播放| 亚洲激情黄色| 少妇av片在线观看| 亚洲成人av在线| 91天天综合| 日本精品久久久久久久久久| 欧美极品少妇xxxxⅹ高跟鞋| 国产chinasex对白videos麻豆| 欧美专区中文字幕| 伊人情人综合网| 久久久久久国产免费a片| 日韩午夜精品电影|