日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

轻松认识HTTP协议的概念和工作原理

發布時間:2024/1/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻松认识HTTP协议的概念和工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輕松認識HTTP協議的概念和工作原理 當我們想瀏覽一個網站的時候,只要在瀏覽器的地址欄里輸入網站的地址就可以了,例如:www.microsoft.com,但是在瀏覽器的地址欄里面出現的卻是:http://www.microsoft.com,你知道為什么會多出一個“http”嗎?

一、HTTP協議是什么

我 們在瀏覽器的地址欄里輸入的網站地址叫做URL(UniformResourceLocator,統一資源定位符)。就像每家每戶都有一個門牌地址一樣, 每個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本 傳輸協議(HTTP),將Web服務器上站點的網頁代碼提取出來,并翻譯成漂亮的網頁。因此,在我們認識HTTP之前,有必要先弄清楚URL的組成,例 如:http://www.microsoft.com/china/index.htm。它的含義如下:

1.http://:代表超文本傳輸協議,通知microsoft.com服務器顯示Web頁,通常不用輸入;

2.www:代表一個Web(萬維網)服務器;

3.Microsoft.com/:這是裝有網頁的服務器的域名,或站點服務器的名稱;

4.China/:為該服務器上的子目錄,就好像我們的文件夾;

5.Index.htm:index.htm是文件夾中的一個HTML文件(網頁)。

我 們知道,Internet的基本協議是TCP/IP協議,然而在TCP/IP模型最上層的是應用層(Applicationlayer),它包含所有高層 的協議。高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網絡新聞傳輸協議NNTP和HTTP協議等。

HTTP 協議(HypertextTransferProtocol,超文本傳輸協議)是用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更 加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先于圖形)等。這就是 你為什么在瀏覽器中看到的網頁地址都是以“http://”開頭的原因。

自WWW誕生以來,一個多姿多彩的資訊和虛擬的世界便出現在我們 眼前,可是我們怎么能夠更加容易地找到我們需要的資訊呢?當決定使用超文本作為WWW文檔的標準格式后,于是在1990年,科學家們立即制定了能夠快速查 找這些超文本文檔的協議,即HTTP協議。經過幾年的使用與發展,得到不斷的完善和擴展,目前在WWW中使用的是HTTP/1.0的第六版。

二、HTTP是怎樣工作的

既然我們明白了URL的構成,那么HTTP是怎么工作呢?我們接下來就要討論這個問題。

由 于HTTP協議是基于請求/響應范式的(相當于客戶機/服務器)。一個客戶機與服務器建立連接后,發送一個請求給服務器,請求方式的格式為:統一資源標識 符(URL)、協議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。服務器接到請求后,給予相應的響應信息,其格式為一個狀態行,包 括信息的協議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務器信息、實體信息和可能的內容。

許多HTTP通訊是由一個用戶代 理初始化的并且包括一個申請在源服務器上資源的請求。最簡單的情況可能是在用戶代理和服務器之間通過一個單獨的連接來完成。在Internet上, HTTP通訊通常發生在TCP/IP連接之上。缺省端口是TCP80,但其它的端口也是可用的。但這并不預示著HTTP協議在Internet或其它網絡 的其它協議之上才能完成。HTTP只預示著一個可靠的傳輸。

這個過程就好像我們打電話訂貨一樣,我們可以打電話給商家,告訴他我們需要什么規格的商品,然后商家再告訴我們什么商品有貨,什么商品缺貨。這些,我們是通過電話線用電話聯系(HTTP是通過TCP/IP),當然我們也可以通過傳真,只要商家那邊也有傳真。

以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。

在WWW 中,“客戶”與“服務器”是一個相對的概念,只存在于一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務器。基于HTTP協議的客戶/ 服務器模式的信息交換過程,它分四個過程:建立連接、發送請求信息、發送響應信息、關閉連接。這就好像上面的例子,我們電話訂貨的全過程。

其 實簡單說就是任何服務器除了包括HTML文件以外,還有一個HTTP駐留程序,用于響應用戶請求。你的瀏覽器是HTTP客戶,向服務器發送請求,當瀏覽器 中輸入了一個開始文件或點擊了一個超級鏈接時,瀏覽器就向服務器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必 要的操作后回送所要求的文件。在這一過程中,在網絡上發送和接收的數據已經被分成一個或多個數據包(packet),每個數據包包括:要傳送的數據;控制 信息,即告訴網絡怎樣處理數據包。TCP/IP決定了每個數據包的格式。如果事先不告訴你,你可能不會知道信息被分成用于傳輸和再重新組合起來的許多小 塊。

也就是說商家除了擁有商品之外,它也有一個職員在接聽你的電話,當你打電話的時候,你的聲音轉換成各種復雜的數據,通過電話線傳輸到 對方的電話機,對方的電話機又把各種復雜的數據轉換成聲音,使得對方商家的職員能夠明白你的請求。這個過程你不需要明白聲音是怎么轉換成復雜的數據的。 了解WWW服務與HTTP協議 ?
在前一篇文章里,我們介紹了網絡應用和網絡協議的一些基礎知識,現在,讓我們來了解一下WWW服務應用和HTTP網絡協議。

歷史上,先后問世了多個具有重大社會影響的電子通信技術。第一個這樣的技術是19世紀70年代發明的電話。電話使得不在同一物理位置的兩人得以實時地口 頭交流。它對社會有重大的影響——有好的也有壞的。下一個電子通信技術是20世紀20年代及30年代問世的廣播收音機/電視機。廣播收音機/電視機使得人 們能收聽收視大量的音頻和視頻信息。它對社會同樣有重大的影響——有好的也有壞的。改變了人們的生活與工作方式的第三個重大通信技術是web。web最吸 引用戶的也許是它的隨選(on demand)操作性。用戶只在想要時收到所要的東西。這一點不同于廣播收音機/電視機。廣播收音機/電視機的用戶是在其內容供應商播出內容期間被迫收聽 收視。除了隨選操作性,Web還有許多大家喜愛的其他精彩特性。任何個人都可以極其容易地在Web上公布任何信息;任何人都可能以極低的成本成為發行人。 超鏈接和搜索引擎幫助我們在Web站點的海洋中導航。圖形和動畫刺激著我們的感官。表單、Java小應用程序、Activex控件以及其他許多設備使得我 們能與Web頁面和站點交互。Web還越來越普遍地提供存放在因特網中的、可隨選訪問(即點播)的大量音頻和視頻材料的菜單接口。

HTTP概貌

Web的應用層協議HTTP是Web的核心。HTTP在Web的客戶程序和服務器程序中得以實現。運行在不同端系統上的客戶程序和服務器程序通過交換 HTTP消息彼此交流。HTTP定義這些消息的結構以及客戶和服務器如何交換這些消息。在詳細解釋HTTP之前,我們先來回顧一些web中的術語。

Web頁面(web page,也稱為文檔)由多個對象構成。對象(object)僅僅是可由單個URL尋址的文件,例如HTML文件、JPG圖像、GIF圖像、JAVA小應 用程序、語音片段等。大多數Web頁面由單個基本HIML文件和若干個所引用的對象構成。例如,如果一個Web頁面包含HTML文本和5個JPEG圖像, 那么它由6個對象構成,即基本H1ML文件加5個圖像。基本HTML文件使用相應的URL來引用本頁面的其他對象。每個URL由存放該對象的服務器主機名 和該對象的路徑名兩部分構成。例如,在如下的URL中:

www.chinaitlab.com/urlpath/picture.qif

www.chinaitlab.com是一個主機名,/urlpath/picture.qif是一個路徑名。瀏覽器是web的用戶代理,它顯示所請求 的Web頁面,并提供大量的導航與配置特性。Web瀏覽器還實現HTTP的客戶端,因此在web上下文中,我們會從進程意義上互換使用“瀏覽器”和“客 戶”兩詞。流行的Web瀏覽器有Netscape Communicator,firefox和微軟的IE等。Web服務器存放可由URL尋址的Web對象。web服務器還實現HTTP的服務器端。流行的 Web服務器有Apache、微軟的IIS以及Netscape Enterprise Server。Netcraft提供了web服務器的概要剖析[Netcrft 2000]。

HTTP定義Web客戶(即瀏覽 器)如何從web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶。下圖展示了這種請求—響應行為。當用戶請求一個Web頁面(譬如說點擊某 個超鏈接)時,瀏覽器把請求該頁面中各個對象的HTTP請求消息發送給服務器。服務器收到請求后,以運送含有這些對象HTTP響應消息作為響應。到 1997年底,基本上所有的瀏覽器和Web服務器軟件都實現了在RFC 1945中定義的HTTP/1.0版本。1998年初,一些Web服務器軟件和瀏覽器軟件開始實現在RFC 2616中定義的HTTP/1.1版本。H1TP/1.1與HTTP/1.0后向兼容;運行1.1版本的web服務器可以與運行1.0版本的瀏覽器“對 話”,運行1.1版本的瀏覽器也可以與運行1.0版本的Web服務器“對話”。
 
圖1 HTTP請求與響應行為

  
HTTP/1.0和HTTP/1.1都把TCP作為底層的傳輸協議。HTTP客戶首先發起建立與服務器TCP連接。一旦建立連接,瀏覽器進程和服務器進 程就可以通過各自的套接字來訪問TCP。如前所述,客戶端套接字是客戶進程和TCP連接之間的“門”,服務器端套接字是服務器進程和同一TCP連接之間的 “門”。客戶往自己的套接字發送HTTP請求消息,也從自己的套接字接收HTTP響應消息。類似地,服務器從自己的套接字接收HTTP請求消息,也往自己 的套接字發送HTTP響應消息。客戶或服務器一旦把某個消息送入各自的套接字,這個消息就完全落入TCP的控制之中。TCP給HTTP提供一個可靠的數據 傳輸服務;這意味著由客戶發出的每個HTTP請求消息最終將無損地到達服務器,由服務器發出的每個HTTP響應消息最終也將無損地到達客戶。我們可從中看 到分層網絡體系結構的一個明顯優勢——HTTP不必擔心數據會丟失,也無需關心TCP如何從數據的丟失和錯序中恢復出來的細節。這些是TCP和協議棧中更 低協議層的任務。

TCP還使用一個擁塞控制機制。該機制迫使每個新的TCP連接一開始以相對緩慢的速率傳輸數據,然而只要網絡不擁塞,每個連接可以迅速上升到相對較高的速率。這個慢速傳輸的初始階段稱為緩啟動(slow start)。

需要注意的是,在向客戶發送所請求文件的同時,服務器并沒有存儲關于該客戶的任何狀態信息。即便某個客戶在幾秒鐘內再次請求同一個對象,服務器也不會響 應說:自己剛剛給它發送了這個對象。相反,服務器重新發送這個對象,因為它已經徹底忘記早先做過什么。既然HTTP服務器不維護客戶的狀態信息,我們于是 說HTTP是一個無狀態的協議(stateless protocol)。

非持久連接和持久連接

HTTP既可以使用非持久連接(nonpersistent connection),也可以使用持久連接(persistent connection)。HTTP/1.0使用非持久連接,HTTP/1.1默認使用持久連接。

非持久連接

讓我們查看一下非持久連接情況下從服務器到客戶傳送一個Web頁面的步驟。假設該貝面由1個基本HTML文件和10個JPEG圖像構成,而且所有這些對 象都存放在同一臺服務器主機中。 再假設該基本HTML文件的URL為:www.chinaitlab.com/somepath/index.html。

下面是具體步騾:

1.HTTP客戶初始化一個與服務器主機www.chinaitlab.com中的HTTP服務器的TCP連接。HTTP服務器使用默認端口號80監聽來自HTTP客戶的連接建立請求。

2.HTTP客戶經由與TCP連接相關聯的本地套接字發出—個HTTP請求消息。這個消息中包含路徑名/somepath/index.html。

3.HTTP服務器經由與TCP連接相關聯的本地套接字接收這個請求消息,再從服務器主機的內存或硬盤中取出對象/somepath/index.html,經由同一個套接字發出包含該對象的響應消息。

4.HTTP服務器告知TCP關閉這個TCP連接(不過TCP要到客戶收到剛才這個響應消息之后才會真正終止這個連接)。

5.HTTP客戶經由同一個套接字接收這個響應消息。TCP連接隨后終止。該消息標明所封裝的對象是一個HTML文件。客戶從中取出這個文件,加以分析后發現其中有10個JPEG對象的引用。

6.給每一個引用到的JPEG對象重復步騾1-4。

瀏覽器在接收web頁面的同時把它顯示給用戶。不同的瀏覽器可能會以略有不同的方式解釋(也就是向用戶顯示)同一個web頁面。HTTP與客戶如何解釋 Web頁面沒有任何關系,其規范([RFC 1945]和[RFC 2616I)僅僅定義HTTP客戶程序和服務器程序之間的通信協議。

上述步驟之所以稱為使用非持久連接,原因是每次服務器發出一個對象后,相應的TCP連接就被關閉,也就是說每個連接都沒有持續到可用于傳送其他對象。每 個TCP連接只用于傳輸一個請求消息和一個響應消息。就上述例子而言,用戶每請求一次那個web頁面,就產生11個TCP連接。

在上述步騾中,我們有意不說清客戶是通過10個串行的TCP連接先后取得所有JPEG對象,還是通過并行的TCP連接同時取得其中某些JPEG對象。實際 上,現今的瀏覽器允許用戶通過配置來控制并行連接的程度。大多數瀏覽器默認可以打開5到10個并行的TCP連接,每個連接處理一個請求—響應事務。用戶要 是喜歡,可以把最大并行連接數設為l,那樣的話這10個連接是串行地建立的。我們將在第3章看到,使用并行連接可以縮短響應時間。

繼續介紹之前,先估算一下從客戶請求基本HTML文件到它收到該文件所經歷的時間。為此我們定義往返時間(round trip time,簡稱RTT),它是一個小分組從客戶主機游動到服務器主機再返回客戶主機所花的時間。RTT包括分組傳播延遲、在中間路由器和交換機土的分組排 隊延遲以及分組處理延遲。下面考慮用戶點擊某個超鏈接時會發生什么。用戶的點擊導致瀏覽器發起建立一個與Web服務器的TCP連接;這里涉及·—次“三次 握手”過程——首先是客戶向服務器發送一個小的冗余消息,接著是服務器向客戶確認并響應以一個小的TCP消息,最后是客戶向服務器回確認。三次握手過程的 前兩次結束時,流逝的時間為1個RTT。此時客戶把HTTP請求消息發送到TCP連接中,客戶接著把三次握手過程最后一次中的確認捎帶在包含這個消息的數 據分節中發送以去。服務器收到來自TCP連接的請求消息后,把相應的HTML文件發送到TCP連接中,服務器接著把對早先收到的客戶請求的確認捎帶在包含 該HTML文件的數據分節中發送出去。這個HTTP請求順應交互也花去1個RTT時間。因此,總的響應時間粗略地算是2個RTT加上服務器發送這個 HTMI文件的時間。

持久連接

非持久連接有些缺點。首先,客戶得為每個待請求的對象建立 并維護一個新的連接。對于每個這樣的連接,TCP得在客戶端和服務器端分配TCP緩沖區,并維持TCP變量。對于有可能同時為來自數百個不同客戶的請求提 供服務的web服務器來說,這會嚴重增加其負擔。其次,如前所述,每個對象都有2個RTT的響應延長——一個RTT用于建立TCP連接,另—個RTT用于 請求和接收對象。最后,每個對象都遭受TCP緩啟動,因為每個TCP連接都起始于緩啟動階段。不過并行TCP連接的使用能夠部分減輕RTT延遲和緩啟動延 遲的影響。

在持久連接情況下,服務器在發出響應后讓TCP連接繼續打開著。同一對客戶/服務器之間的后續請求和響應可以通過這個 連接發送。整個Web頁面(上例中為包含一個基本HTMLL文件和10個圖像的頁面)自不用說可以通過單個持久TCP連接發送:甚至存放在同一個服務器中 的多個web頁面也可以通過單個持久TCP連接發送。通常,HTTP服務器在某個連接閑置一段特定時間后關閉它,而這段時間通常是可以配置的。持久連接分 為不帶流水線(without pipelining)和帶流水線(with pipelining)兩個版本。如果是不帶流水線的版本,那么客戶只在收到前一個請求的響應后才發出新的請求。這種情況下,web頁面所引用的每個對象 (上例中的10個圖像)都經歷1個RTT的延遲,用于請求和接收該對象。與非持久連接2個RTT的延遲相比,不帶流水線的持久連接已有所改善,不過帶流水 線的持久連接還能進一步降低響應延遲。不帶流水線版本的另一個缺點是,服務器送出一個對象后開始等待下一個請求,而這個新請求卻不能馬上到達。這段時間服 務器資源便閑置了。

HTTP/1.1的默認模式使用帶流水線的持久連接。這種情況下,HTTP客戶每碰到一個引用就立即發出一個 請求,因而HTTP客戶可以一個接一個緊挨著發出各個引用對象的請求。服務器收到這些請求后,也可以一個接一個緊挨著發出各個對象。如果所有的請求和響應 都是緊挨著發送的,那么所有引用到的對象一共只經歷1個RTT的延遲(而不是像不帶流水線的版本那樣,每個引用到的對象都各有1個RTT的延遲)。另外, 帶流水線的持久連接中服務器空等請求的時間比較少。與非持久連接相比,持久連接(不論是否帶流水線)除降低了1個RTT的響應延遲外,緩啟動延遲也比較 小。其原因在于既然各個對象使用同一個TCP連接,服務器發出第一個對象后就不必再以一開始的緩慢速率發送后續對象。相反,服務器可以按照第一個對象發送 完畢時的速率開始發送下一個對象。

HTTP消息格式

HTTP規范1.0[RPcl945]和1.1[RFC 2616]定義了HTTP消息的格式。HTTP消息分為請求消息和響應稍息兩類。下面我們分別進行介紹。

HTTP請求消息

下面是一個典型的HTTP請求消息:

GET /somedir/page.html H7TP/1.1
Host:www.chinaitlab.com
Connection:close
User-agent:Mozilla/4.0
Accept-language:zh-cn
(額外的回車符和換行符)

仔細檢查這個簡單的請求消息,我們可從中學到不少東西。首先,這個消息是用普通的ASCII文本書寫的。其次,這個消息共有5行(每行以一個回車符和一 個換行符結束),最后一行后面還有額外的一個回車特和換行符。當然,一個請求消息可以不止這么多行,也可以僅僅只有一行。該請求消息的第一行稱為請求行 (request line),后續各行都稱為頭部行(header)。請求行有3個寧段:方法字段、URL字段、HTTP版本宇段。方法字段有若干個值可供選擇,包括 GET、POST和HEAD。HTTP請求消息絕大多數使用GET方法,這是瀏覽器用來請求對象的方法,所請求的對象就在URL字段中標識。本例表明瀏覽 器在請求對象/somedir/page.html。版本字段是不言自明的;本例中瀏覽器實現的是HTTP/1.1版本。

現在看 一下本例中的各個頭部行。頭部行Host:www.chinaitlab.com定存放所請求對象的主機。請求消息中包含頭部Connection: close是在告知服務器本瀏覽器不想使用持久連接;服務器發出所請求的對象后應關閉連接。盡管產生這個請求消息的瀏覽器實現的是HTTP/1.1版本, 它還是不想使用持久連接。User-agent頭部行指定用戶代理,也就是產生當前請求的瀏覽器的類型。本例的用戶代理是Mozilla/4.0,它是 Nelscape瀏覽器的一個版本。這個頭部行很有用,因為服務器實際上可以給不同類型的用戶代理發送同一個對象的不同版本(這些不同版本位用同一個 URL尋址)。最后,Accept-languag:頭部行指出要是所請求對象有簡體中文版本,那么用戶寧愿接收這個版本;如果沒有這個語言版本,那么服 務器應該發送其默認版本。Accept-languag:僅僅是HTTP的眾多內容協商頭部之一。

我們接著看一下下圖所示的請求消息的一般格式。
 
圖2:HTTP請求格式

  
上面的請求消息例子符合這個格式,不過一般格式中還有一個位于各個頭部(及額外的回車符和換行符)之后的“附屬體”(毗叮body)。附屬體不在GET 方法中使用,而是在POST方法中使用。POST方法適用于需由用戶填寫表單的場合,如往google搜索引擎中填入待搜索的詞。用戶提交表單后,瀏覽器 就像用戶點擊了超鏈接那樣仍然從服務器請求一個Web頁面,不過該頁面的具體內容卻取決于用戶填寫在表單各個字段中的值。如果瀏覽器使用POST方法提出 該請求,那么請求消息附屬體中包含的是用戶填寫在表單各個字段中的值。與GET方法類似的是HEAD方法,兩者的差別只是服務器在對HEAD方法的響應消 息中去掉了所請求的對象,其他內容則與對GET方法的響應消息一樣。HEAD方法通常用于HTTP服務器軟件開發人員進行調試。

HTTP響應消息

下面是一個典型的HTTP響應消息:

HTTP/1.1 200 0K
Connectlon:close
Date: Thu, 13 Oct 2005 03:17:33 GMT
Server: Apache/2.0.54 (Unix)
Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT
Content—Length:682l
Content—Type:text/html

(數據 數據 數據 數據 數據…………)

這個響應消息分為3部分:1個起始的狀態行(status line),6個頭部行、1個包含所請求對象本身的附屬體。狀態行有3個字段:協議版本字段、狀態碼字段、原因短語字段。本例的狀態行表明,服務器使用 HTTP/1.1版本,響應過程完全正常(也就是說服務器找到了所請求的對象,并正在發送)。

現在看一下本例中的各個頭部行。服 務器使用Connectlon:close頭部行告知客戶自己將在發送完本消息后關閉TCP連接。Date:頭部行指出服務器創建并發送本響應消息的日期 和時間。注意,這并不是對象本身的創建時間或最后修改時間,而是服務器把該對象從其文件系統中取出,插入響應消息中發送出去的時間。Server:頭部行 指出本消息是由Apache服務器產生的;它與HTTP請求消息中的User-agent:頭部行類似。Last—Nodified:頭部行指出對象本身 的創建或最后修改日期或時間。Last—Nodified:頭部對于對象的高速緩存至關重要,且不論這種高速緩存是發生在本地客戶主機上還是發生在網絡高 速緩存服務器主機(也就是代理服務器主機)上。Content—Length:頭部行指出所發送對象的字節數。Content—Type:頭部行指出包含 在附屬體中的對象是HTML文本。對象的類型是由Content—Type:頭部而不是由文件擴展名正式指出的。

注意,如果服務器收到一個HTTP/1.0的請求,那么它即使是一個HTTP/1.1服務器,也不會使用持久連接。相反,這樣的HTTP/1.1服務器會 在發出所請求的對象后關閉TCP連接。這么做是必要的,因為HTTP/1.0客戶期待服務器馬上關閉連接。

我們接著看一下如下圖所示的響應消息的一般格式。前面的響應消息例子完全符合這個格式。響應消息中的狀態碼和原因短語指示相應請求的處理結果,下面列出了一些常見的狀態碼和相應的原因短語:
 
圖3:響應消息的一般格式

  
●200 0K;請求成功,所請求信息在響應消息中返回。

●301 Moved Permanently:所請求的對象己永久性遷移;新的URL在本響應消息的Location:頭部指出。客戶軟件會自動請求這個新的URL。

●400 Bad Request;表示服務器無法理解相應請求的普通錯誤的狀態碼

●404 Not Found:服務器上不存在所請求的文檔。

●HTTP Version Not Support:服務器不支持所請求的HTTP協議版本。

你想如何看到一個真實的H1TP應答消息呢?這非常簡單。可以使用nc工具連接到你喜歡的服務器(nc/netcat是一個黑客很喜歡用的工具,可以方 便在主機之間建立TCP連接),然后輸入一行請求消息,用來請求位于該服務器上的某個對象。例如,如果你可以輸入以下指令:

nc www.chinaitlab.com 80
GET /index.shtml HTTP/1.0

(在輸入第二行之后,敲兩次回車),這就打開了一個到主機www.chinaitlab.com的端口80的TCP連接,然后發送HTTP GET命令。你應該能看到包含著YESKY主頁的基本HTML文件的應苔消息。如果你想只看到HTTP消息行而不接收該對象本身,那么就把上面的GET換 成HEAD。最后,看一下能得到什么樣的應答消息。

在這里我們討論了大量能夠在HTTP請求和應答消息中使用的頭部行。HTTP規范(尤其是HTTP/1.1)定義了更多可以由瀏覽器、Web服務器和網絡緩沖服務器插入的頭部行。

我們可以便用nc工具完全控制在請求消息中包含哪些頭部,那么瀏覽器如何決定該在請求消息個包含哪些頭部呢?Web服務器又是如何決定該在響應消息中包 含哪些頭部?瀏覽器是根據自己的用戶代理類型、所支持的HTTP版本(HTTP/1.0版本的瀏覽器自然不會產生HTTP/1.1版本的頭部)、用戶對瀏 覽器的配置(如所偏愛的語言)等因素生成請求消息中的各個頭部的。web服務器有類似的情形:它們有不同的產品、版本和配置,所有這些因素都會影響在響應 消息中包含哪些頭部。

本文討論過的和即將討論的用于HTTP請求消息和響應消息中的頭部僅僅是很小的一部分,HTTP規范中定義了更多可用的頭部,可以查閱相關的RFC文檔進行更詳細的了解。

用戶—服務器交互

身份認證和cookie


我們已經知道HTTP服務器是無狀態的。這樣的處理可以簡化服務器程序的設計,以便開發出更高性能的Web服務器軟件。然而,一個Web站點往往有標識 其用戶的需求,因為其web服務器可能希望限制用戶的訪問,也可能想要根據用戶的身份來提供內容。HTTP提供了兩種幫助服務器標識用戶的機制:身份認證 和cookle。

身份認證許多web站點要求用戶提供一個用戶名—口令對才能訪問存放在其服務器中的文檔。這種要求稱為身份認證 (authentication)。HTTP提供特殊的狀態碼和頭部來幫助Web站點執行身份認證。我們通過查看一個例子來領會這些特殊的狀態碼和頭部如 何工作。假設有—個客戶在請求來自某個服務器的一個對象,而該服務器要求用戶授予權限。

客戶首先發送一個不合特殊頭部的普通請求 消息。服務器以空的附屬體和一個“401Authorization Required”狀態碼作為響應。服務器還在這個響應消息中包含“個WWW-Authenticate:頭部,說明具體如何執行身份認證。這個頭部的典 型值是指出用戶需要提供一個用戶名—口令對。

客戶收到這個響應消息后提示用戶輸入用戶名和口令,然后重新發送請求消息。這一回客戶在請求消息中包含了一個Authorization:頭部,其中包含有用戶輸入的用戶名和口令。

取得第一個對象后,客戶在同為請求該服務器上對象的后續請求中繼續發送這個用戶名—口令對。這個做法一般將持續到用戶關閉瀏覽器為止。在瀏覽器未被關閉 之前,這個用戶名—口令對是高速緩存著的,因此瀏覽器不會每請求一個對象就提示用戶輸入一次用戶名和口令。通過上述方式,要求用戶授權的Web站點就能標 識出每個請求的用戶了。

我們需要知道,HTTP執行的是一種相當脆弱的身份認證方式,不難攻破。現代有很多更為安全的認證方式,我們會在以后介紹。

cookie是一種可讓Web站點用來跟蹤用戶的候選機制,定義在RFC 2109中。有些Web站點使用cookie,其他Web站點則不用。下面查看一個例子。假設一個客戶首次聯系一個使用cookie的web站點。服務器 會在其響應中包含一個Set—Cookie:頭部。該頭部的值可以是一個由Web服務器產生的客戶標識數.例如:

Set-Cookie:1678453

客戶收到這個響應消息,看到其中的Set-Cookie:頭部和標識數后,會在存放在客戶主機中的某個特殊的cookie文件中添加一行。這一行一般包 含服務器主機的主機名和這個與用戶關聯的標識數。在一段時間(如一個星期)之后請求同一個服務器時,由同一個用戶啟動的新客戶會在請求消息中包含一個 cookie頭部,其值為早先由該服務器產生的標識數,例如:Cookie:1678453

在這種方式中,服務器并不知道提出請求的用戶的用戶名,但是它確實知道該用戶與一個星期前提出請求的用戶是同一個。

Web服務器有多個使用coohe的目的:

●如果服務器要求身份認證,但又不想在同一用戶每次訪問本Web站點時都麻煩他輸入用戶名和口令,那么可以設置一個cookie。

●如果服務器想要記住用戶的偏好,以便在他們后續訪問期間有目的地提供廣告,那么可以設置一個cookie。

●如果web站點提供購物服務,那么服務器可以使用cookie跟蹤用戶購買的物品,就是建立一個虛擬的購物車。

需指出的是,cookie不適用于會從不同主機訪問同一web站點的游動用戶。這種情況下,該web站點會把同一個用戶在不同主機上的使用看成是由新的用戶執行的。

帶條件的GET

Web高速緩存技術通過就近存取先前取得的對象來降低對象檢索延遲,減少因特網上的web流量。Web的高速緩存既可以駐留在客戶主機中,也可以駐留在中 間網絡高速緩存服務器主機中。我們將在稍后討論網絡高速緩存,這里只關注客戶的高速緩存。

Web高速緩存在降低用戶可感知的響應時間的同時,卻引入了一個新的問題——高速緩存中存放的對象的拷貝可能是過期的。換句話說,存放在web服務器中 的對象可能己在客戶高速緩存下它的一個拷貝之后被修改了。幸運的是,HTTP提供一個專門的機制,使得在允許客戶進行高速緩存的同時,仍確保傳遞給瀏覽器 的所有對象都是最新的。這個機制稱為帶條件的0ET(conditional GET)。滿足條件(1)使用GET方法和(2)包含If-Modified-S1nce:頭部的HTTP請求消息就是所謂的帶條件的Get消息。

我們通過查看一個例子來說明帶條件的GET如何工作,向服務器請求一個尚未高速緩存的對象:

GET /fruit/kiwi.gif HTTP/1.0
User—agent: Mozilla/4.0

接著,web服務器把帶這個對象的一個響應消息發送給客戶:

HTTP/1.0 200 OK
Date: Thu, 13 Oct 2005 05:33:47 GMT
Server: Apache/2.0.54 (Unix)
Last-Modified:Thu, 13 Oct 2005 02:32:47 GMT
Content-Type:image/gif

(數據 數據 數據 數據 數據……)

客戶把這個對象顯示給用戶,同時把它保存在自己的本地高速緩存中客戶還隨該對象本身高速緩存最后修改日期與時間。一個星期之后,同一個用戶請求同一個對 象,而該對象仍然存放在高速緩存中。既然web服務器中的該對象有可能已在最近一個星期被修改過,于是瀏覽器發出一個帶條件的GET消息,執行判定高速緩 存的對象拷貝是否為最新的檢查;

GET /fruit/kiwi.gif HTTP/1.0
User—agent: Mozilla/4.0
If—Modlfied—Since:Thu, 13 Oct 2005 02:32:47 GMT

其中,If—Modlfied—Since:頭部的值就等于一個星期前由服務器發送的Last-Modified:頭部的值。這個帶條件的GET消息告 知服務器,只有在該對象自所指定的時間以來被修改了的前提下才發送它。假設該對象在這段時間內未曾被修改過,那么服務器將發送一個附屬體為空的響應消息給 客戶;

HTTP/1.0 304 Not Modified
Date: Thu, 20 Oct 2005 05:33:47 GMT
Server: Apache/2.0.54 (Unix)

我們看到,web服務器仍然發送——個響應消息作為帶條件的GET消息的響應,不過其中不包含所請求的對象。包含該對象只會浪費帶寬,并延長用戶可感知 的響應時間,特別是在該對象很大的時候。注意,這個響應消息的狀態為“304 Not Modified”,它告知客戶可以放心使用所請求對象的高速緩存版本。

用Socket類實現HTTP協議客戶端應用

Http客戶端程序已集成在Java語言中,可以通過URLConnection類調用。遺憾的
是,由于SUN沒有公布Http客戶程序的源碼,它實現的細節仍是一個謎。本文根據HTTP
協議規范,用Java.net.Socket類實現一個HTTP協議客戶端程序。

1.Socket類:
了解TCP/IP協議集通信的讀者知道,協議間的通信是通過Socket完成的。在
Java.net包中,Socket類就是對Socket的具體實現。它通過連接到主機后,返回一個
I/O流,實現協議間的信息交換。

2 . HTTP協議
HTTP協議同其它TCP/IP協議集中的協議一樣,是遵循客戶/服務器模型工作的。客
戶端發往服務端的信息格式如下:
------------------------------
請求方法 URL HTTP協議的版本號
提交的元信息
**空行**
實體
------------------------------
請求方法是對這次連接工作的說明,目前HTTP協議已經發展到1.1版,它包括GET、
HEAD、POST、DELETE、OPTIONS、TRACE、PUT七種。元信息是關于當前請求的信息。通
過分析元信息,可以檢查實體數據是否完整,接收過程是否出錯,類型是否匹配等。元
信息的引入使HTTP協議通信更加穩妥可靠。實體是請求的具體內容。
將上述報文發往Web服務器,如果成功,應答格式如下:
--------------------------------
HTTP協議的版本號 應答狀態碼 應答狀態碼說明
接收的元信息
**空行**
實體
--------------------------------
以上報文發向客戶端,并且接收成功,彼此間關閉連接,完成一次握手。
下面用最常用的GET方法,來說明具體的報文應用
----------------------------------
GET http://www.youhost.com HTTP/1.0
accept: www/source; text/html; image/gif; image/jpeg; */*
User_Agent: myAgent
**空行**
-----------------------------------
這個報文是向www.youhost.com主機請求一個缺省HTML文檔。客戶端HTTP協議版本
號是1.0版,元信息包括可接收的文件格式,用戶代理,每一段之間用回車換行符分
隔,最后以一個空行結束。發向服務器后,如果執行過程正常,服務器返回以下代碼:
------------------------------------
HTTP/1.1 200 OK
Date: Tue, 14 Sep 1999 02:19:57 GMT
Server: Apache/1.2.6
Connection: close
Content-Type: text/html
**空行**
......
------------------------------------
HTTP/1.1表示這個HTTP服務器是1.1版,200是服務器對客戶請求的應答狀態碼,OK
是對應答狀態碼的解釋,之后是這個文檔的元信息和文檔正文。(相關應答狀態碼和元
信息的解釋請參閱Inetrnet標準草案:RFC2616)。

3. HTTP客戶端程序:

import java.net.*;
import java.io.*;
import java.util.Properties;
import java.util.Enumeration;
public class Http {
protected Socket client;
protected BufferedOutputStream sender;
protected BufferedInputStream receiver;
protected ByteArrayInputStream byteStream;
protected URL target;
private int responseCode=-1;
private String responseMessage="";
private String serverVersion="";
private Properties header = new Properties();
public Http() { }
public Http(String url) {
GET(url) ;
}
/* GET方法根據URL,會請求文件、數據庫查詢結果、程序運行結果等多種內容 */
public void GET(String url) {
try {
checkHTTP(url);
openServer(target.getHost(),target.getPort() );
String cmd = "GET "+ getURLFormat(target) +" HTTP/1.0\r\n"
+ getBaseHeads()+"\r\n";
sendMessage(cmd);
receiveMessage();
}catch(ProtocolException p) {
p.printStackTrace();
return;
}catch(UnknownHostException e) {
e.printStackTrace();
return;
}catch(IOException i)

i.printStackTrace();
return;
}
}

/*
* HEAD方法只請求URL的元信息,不包括URL本身。若懷疑本機和服務器上的
* 文件相同,用這個方法檢查最快捷有效。
*/
public void HEAD(String url) {
try {
checkHTTP(url);
openServer(target.getHost(),target.getPort() );
String cmd = "HEAD "+getURLFormat(target)+" HTTP/1.0\r\n"
+getBaseHeads()+"\r\n";
sendMessage(cmd);
receiveMessage();
}catch(ProtocolException p) {
p.printStackTrace();
return;
}catch(UnknownHostException e) {
e.printStackTrace();
return;
}catch(IOException i)

i.printStackTrace();
return;
}
}
/*
* POST方法是向服務器傳送數據,以便服務器做出相應的處理。例如網頁上常用的
* 提交表格。
*/
public void POST(String url,String content) {
try {
checkHTTP(url);
openServer(target.getHost(),target.getPort() );
String cmd = "POST "+ getURLFormat(target) +"
HTTP/1.0\r\n"+getBaseHeads();
cmd += "Content-type: application/x-www-form-urlencoded\r\n";
cmd += "Content-length: " + content.length() + "\r\n\r\n";
cmd += content+"\r\n";
sendMessage(cmd);
receiveMessage();
}catch(ProtocolException p) {
p.printStackTrace();
return;
}catch(UnknownHostException e) {
e.printStackTrace();
return;
}catch(IOException i)

i.printStackTrace();
return;
}

}
protected void checkHTTP(String url) throws ProtocolException {
try {
URL target = new URL(url);
if(target==null || !target.getProtocol().toUpperCase().equals("HTTP") )
throw new ProtocolException("這不是HTTP協議");
this.target = target;
}catch(MalformedURLException m) {
throw new ProtocolException("協議格式錯誤");
}
}
/*
* 與Web服務器連接。若找不到Web服務器,InetAddress會引發UnknownHostException
* 異常。若Socket連接失敗,會引發IOException異常。
*/
protected void openServer(String host,int port) throws
UnknownHostException,IOException {
header.clear();
responseMessage=""; responseCode=-1;
try {
if(client!=null) closeServer();
if(byteStream != null) {
byteStream.close(); byteStream=null;
}
InetAddress address = InetAddress.getByName(host);
client = new Socket(address,port==-1?80:port);
sender = new BufferedOutputStream(client.getOutputStream());
receiver = new BufferedInputStream(client.getInputStream());
}catch(UnknownHostException u) {
throw u;
}catch(IOException i) {
throw i;
}
}
/* 關閉與Web服務器的連接 */
protected void closeServer() throws IOException {
if(client==null) return;
try {
client.close(); sender.close(); receiver.close();
}catch(IOException i) {
throw i;
}
client=null; sender=null; receiver=null;
}
protected String getURLFormat(URL target) {
String spec = "http://"+target.getHost();
if(target.getPort()!=-1)
spec+=":"+target.getPort();
return spec+=target.getFile();
}

/* 向Web服務器傳送數據 */
protected void sendMessage(String data) throws IOException{
sender.write(data.getBytes(),0,data.length());
sender.flush();
}
/* 接收來自Web服務器的數據 */
protected void receiveMessage() throws IOException{
byte data[] = new byte[1024];
int count=0;
int word=-1;
// 解析第一行
while( (word=receiver.read())!=-1 ) {
if(word=='\r'||word=='\n') {
word=receiver.read();
if(word=='\n') word=receiver.read();
break;
}
if(count == data.length) data = addCapacity(data);
data[count++]=(byte)word;
}
String message = new String(data,0,count);
int mark = message.indexOf(32);
serverVersion = message.substring(0,mark);
while( mark responseCode = Integer.parseInt(message.substring(mark+1,mark+=4));
responseMessage = message.substring(mark,message.length()).trim();

// 應答狀態碼和處理請讀者添加
switch(responseCode) {
case 400:
throw new IOException("錯誤請求");
case 404:
throw new FileNotFoundException( getURLFormat(target) );
case 503:
throw new IOException("服務器不可用" );
}
if(word==-1) throw new ProtocolException("信息接收異常終止");
int symbol=-1;
count=0;
// 解析元信息
while( word!='\r' && word!='\n' && word>-1) {
if(word=='\t') word=32;
if(count==data.length) data = addCapacity(data);
data[count++] = (byte)word;
parseLine: {
while( (symbol=receiver.read()) >-1 ) {
switch(symbol) {
case '\t':
symbol=32; break;
case '\r':
case '\n':
word = receiver.read();
if( symbol=='\r' && word=='\n') {
word=receiver.read();
if(word=='\r') word=receiver.read();
}
if( word=='\r' || word=='\n' || word>32) break parseLine;
symbol=32; break;
}
if(count==data.length) data = addCapacity(data);
data[count++] = (byte)symbol;
}
word=-1;
}
message = new String(data,0,count);
mark = message.indexOf(':');
String key = null;
if(mark>0) key = message.substring(0,mark);
mark++;
while( mark String value = message.substring(mark,message.length() );
header.put(key,value);
count=0;
}
// 獲得正文數據
while( (word=receiver.read())!=-1) {
if(count == data.length) data = addCapacity(data);
data[count++] = (byte)word;
}
if(count>0) byteStream = new ByteArrayInputStream(data,0,count);
data=null;
closeServer();
}
public String getResponseMessage() {
return responseMessage;
}
public int getResponseCode() {
return responseCode;
}
public String getServerVersion() {
return serverVersion;
}
public InputStream getInputStream() {
return byteStream;
}
public synchronized String getHeaderKey(int i) {
if(i>=header.size()) return null;
Enumeration enum = header.propertyNames();
String key = null;
for(int j=0; j<=i; j++)
key = (String)enum.nextElement();
return key;
}
public synchronized String getHeaderValue(int i) {
if(i>=header.size()) return null;
return header.getProperty(getHeaderKey(i));
}
public synchronized String getHeaderValue(String key) {
return header.getProperty(key);
}
protected String getBaseHeads() {
String inf = "User-Agent: myselfHttp/1.0\r\n"+
"Accept: www/source; text/html; image/gif; */*\r\n";
return inf;
}
private byte[] addCapacity(byte rece[]){
byte temp[] = new byte[rece.length+1024];
System.arraycopy(rece,0,temp,0,rece.length);
return temp;
}
}

注: 程序中只實現GET、HEAD、POST三種方法。其他幾種因不常使用,暫且忽略。

? ? ? ? ? ?
HTTP:超文本傳輸協議
HTTP:Hypertext Transfer Protocol

  超文本傳輸協議(HTTP)是應用層協議,由于其簡捷、快速的方式,適用于分布式和合作式超媒體信息系統。自 1990 年起, HTTP 就已經被應用于 WWW 全球信息服務系統。

  HTTP 允許使用自由答復的方法表明請求目的,它建立在統一資源識別器(URI)提供的參考原則下,作為一個地址(URL)或名字(URN),用以標志采用哪種方法,它用類似于網絡郵件和多用途網際郵件擴充協議(MIME)的格式傳遞消息。

  HTTP 也可用作普通協議,實現用戶代理與連接其它 Internet 服務(如 SMTP 、 NNTP 、 FTP 、 GOPHER 及 WAIS )的代理服務器或網關之間的通信,允許基本的超媒體訪問各種應用提供的資源,同時簡化了用戶代理系統的實施。

   HTTP 是一種請求 / 響應式的協議。一個客戶機與服務器建立連接后,發送一個請求給服務器,請求的格式是:統一資源標識符(URI)、協議版本號,后面是類似 MIME 的信息,包括請求修飾符、客戶機信息和可能的內容。服務器接到請求后,給予相應的響應信息,其格式是:一個狀態行包括信息的協議版本號、一個成功或錯誤的 代碼,后面也是類似 MIME 的信息,包括服務器信息、實體信息和可能的內容。

  HTTP 的第一版本 HTTP/0.9 是一種簡單的用于網絡間原始數據傳輸的協議。而由 RFC 1945 定義的 HTTP/1.0 ,在原 HTTP/0.9 的基礎上,有了進一步的改進,允許消息以類 MIME 信息格式存在,包括請求 / 響應范式中的已傳輸數據和修飾符等方面的信息。但是, HTTP/1.0 沒有充分考慮到分層代理服務器、高速緩沖存儲器、持久連接需求或虛擬主機等方面的效能。相比之下, HTTP/1.1 要求更加嚴格以確保服務的可靠性。關于安全增強版的 HTTP (即S-HTTP),將在相關文件中再作介紹。


協議結構

   HTTP報文由從客戶機到服務器的請求和從服務器到客戶機的響應構成。?請求報文格式如下:

請求行通用信息頭請求頭實體頭報文主體

  請求行以方法字段開始,后面分別是 URL 字段和 HTTP 協議版本字段,并以 CRLF 結尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有關通用信息頭,請求頭和實體頭方面的具體內容可以參照相關文件。

  應報文格式如下:


狀態行通用信息頭響應頭實體頭報文主體

  狀態碼元由3位數字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態碼作簡短的描述,狀態碼用來支持自動操作,而原因分析用來供用戶使用。客戶機無需用來檢查或顯示語法。有關通用信息頭,響應頭和實體頭方面的具體內容可以參照相關文件。

相關協議WWW、FTP、STMP、NNTP、Gopher、WAIS、DNSS-HTTP
組織來源HTTP 定義在 IETF (http://www.ietf.org) 的 RFC 1945和2616中。

總結

以上是生活随笔為你收集整理的轻松认识HTTP协议的概念和工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲激情视频在线观看 | 91porny九色91啦中文 | 日韩a级黄色 | 国产美女被啪进深处喷白浆视频 | 国产一级免费观看 | 草久在线视频 | 色综合久久久久久久 | 麻豆影视网站 | 丁香婷婷深情五月亚洲 | 中文字幕中文字幕 | 999久久久久久久久6666 | 日韩一级黄色片 | 免费又黄又爽视频 | av一级在线 | 亚洲区另类春色综合小说 | 麻豆一精品传二传媒短视频 | 精品国产美女 | 欧美日韩精品区 | 国产精品免费视频一区二区 | 日本视频精品 | 啪啪精品| 国产精品美女在线观看 | 久久免费电影网 | 日日夜夜天天操 | 特黄免费av | 97超碰人人澡 | 久久a久久 | 97精品国产97久久久久久春色 | 成人动态视频 | 久久国产精品视频免费看 | 久久精品久久精品久久精品 | 中文字幕激情 | 丝袜少妇在线 | 成人h动漫精品一区二 | 激情中文在线 | 久久夜色精品国产欧美乱 | 在线精品在线 | 国产精成人品免费观看 | 国产高清区| 欧美日韩国产二区三区 | a黄色片在线观看 | 黄p在线播放 | 曰本三级在线 | 国产 一区二区三区 在线 | 999国内精品永久免费视频 | 91av电影| 亚洲午夜久久久久久久久久久 | 亚洲日韩中文字幕在线播放 | 日本精品一区二区三区在线播放视频 | 亚洲激情在线观看 | 五月婷婷色播 | 国产专区免费 | 九九热久久久 | 黄色av电影网 | 婷婷深爱网| 亚洲天天摸日日摸天天欢 | 成人午夜精品久久久久久久3d | 国产日韩精品一区二区 | 综合色影院 | 人人干网 | www国产亚洲精品 | 日韩r级电影在线观看 | av在线电影免费观看 | 超碰97久久 | 国产视频 久久久 | 欧美激情精品久久 | 偷拍视频一区 | 久久久福利视频 | 成年人免费av网站 | 一区二区视频在线观看免费 | 五月天堂网 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | aaawww| 91丨精品丨蝌蚪丨白丝jk | 国产精品美女免费看 | 国产在线视频资源 | 丁香在线观看完整电影视频 | 在线视频一二三 | 成人国产精品一区二区 | 国产免费一区二区三区网站免费 | 国内精品久久久 | 久久高清毛片 | 97视频亚洲| 黄色av一区 | 一区二区欧美在线观看 | 国产黄a三级三级三级三级三级 | 久草在线一免费新视频 | 国模精品一区二区三区 | 久草视频在线观 | 日本黄色大片免费看 | 亚洲97在线| 久久久久久97三级 | 中文字幕免费观看全部电影 | 99精品黄色片免费大全 | 久久久久久久久久久高潮一区二区 | 久久久久久久久久久黄色 | 99久久99久久精品免费 | 在线免费观看视频 | 国产黄影院色大全免费 | 久久综合精品国产一区二区三区 | 手机在线观看国产精品 | 久久久久久亚洲精品 | 麻豆传媒视频在线播放 | 国产黄色片一级三级 | 97人人网 | 少妇bbbb揉bbbb日本 | 美女免费视频观看网站 | 国产一级电影 | 91一区二区在线 | 国产精品69久久久久 | 17videosex性欧美 | 亚洲高清在线观看视频 | 欧美日韩亚洲在线观看 | 麻豆国产精品永久免费视频 | 亚洲高清国产视频 | 99色免费| 欧美一级片免费观看 | 国产精品淫 | 精品久久1 | 8x成人在线 | 久久久国产电影 | 夜夜躁狠狠躁日日躁视频黑人 | 特黄一级毛片 | 久久人人97超碰精品888 | 国产亚洲精品av | 日韩欧美国产成人 | 麻豆小视频在线观看 | 特级西西人体444是什么意思 | 美女久久久久久久 | 中文字幕免费高清在线观看 | 一区二区三区免费播放 | 国产精品一区二区在线看 | 久久免费av| 成人性生交视频 | 国模视频一区二区三区 | 久草在线视频免费资源观看 | 综合色婷婷 | 亚洲最大免费成人网 | 九九九九九精品 | 亚洲 欧美变态 另类 综合 | a级片在线播放 | 丁香 久久 综合 | 午夜av激情 | 麻花豆传媒一二三产区 | 最近中文字幕视频网 | 日本一区二区三区视频在线播放 | 久久99国产精品免费网站 | 8x成人免费视频 | 日本一区二区不卡高清 | 草莓视频在线观看免费观看 | 国模视频一区二区 | 精品国产欧美一区二区 | 天天综合网久久综合网 | 视频在线99re | 亚洲精品美女久久17c | 狠狠操狠狠插 | 91免费网 | 欧美不卡视频在线 | 韩国精品视频在线观看 | av动图| 久久视频热| 日韩在线在线 | 日韩一级电影网站 | 99久久日韩精品视频免费在线观看 | 久久情爱| 国产不卡一| 成人91av| 免费视频91蜜桃 | 超碰免费在线公开 | 国产精品一区二 | 中文字幕日本特黄aa毛片 | wwwww.国产| 久久一久久 | 一区二区三区免费网站 | 国产精品久久久久久久久久久杏吧 | 日韩精品最新在线观看 | 亚洲高清视频在线 | 蜜臀久久99精品久久久酒店新书 | 亚洲日韩精品欧美一区二区 | 99免在线观看免费视频高清 | 亚洲综合成人婷婷小说 | 一区二区电影在线观看 | av在线免费在线观看 | 免费观看视频黄 | 蜜臀久久99静品久久久久久 | 国产一级黄色免费看 | 国产一区二区观看 | 国产精品成人免费 | 久久成人在线 | 婷婷午夜激情 | 久久永久视频 | 亚洲成人中文在线 | 骄小bbw搡bbbb揉bbbb | 国产视频黄| 成年人毛片在线观看 | 欧美激情视频一区二区三区免费 | 奇米影视8888在线观看大全免费 | 亚洲人av免费网站 | 精品久久久久久亚洲综合网 | 天堂av在线中文在线 | 五月天丁香综合 | 日韩高清精品一区二区 | 免费在线h| 亚洲国产中文在线 | 日韩动漫免费观看高清完整版在线观看 | www.99热精品| 日韩免费观看av | 国产无套精品久久久久久 | 亚洲在线精品视频 | 伊人看片| 国产a免费| 免费在线电影网址大全 | 日韩av成人在线观看 | 深夜免费福利在线 | 国产日韩欧美视频在线观看 | 999男人的天堂 | 黄色www免费 | 国产a级精品 | 久久综合精品国产一区二区三区 | 久久综合99| 久久99精品热在线观看 | 九九视频免费观看视频精品 | 成人久久18免费 | 91丨porny丨九色| 亚洲精品一区二区三区新线路 | 亚洲中字幕 | 黄色av网站在线免费观看 | 免费亚洲一区二区 | 日韩 在线观看 | 九九九热精品免费视频观看 | 免费观看十分钟 | 欧美午夜精品久久久久 | 91色国产在线 | 欧美日韩精品免费观看视频 | 色av色av色av | av成人黄色| 日韩中文字幕91 | 亚洲国产97在线精品一区 | 视频二区在线 | 久久激情日本aⅴ | 1000部18岁以下禁看视频 | 国产一级二级三级视频 | 一区二区三区高清在线观看 | av黄色免费在线观看 | 人人干天天干 | 久久国产精品99久久久久久老狼 | 国产视频69 | 天堂va在线观看 | 亚洲视频精品在线 | 国产中文字幕网 | 日韩欧美视频在线播放 | 国产精品18久久久久vr手机版特色 | 免费观看视频的网站 | 美女黄视频免费看 | 97精品国产91久久久久久 | 欧美成人视 | 色综合久久88色综合天天免费 | 亚洲毛片视频 | 色a资源在线| 91xav| 日韩精品在线看 | 最近日本韩国中文字幕 | 91在线免费视频观看 | 国产中文字幕久久 | www视频免费在线观看 | 99精品视频在线播放观看 | 中文av网| 99精品在线看 | 日韩理论电影在线 | www.夜夜爽 | 在线成人国产 | 婷婷丁香在线视频 | 国产成人精品久久二区二区 | 精品国产一区二区三区四区vr | 人人干人人搞 | 久久久av免费 | 久久黄色免费 | 午夜视频福利 | 久操视频在线免费看 | 欧美国产日韩一区二区三区 | 久在线观看视频 | 最近更新的中文字幕 | 91欧美在线 | 亚洲小视频在线 | 97操操操 | 亚洲永久av | www欧美色 | 国产精品久久久久久婷婷天堂 | 国产专区在线视频 | 久久av中文字幕片 | 狠狠色丁香婷婷 | 国产在线 一区二区三区 | 黄色网中文字幕 | 日韩免费在线观看视频 | 精品国产欧美一区二区三区不卡 | 色婷婷九月 | 色久天 | 成人aaa毛片 | 毛片一区二区 | 国产69精品久久久久久 | 国产一区二区久久久 | 在线观看的av | 青青河边草观看完整版高清 | 国产精品影音先锋 | 午夜手机电影 | 亚洲天堂色婷婷 | 超碰97在线人人 | 亚洲欧洲精品视频 | 欧美一区二视频在线免费观看 | 狠狠色丁香婷婷综合橹88 | av不卡免费看 | 久久国产精品久久久久 | 国产69久久精品成人看 | 亚洲精品免费播放 | 三级视频片 | 九草视频在线观看 | 久久久久亚洲精品成人网小说 | 国产精品视频资源 | 日韩成人免费在线观看 | 午夜免费视频网站 | 精品一二区 | 欧美一级免费高清 | 久久久国产精品一区二区三区 | 在线欧美国产 | 国产97在线观看 | 天天综合网天天综合色 | 麻豆va一区二区三区久久浪 | 国产美女网站视频 | 人人爽爽人人 | 福利一区二区三区四区 | 超碰97网站| 人人干网站 | 亚洲三级av | 日韩色一区二区三区 | 中文字幕av最新 | 三级动图 | 日韩一区二区三区免费视频 | 精品久久久久久久久中文字幕 | 欧美精品午夜 | 日日躁夜夜躁aaaaxxxx | 久久久久久久看片 | 午夜 在线 | 91中文视频 | 久久另类小说 | www.97视频 | 欧美性大胆 | 欧美综合国产 | 日本精品在线 | 美女视频黄,久久 | 狠狠狠狠狠狠干 | 国产一区在线精品 | 成年人免费在线播放 | 中文字幕av专区 | 国产手机视频在线观看 | 免费观看的黄色片 | 在线免费观看av网站 | 亚洲午夜精品在线观看 | 四季av综合网站 | 日韩av偷拍 | 日本中出在线观看 | 精品99免费视频 | 欧美性色黄大片在线观看 | 亚洲午夜av| 国产精品毛片久久 | 夜色资源站wwwcom | 激情伊人五月天 | 夜夜澡人模人人添人人看 | 亚洲五月六月 | av一级网站 | 国产第一页精品 | 日本黄色一级电影 | 日韩欧美极品 | 999久久久精品视频 日韩高清www | 免费又黄又爽的视频 | 欧美精品午夜 | 激情av一区二区 | 国产成人免费高清 | 99免在线观看免费视频高清 | 综合久久一本 | 激情av在线播放 | 亚洲精品理论片 | 97色资源 | 国产一二三四在线视频 | 美女黄频免费 | 人人干人人添 | 精品国产乱码一区二区三区在线 | 成人免费观看电影 | 欧洲精品久久久久毛片完整版 | 午夜精品福利影院 | 亚洲欧洲国产精品 | 丁香六月婷婷开心 | 国产精品久久久久久一二三四五 | 国产亚洲精品中文字幕 | 欧美在线视频精品 | 深夜福利视频在线观看 | 精品产品国产在线不卡 | 久久综合九色欧美综合狠狠 | 久草电影免费在线观看 | 日本精品一| 久久综合五月天 | 91久久人澡人人添人人爽欧美 | 91cn国产在线 | 日韩欧美一区二区三区在线观看 | 国产婷婷视频在线 | 亚洲最大在线视频 | 国产在线视频不卡 | 黄色成人av | 久久久免费高清视频 | 一区二区三区四区五区在线 | 99久久久久久久久久 | 欧美一区日韩精品 | 中文字幕 欧美性 | 国产资源免费在线观看 | 久久电影日韩 | 欧美一级日韩三级 | 久久99最新地址 | 美女视频黄的免费的 | 亚洲精品欧美成人 | 91精品视频免费 | 亚洲电影一级黄 | 国产视频1区2区3区 久久夜视频 | 亚洲精品99久久久久中文字幕 | 精品亚洲午夜久久久久91 | 久久66热这里只有精品 | 久久精品中文字幕免费mv | 精品福利国产 | 91人人澡人人爽人人精品 | 五月激情五月激情 | 国产精品一区二区久久精品爱微奶 | 欧亚日韩精品一区二区在线 | 青青射 | 久久精品国产亚洲精品 | 黄色免费高清视频 | 99在线高清视频在线播放 | 日本一区二区三区免费观看 | 免费看亚洲毛片 | 国产精品视频免费观看 | 99久久精品免费视频 | 韩国精品在线观看 | 99视频精品免费视频 | 久久久久久久影院 | 国产五月 | 天天射,天天干 | 九九视频精品免费 | 五月激情久久久 | 中文字幕在线观看一区二区 | 日韩av一区二区在线 | 日韩一二区在线 | 国产精品久久一区二区无卡 | 中文字幕欧美日韩va免费视频 | 欧美激情精品久久久久久免费印度 | 久草视频在线免费 | 天天摸天天操天天舔 | 亚洲日本一区二区在线 | 亚洲一级黄色大片 | 成年人免费在线看 | 日韩亚洲国产中文字幕 | 日日干夜夜操视频 | 黄污在线看| 韩国av一区二区三区 | 激情婷婷在线观看 | 99热最新地址 | av 一区 二区 久久 | 国产精品福利av | 日韩精品一区二区三区免费观看 | a久久免费视频 | 国产精品免费观看国产网曝瓜 | 粉嫩av一区二区三区四区五区 | 久久精品第一页 | 九九爱免费视频在线观看 | 国产天天综合 | 成人在线免费视频 | 亚洲aⅴ一区二区三区 | 久久五月天色综合 | 综合网天天| av电影在线观看完整版一区二区 | 狠狠干狠狠操 | 日韩激情一二三区 | 手机看片1042 | 91精品视频观看 | 免费情趣视频 | 日日日日日| 日韩精品首页 | 精品国产123 | 中文字幕在线免费观看 | 久久精品精品电影网 | 日韩理论在线视频 | 国产精品999久久久 久产久精国产品 | 久久呀 | 色婷婷狠狠五月综合天色拍 | 91免费看黄色 | 午夜丁香网 | 九九热在线播放 | 久久久噜噜噜久久久 | 狠狠色狠狠色终合网 | 久久久久久久久久电影 | 国产 一区二区三区 在线 | 久久精品久久精品久久 | 婷婷精品国产一区二区三区日韩 | 免费在线| 成人av亚洲| 九九久久精品视频 | 亚洲成av人片在线观看www | 色射色| 日韩视频在线不卡 | 日韩在线在线 | 成人动漫视频在线 | 午夜三级在线 | 国产综合片 | 五月婷婷激情六月 | 亚洲日日射 | 久久精品国产一区二区 | 亚洲精品国 | 国产美女搞久久 | 欧美视频日韩视频 | 香蕉视频在线免费看 | 国产无区一区二区三麻豆 | 日韩免费在线观看 | www色av| 91精品一区二区三区蜜桃 | 久久a免费视频 | 久久xx视频 | 成 人 黄 色视频免费播放 | 一区二区三区免费在线观看 | 国产精品久久9 | 亚洲天堂自拍视频 | 91资源在线 | 天天摸日日摸人人看 | 免费成人av电影 | 久久五月天色综合 | 91黄色免费网站 | 精品免费一区 | 国产美腿白丝袜足在线av | 国产一线二线三线在线观看 | 久久九九精品久久 | 日韩中文久久 | 成年人视频在线免费 | 99热精品在线观看 | 久久久香蕉视频 | 国产精品欧美久久久久无广告 | 99久久精品国产系列 | 日日夜夜免费精品 | 欧美男女爱爱视频 | 成年人国产视频 | a精品视频 | 日日摸日日 | 亚洲一区久久久 | 亚洲黄色成人网 | 国产精品一区二区免费 | 国产伦理久久精品久久久久_ | 中文字幕之中文字幕 | 香蕉视频日本 | 97成人在线视频 | 亚洲综合色av | 97精品伊人 | 成人蜜桃| 国产 日韩 中文字幕 | 91看国产| 中文字幕久久精品一区 | 国产精品区二区三区日本 | 久久激情综合 | 超碰97人人在线 | 国语对白少妇爽91 | 久久呀| 久久免费精品一区二区三区 | 亚洲精品五月天 | 国产精品尤物视频 | 亚洲 欧美变态 另类 综合 | 大荫蒂欧美视频另类xxxx | 国产精品手机播放 | 亚洲午夜精品在线观看 | 色91av| 免费三级网 | 久草91视频 | 亚洲一区二区三区在线看 | 中文字幕av在线不卡 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 高清av免费一区中文字幕 | 国产热re99久久6国产精品 | 国产在线超碰 | 日韩电影一区二区在线观看 | 亚洲国产av精品毛片鲁大师 | 久久躁日日躁aaaaxxxx | 久久久久久久99精品免费观看 | 97超碰在线人人 | 日韩在线视频一区二区三区 | 国产成人亚洲在线观看 | 日韩中文字幕电影 | 亚洲影视九九影院在线观看 | 西西4444www大胆视频 | 国产91粉嫩白浆在线观看 | 免费观看www7722午夜电影 | 能在线观看的日韩av | wwwav视频| 免费在线一区二区三区 | 成人久久久精品国产乱码一区二区 | 久久精品www人人爽人人 | 奇米四色影狠狠爱7777 | 日韩黄色一区 | 免费在线观看一区 | 国内精品在线看 | 国内综合精品午夜久久资源 | 精品视频久久 | 欧美一级日韩免费不卡 | 午夜精品久久久久久 | 国产精品专区在线 | 青青草国产精品视频 | 国产无套精品久久久久久 | 91人人澡人人爽 | 国产正在播放 | 久久免费毛片 | 久久久久久国产一区二区三区 | 激情伊人五月天 | 中国黄色一级大片 | 开心激情久久 | 午夜视频一区二区三区 | 天天激情站 | 91看片淫黄大片一级在线观看 | 久操视频在线观看 | 午夜精品一区二区三区在线视频 | 国产一区私人高清影院 | 五月婷婷一区 | 日日操操 | 亚洲欧美视频在线播放 | 日本女人b | www.神马久久 | 亚洲精品五月天 | av黄网站| 99r在线| 久久精品牌麻豆国产大山 | 中文字幕亚洲高清 | 欧美日韩三区二区 | 91精品一区二区三区久久久久久 | 日日弄天天弄美女bbbb | 久久久久国 | 97超碰在线免费观看 | 亚洲精品免费在线观看 | 麻花豆传媒mv在线观看网站 | av中文字幕不卡 | 国产精品美女在线观看 | 麻豆视频一区二区 | 久久久激情视频 | av亚洲产国偷v产偷v自拍小说 | 婷婷丁香综合 | 伊人开心激情 | 久久精品国产第一区二区三区 | 中文字幕乱码在线播放 | 精品视频123区在线观看 | 激情综合五月婷婷 | 一级片视频免费观看 | 2022久久国产露脸精品国产 | av大全在线看| 日日夜夜网站 | 日韩在线观看视频一区二区三区 | 激情网第四色 | 色噜噜日韩精品一区二区三区视频 | 在线色吧 | 国产三级视频在线 | 在线免费观看黄色 | 国产伦精品一区二区三区免费 | 亚洲精品成人av在线 | 天天做天天干 | 亚洲电影久久久 | 二区中文字幕 | 久久久久久久久久久网 | 在线视频 一区二区 | 日韩免费在线看 | 成人免费观看完整版电影 | 日本特黄一级 | 日日添夜夜添 | 日本精品xxxx | a一片一级| 欧美另类性 | 亚洲黄色在线免费观看 | 视频精品一区二区三区 | 99色在线视频 | 日本在线视频一区二区三区 | 九九精品视频在线 | 亚洲欧美精品在线 | 天堂在线一区 | 国内精品久久久久影院优 | 日韩色综合 | www.五月天| 免费看污黄网站 | 91久色蝌蚪 | 久久怡红院 | 成人天堂网 | 伊人热 | 色综合久久88色综合天天 | 天天看天天干天天操 | 天天操天天谢 | 一级黄色在线免费观看 | 久久综合五月天婷婷伊人 | 日韩精品在线看 | 午夜精品久久久久久久99 | 成人av资源 | 国产中文 | 国产97av | 九九热中文字幕 | 91视频 - x99av | 久久婷婷精品视频 | 99在线高清视频在线播放 | 国产极品尤物在线 | 99免费在线观看视频 | 97麻豆视频 | 天天干夜夜爽 | 日韩午夜av| 久久婷婷国产色一区二区三区 | 在线免费观看羞羞视频 | 国产一区视频在线观看免费 | 69视频在线 | 亚洲精品视频一 | 成人av免费网站 | 欧美日韩亚洲第一页 | 日韩精品久久久久久久电影竹菊 | 欧美热久久 | 天堂视频一区 | 久草网在线视频 | 国产精品自产拍在线观看 | 伊人色综合久久天天 | 中文字幕中文中文字幕 | 91色一区二区三区 | 国产黄色一级大片 | 国际精品网 | 午夜久久久久久久久久影院 | 国产伦精品一区二区三区免费 | 91免费视频网站在线观看 | 日韩激情网 | 亚洲一级在线观看 | 久久久久久综合网天天 | 婷婷国产一区二区三区 | 成人资源网 | 国产亚洲欧美在线视频 | 91av视频在线观看 | 亚洲国产精彩中文乱码av | 欧美黄色免费 | 日韩精品视频免费专区在线播放 | 日韩免费 | 天堂av免费观看 | 亚洲天天在线 | 欧美伦理一区二区三区 | 一区免费在线 | 日韩欧美视频免费在线观看 | 91免费黄视频 | 中文字幕丰满人伦在线 | 中文字幕九九 | 涩涩伊人 | 日韩高清久久 | 69中文字幕 | 欧美日韩在线观看一区 | 久久精品免费播放 | 91手机视频 | 成人福利在线播放 | 97视频在线 | 亚洲一级片av| 最新av免费| 狠狠操精品 | 少妇性aaaaaaaaa视频 | 亚洲视频免费在线看 | 91精品国产自产91精品 | 韩日在线一区 | 波多野结衣视频一区 | 激情影音| 精品乱码一区二区三四区 | 国产精品久久久久久久久久久久 | 中文永久字幕 | 91爱在线| 日韩视频一区二区在线观看 | 夜夜骑日日 | 九九精品无码 | 亚洲日本激情 | 日韩在线高清视频 | 欧美孕妇与黑人孕交 | 色综合久久久网 | 欧美一级久久 | 久久九九久久九九 | 99视频偷窥在线精品国自产拍 | 欧美成人高清 | 91精品国产综合久久久久久久 | 丁香婷婷久久久综合精品国产 | 91 中文字幕| 999成人 | av在线日韩| 日本视频精品 | 日韩av综合网站 | 国产69久久 | 天堂在线一区 | 最新国产精品亚洲 | 亚洲日韩中文字幕在线播放 | 丁香久久| 久久视频热 | 91天堂影院 | 成人91在线| 国产精品第2页 | 午夜精品久久久久久久久久久久久久 | 日本在线观看视频一区 | 中文区中文字幕免费看 | 国产一区二区手机在线观看 | 亚洲国产精品推荐 | 不卡国产视频 | 天天骚夜夜操 | 中文字幕免费观看视频 | 成人午夜黄色影院 | 五月婷综合 | 99久久精品国 | 97超碰资源站 | 日日碰狠狠添天天爽超碰97久久 | 91麻豆精品国产自产在线 | 黄a在线| 久久国产精品色av免费看 | 五月天狠狠操 | 天天干天天看 | 亚洲无吗天堂 | 精品视频123区在线观看 | 天天爽夜夜爽精品视频婷婷 | 久久久久久久久电影 | 成人免费在线观看电影 | 亚洲精品福利视频 | 9797在线看片亚洲精品 | 在线性视频日韩欧美 | 91热精品| 五月婷婷精品 | www.在线看片.com | 日韩91在线 | 精品二区视频 | 国产一卡二卡在线 | 日日夜日日干 | 国产精品二区在线 | 久久一二区 | 国产在线观看一 | 国产美女被啪进深处喷白浆视频 | 91精品视频在线播放 | 六月丁香激情综合色啪小说 | www.日日日.com| 97人人模人人爽人人喊中文字 | 伊人五月综合 | 亚洲影视九九影院在线观看 | 9999亚洲| 天天视频色版 | 99久久久国产精品免费99 | 麻豆传媒在线视频 | 深爱开心激情网 | 久久影视一区二区 | 国产91aaa| 欧美日韩中文在线 | 在线亚州| 91精品国产自产在线观看永久 | 99久久精品免费看国产免费软件 | 在线观看亚洲精品视频 | 国产免费激情久久 | av一区二区三区在线 | 国产精品美乳一区二区免费 | 99亚洲国产精品 | 日韩激情影院 | www.久久久精品 | 亚洲专区在线视频 | 日韩av电影免费观看 | 欧美日韩一区二区免费在线观看 | 中文字幕在线播放日韩 | 99视频在线观看免费 | 午夜视频在线观看网站 | 久久精品成人热国产成 | 久热色超碰| 91精彩视频在线观看 | 少妇av网| 天天干天天搞天天射 | 久久久在线免费观看 | 91成人精品视频 | 亚洲欧洲精品视频 | 国产日韩欧美在线一区 | 欧美久久久久久久久久久 | 国产精品video爽爽爽爽 | 在线看的av网站 | 一级性视频 | 免费观看一级成人毛片 | 国产精品ⅴa有声小说 | 色福利网| 美女黄频视频大全 | 五月天电影免费在线观看一区 | 麻豆久久一区二区 | 黄色av网站在线观看 | 911在线 | 在线观看涩涩 | 国产美女被啪进深处喷白浆视频 | 麻豆极品| 国产亚洲欧美在线视频 | 天天夜夜亚洲 | 国产亚洲成av人片在线观看桃 | 国产日本在线 | 草草草影院 | 国产成人一区二区啪在线观看 | 久久免费的视频 | 91福利视频免费 | 高清精品视频 | 色哟哟国产精品 | 国产精品第2页 | 亚洲午夜久久久久久久久久久 | 99成人精品 | 性色av免费看 | 91.dizhi永久地址最新 | 五月婷婷狠狠 | 亚洲国产色一区 | 91热视频在线观看 | 在线黄色免费 | 日韩在线观看第一页 | 日韩电影中文,亚洲精品乱码 | 精品久久久久久久久久国产 | 韩国一区视频 | www91在线观看 | 欧美大片在线观看一区 | 狠狠干在线播放 | 欧美激情第28页 | 亚洲国产中文在线 | 国产手机av在线 | 欧美视频在线观看免费网址 | 日本九九视频 | 久久尤物电影视频在线观看 | 91秒拍国产福利一区 | 在线观看免费色 | 久久综合狠狠综合久久综合88 | 99热手机在线观看 | 日产乱码一二三区别免费 | 欧美福利精品 | 精品久久电影 | 国产丝袜制服在线 | 欧美黄色免费 | av在线成人 | 国产精品一区二区无线 | 国产片免费在线观看视频 | 伊人五月天婷婷 | 日韩在线第一 | 亚洲精品欧美专区 | 欧美国产日韩一区二区三区 | 欧美成人日韩 | 久久精品99国产国产精 | 2019中文最近的2019中文在线 | 六月婷色| 国产裸体bbb视频 | 91av视频在线观看免费 | 国内精品免费 | 五月天.com| 婷婷丁香色综合狠狠色 | 成人av影院在线观看 | 麻豆久久久| 久久人人爽人人人人片 | 国产午夜一级毛片 | 91香蕉视频色版 | 韩日精品视频 | 精品国产乱码久久久久久1区二区 | a久久久久久 | 亚洲综合色激情五月 | 日韩中文字幕视频在线 | 五月激情天 | 欧美大片在线观看一区 | 久久免费99精品久久久久久 | 久久都是精品 | 在线免费视频 你懂得 | av丝袜制服 | 日韩r级电影在线观看 | 国产香蕉久久精品综合网 | 成人免费观看在线视频 | 久久五月情影视 | 91禁看片| 最新免费中文字幕 | 国产小视频在线观看免费 | a√天堂中文在线 | 色噜噜在线观看 | 看全黄大色黄大片 | 亚洲一片黄| 欧美综合色在线图区 | 精品毛片久久久久久 | 日本一区二区高清不卡 | 中文字幕一区二区三区乱码在线 | 国内精品亚洲 | 国内视频1区| 国产成人精品一区一区一区 | 久久久精品免费看 | 成 人 黄 色 片 在线播放 | 亚洲精品在线网站 | 久久精品这里精品 | 久久伊人国产精品 | 免费福利在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 欧美资源 | 亚洲欧美日韩一区二区三区在线观看 | 午夜精品久久久久久中宇69 | 国产精品福利av | 2018亚洲男人天堂 | 黄p在线播放| 性色在线视频 | 一区二区不卡在线观看 | 中文字幕乱码电影 | 日韩大片在线 | 色先锋av资源中文字幕 | 色综合久久久久久久 | 国产精品久久久999 国产91九色视频 | 久草在线综合网 | 国产精品久久久久免费 |