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

原來這才是 Socket!

網(wǎng)絡(luò) 通信技術(shù)
一個(gè)數(shù)據(jù)包經(jīng)由應(yīng)用程序產(chǎn)生,進(jìn)入到協(xié)議棧中進(jìn)行各種報(bào)文頭的包裝,然后操作系統(tǒng)調(diào)用網(wǎng)卡驅(qū)動(dòng)程序指揮硬件,把數(shù)據(jù)發(fā)送到對(duì)端主機(jī)。整個(gè)過程的大體的圖示如下。

[[440442]]

之前的計(jì)算機(jī)網(wǎng)絡(luò)系列文章中沒有詳細(xì)介紹 Socket ,這篇文章我們來聊一下 Socket。

關(guān)于對(duì) Socket 的認(rèn)識(shí),大致分為下面幾個(gè)主題,Socket 是什么,Socket 是如何創(chuàng)建的,Socket 是如何連接并收發(fā)數(shù)據(jù)的,Socket 套接字的刪除等。

Socket 是什么以及創(chuàng)建過程

一個(gè)數(shù)據(jù)包經(jīng)由應(yīng)用程序產(chǎn)生,進(jìn)入到協(xié)議棧中進(jìn)行各種報(bào)文頭的包裝,然后操作系統(tǒng)調(diào)用網(wǎng)卡驅(qū)動(dòng)程序指揮硬件,把數(shù)據(jù)發(fā)送到對(duì)端主機(jī)。整個(gè)過程的大體的圖示如下。

我們大家知道,協(xié)議棧其實(shí)是位于操作系統(tǒng)中的一些協(xié)議的堆疊,這些協(xié)議包括 TCP、UDP、ARP、ICMP、IP等。通常某個(gè)協(xié)議的設(shè)計(jì)都是為了解決某些問題,比如 TCP 的設(shè)計(jì)就負(fù)責(zé)安全可靠的傳輸數(shù)據(jù),UDP 設(shè)計(jì)就是報(bào)文小,傳輸效率高,ARP 的設(shè)計(jì)是能夠通過 IP 地址查詢物理(Mac)地址,ICMP 的設(shè)計(jì)目的是返回錯(cuò)誤報(bào)文給主機(jī),IP 設(shè)計(jì)的目的是為了實(shí)現(xiàn)大規(guī)模主機(jī)的互聯(lián)互通。

應(yīng)用程序比如瀏覽器、電子郵件、文件傳輸服務(wù)器等產(chǎn)生的數(shù)據(jù),會(huì)通過傳輸層協(xié)議進(jìn)行傳輸,而應(yīng)用程序是不會(huì)和傳輸層直接建立聯(lián)系的,而是有一個(gè)能夠連接應(yīng)用層和傳輸層之間的套件,這個(gè)套件就是 Socket。

在上面這幅圖中,應(yīng)用程序包含 Socket 和解析器,解析器的作用就是向 DNS 服務(wù)器發(fā)起查詢,查詢目標(biāo) IP 地址。

應(yīng)用程序的下面就是操作系統(tǒng)內(nèi)部,操作系統(tǒng)內(nèi)部包括協(xié)議棧,協(xié)議棧是一系列協(xié)議的堆疊。操作系統(tǒng)下面就是網(wǎng)卡驅(qū)動(dòng)程序,網(wǎng)卡驅(qū)動(dòng)程序負(fù)責(zé)控制網(wǎng)卡硬件,驅(qū)動(dòng)程序驅(qū)動(dòng)網(wǎng)卡硬件完成收發(fā)工作。

在操作系統(tǒng)內(nèi)部有一塊用于存放控制信息的存儲(chǔ)空間,這塊存儲(chǔ)空間記錄了用于控制通信的控制信息。其實(shí)這些控制信息就是 Socket 的實(shí)體,或者說存放控制信息的內(nèi)存空間就是套接字的實(shí)體。

這里大家有可能不太清楚所以然,所以我用了一下 netstat 命令來給大伙看一下套接字是啥玩意。

我們?cè)?Windows 的命令提示符中輸入

  1. netstat -ano 
  2.  
  3. # netstat 用于顯示套接字內(nèi)容 , -ano 是可選選項(xiàng) 
  4. # a 不僅顯示正在通信的套接字,還顯示包括尚未開始通信等狀態(tài)的所有套接字 
  5. # n 顯示 IP 地址和端口號(hào) 
  6. # o 顯示套接字的程序 PID 

我的計(jì)算機(jī)會(huì)出現(xiàn)下面結(jié)果。

圖中的每一行都相當(dāng)于一個(gè)套接字,每一列也被稱為一個(gè)元組,所以一個(gè)套接字就是五元組(協(xié)議、本地地址、外部地址、狀態(tài)、PID)。有的時(shí)候也被叫做四元組,四元組不包括協(xié)議。

比如圖中的第一行,它的協(xié)議就是 TCP,本地地址和遠(yuǎn)程地址都是 0.0.0.0,這表示通信還沒有開始,IP 地址暫時(shí)還未確定,而本地端口已知是 135,但是遠(yuǎn)程端口還未知,此時(shí)的狀態(tài)是 LISTENING,LISTENING 表示應(yīng)用程序已經(jīng)打開,正在等待與遠(yuǎn)程主機(jī)建立連接(關(guān)于各種狀態(tài)之間的轉(zhuǎn)換,大家可以閱讀筆者的這篇文章 TCP ,丫的終于來了!!)最后一個(gè)元組是 PID,即進(jìn)程標(biāo)識(shí)符,PID 就像我們的身份證號(hào)碼,能夠精確定位唯一的進(jìn)程。

現(xiàn)在你可能對(duì) Socket 有了一個(gè)基本的認(rèn)識(shí),現(xiàn)在喝口水,休息一下,讓我們繼續(xù)探究 Socket。

現(xiàn)在我有個(gè)問題,Socket 是如何創(chuàng)建的呢?

Socket 是和應(yīng)用程序一起創(chuàng)建的。應(yīng)用程序中有一個(gè) socket 組件,在應(yīng)用程序啟動(dòng)時(shí),會(huì)調(diào)用 socket 申請(qǐng)創(chuàng)建套接字,協(xié)議棧會(huì)根據(jù)應(yīng)用程序的申請(qǐng)創(chuàng)建套接字:首先分配一個(gè)套接字所需的內(nèi)存空間,這一步相當(dāng)于是為控制信息準(zhǔn)備一個(gè)容器,但只有容器并沒有實(shí)際作用,所以你還需要向容器中放入控制信息;如果你不申請(qǐng)創(chuàng)建套接字所需要的內(nèi)存空間,你創(chuàng)建的控制信息也沒有地方存放,所以分配內(nèi)存空間,放入控制信息缺一不可。至此套接字的創(chuàng)建就已經(jīng)完成了。

套接字創(chuàng)建完成后,會(huì)返回一個(gè)套接字描述符給應(yīng)用程序,這個(gè)描述符相當(dāng)于是區(qū)分不同套接字的號(hào)碼牌。根據(jù)這個(gè)描述符,應(yīng)用程序在委托協(xié)議棧收發(fā)數(shù)據(jù)時(shí)就需要提供這個(gè)描述符。

套接字連接

套接字創(chuàng)建完成后,最終還是為數(shù)據(jù)收發(fā)服務(wù)的,在數(shù)據(jù)收發(fā)之前,還需要進(jìn)行一步 connect,也就是建立連接的過程。這個(gè)連接并不是真實(shí)的連接:用一根水管插在兩個(gè)電腦之間。

而是應(yīng)用程序通過 TCP/IP 協(xié)議標(biāo)準(zhǔn)從一個(gè)主機(jī)通過網(wǎng)絡(luò)介質(zhì)傳輸?shù)搅硪粋€(gè)主機(jī)的過程。

套接字剛剛創(chuàng)建完成后,還沒有數(shù)據(jù),也不知道通信對(duì)象。在這種狀態(tài)下,即使你讓客戶端應(yīng)用程序委托協(xié)議棧發(fā)送數(shù)據(jù),它也不知道發(fā)送到哪里。所以瀏覽器需要根據(jù)網(wǎng)址來查詢服務(wù)器的 IP 地址,做這項(xiàng)工作的協(xié)議是 DNS,查詢到目標(biāo)主機(jī)后,再把目標(biāo)主機(jī)的 IP 告訴協(xié)議棧,至此,客戶端這邊就準(zhǔn)備好了。

在服務(wù)器上,與客戶端一樣也需要?jiǎng)?chuàng)建套接字,但是同樣的它也不知道通信對(duì)象是誰,所以我們需要讓客戶端向服務(wù)器告知客戶端的必要信息:IP 地址和端口號(hào)。

現(xiàn)在通信雙方建立連接的必要信息已經(jīng)具備,只欠一股東南風(fēng)了。通信雙方收到數(shù)據(jù)之后,還需要一塊位置來存放,這個(gè)位置就是緩沖區(qū),它是內(nèi)存的一部分,有了緩沖區(qū),就能夠進(jìn)行數(shù)據(jù)的收發(fā)操作了。

OK,現(xiàn)在客戶端想要給服務(wù)器發(fā)送一條數(shù)據(jù),該進(jìn)行哪些操作呢?

首先,客戶端應(yīng)用程序需要調(diào)用 Socket 庫中的 connect 方法,提供 socket 描述符和服務(wù)器 IP 地址、端口號(hào)。

  1. connect(<描述符>、<服務(wù)器IP地址和端口號(hào)>) 

這些信息會(huì)傳遞給協(xié)議棧中的 TCP 模塊,TCP 模塊會(huì)對(duì)請(qǐng)求報(bào)文進(jìn)行封裝,再傳遞給 IP 模塊,進(jìn)行 IP 報(bào)文頭的封裝,然后傳遞給物理層,進(jìn)行幀頭封裝,之后通過網(wǎng)絡(luò)介質(zhì)傳遞給服務(wù)器,服務(wù)器上會(huì)對(duì)幀頭、IP 模塊、TCP 模塊的報(bào)文頭進(jìn)行解析,從而找到對(duì)應(yīng)的套接字,套接字收到請(qǐng)求后,會(huì)寫入相應(yīng)的信息,并且把狀態(tài)改為正在連接。請(qǐng)求過程完成后,服務(wù)器的 TCP 模塊會(huì)返回響應(yīng),這個(gè)過程和客戶端是一樣的(如果大家不太清楚報(bào)文頭的封裝過程,可以閱讀筆者的這篇文章 TCP/IP 基礎(chǔ)知識(shí)總結(jié))

在一個(gè)完整的請(qǐng)求和響應(yīng)過程中,控制信息起到非常關(guān)鍵的作用(具體的作用我們后面會(huì)說)。

  • SYN 就是同步的縮寫,客戶端會(huì)首先發(fā)送 SYN 數(shù)據(jù)包,請(qǐng)求服務(wù)端建立連接。
  • ACK 就是相應(yīng)的意思,它是對(duì)發(fā)送 SYN 數(shù)據(jù)包的響應(yīng)。
  • FIN 是終止的意思,它表示客戶端/服務(wù)器想要終止連接。

由于網(wǎng)絡(luò)環(huán)境的復(fù)雜多變,經(jīng)常會(huì)存在數(shù)據(jù)包丟失的情況,所以雙方通信時(shí)需要相互確認(rèn)對(duì)方的數(shù)據(jù)包是否已經(jīng)到達(dá),而判斷的標(biāo)準(zhǔn)就是 ACK 的值。

(通信雙方連接的建立會(huì)經(jīng)過三次握手流程,對(duì)三次握手詳細(xì)的介紹可以閱讀筆者的這篇文章 TCP 基礎(chǔ)知識(shí))

當(dāng)所有建立連接的報(bào)文都能夠正常收發(fā)之后,此時(shí)套接字就已經(jīng)進(jìn)入可收發(fā)狀態(tài)了,此時(shí)可以認(rèn)為用一根管理把兩個(gè)套接字連接了起來。當(dāng)然,實(shí)際上并不存在這個(gè)管子。建立連接之后,協(xié)議棧的連接操作就結(jié)束了,也就是說 connect 已經(jīng)執(zhí)行完畢,控制流程被交回給應(yīng)用程序。

收發(fā)數(shù)據(jù)

當(dāng)控制流程從 connect 回到應(yīng)用程序之后,接下來就會(huì)直接進(jìn)入數(shù)據(jù)收發(fā)階段,數(shù)據(jù)收發(fā)操作是從應(yīng)用程序調(diào)用 write 將要發(fā)送的數(shù)據(jù)交給協(xié)議棧開始的,協(xié)議棧收到數(shù)據(jù)之后執(zhí)行發(fā)送操作。

協(xié)議棧不會(huì)關(guān)心應(yīng)用程序傳輸過來的是什么數(shù)據(jù),因?yàn)檫@些數(shù)據(jù)最終都會(huì)轉(zhuǎn)換為二進(jìn)制序列,協(xié)議棧在收到數(shù)據(jù)之后并不會(huì)馬上把數(shù)據(jù)發(fā)送出去,而是會(huì)將數(shù)據(jù)放在發(fā)送緩沖區(qū),再等待應(yīng)用程序發(fā)送下一條數(shù)據(jù)。

為什么收到數(shù)據(jù)包不會(huì)直接發(fā)送出去,而是放在緩沖區(qū)中呢?

因?yàn)橹灰坏┦盏綌?shù)據(jù)就會(huì)發(fā)送,就有可能發(fā)送大量的小數(shù)據(jù)包,導(dǎo)致網(wǎng)絡(luò)效率下降。所以協(xié)議棧需要將數(shù)據(jù)積攢到一定數(shù)量才能將其發(fā)送出去。至于協(xié)議棧會(huì)向緩沖區(qū)放多少數(shù)據(jù),這個(gè)不同版本和種類的操作系統(tǒng)有不同的說法,不過,所有的操作系統(tǒng)和種類都會(huì)遵循下面這幾個(gè)標(biāo)準(zhǔn):

第一個(gè)判斷要素是每個(gè)網(wǎng)絡(luò)包能夠容納的數(shù)據(jù)長度,判斷的標(biāo)準(zhǔn)是 MTU,它表示的是一個(gè)網(wǎng)絡(luò)包的最大長度。最大長度包含頭部,所以如果單論數(shù)據(jù)區(qū)的話,就會(huì)用 MTU - 包頭長度,由此的出來的最大數(shù)據(jù)長度被稱為 MSS。

另一個(gè)判斷標(biāo)準(zhǔn)是時(shí)間,當(dāng)應(yīng)用程序產(chǎn)生的數(shù)據(jù)比較少,協(xié)議棧向緩沖區(qū)放置數(shù)據(jù)效率不高時(shí),如果每次都等到 MSS 再發(fā)送的話,可能因?yàn)榈却龝r(shí)間太長造成延遲,在這種情況下,即使數(shù)據(jù)長度沒有到達(dá) MSS,也應(yīng)該把數(shù)據(jù)發(fā)送出去。

協(xié)議棧并沒有告訴我們?cè)鯓悠胶膺@兩個(gè)因素,如果數(shù)據(jù)長度優(yōu)先,那么效率有可能比較低;如果時(shí)間優(yōu)先,那又會(huì)降低網(wǎng)絡(luò)的效率。

經(jīng)過了一段時(shí)間。。。。。。

假設(shè)我們使用的是長度有限法則,此時(shí)緩沖區(qū)已滿,協(xié)議棧要發(fā)送數(shù)據(jù)了,協(xié)議棧剛要把數(shù)據(jù)發(fā)送出去,卻發(fā)現(xiàn)無法一次性傳輸這么大數(shù)據(jù)量(相對(duì)的)的數(shù)據(jù),那怎么辦呢?

在這種情況下,發(fā)送緩沖區(qū)中的數(shù)據(jù)就會(huì)超過 MSS 的長度,發(fā)送緩沖區(qū)中的數(shù)據(jù)會(huì)以 MSS 大小為一個(gè)數(shù)據(jù)包進(jìn)行拆分,拆分出來的每塊數(shù)據(jù)都會(huì)加上 TCP,IP,以太網(wǎng)頭部,然后被放進(jìn)單獨(dú)的網(wǎng)絡(luò)包中。

到現(xiàn)在,網(wǎng)絡(luò)包已經(jīng)準(zhǔn)備好發(fā)往服務(wù)器了,但是數(shù)據(jù)發(fā)送操作還沒有結(jié)束,因?yàn)榉?wù)器還未確認(rèn)是否已經(jīng)收到網(wǎng)絡(luò)包。因此在客戶端發(fā)送數(shù)據(jù)包之后,還需要服務(wù)器進(jìn)行確認(rèn)。

TCP 模塊在拆分?jǐn)?shù)據(jù)時(shí),會(huì)計(jì)算出網(wǎng)絡(luò)包偏移量,這個(gè)偏移量就是相對(duì)于數(shù)據(jù)從頭開始計(jì)算的第幾個(gè)字節(jié),并將算好的字節(jié)數(shù)寫在 TCP 頭部,TCP 模塊還會(huì)生成一個(gè)網(wǎng)絡(luò)包的序號(hào)(SYN),這個(gè)序號(hào)是唯一的,這個(gè)序號(hào)就是用來讓服務(wù)器進(jìn)行確認(rèn)的。

服務(wù)器會(huì)對(duì)客戶端發(fā)送過來的數(shù)據(jù)包進(jìn)行確認(rèn),確認(rèn)無誤之后,服務(wù)器會(huì)生成一個(gè)序號(hào)和確認(rèn)號(hào)(ACK)并一起發(fā)送給客戶端,客戶端確認(rèn)之后再發(fā)送確認(rèn)號(hào)給服務(wù)器。

我們來看一下實(shí)際的工作過程。

首先,客戶端在連接時(shí)需要計(jì)算出序號(hào)初始值,并將這個(gè)值發(fā)送給服務(wù)器。接下來,服務(wù)器通過這個(gè)初始值計(jì)算出 確認(rèn)號(hào)并返回給客戶端。初始值在通信過程中有可能會(huì)丟棄,因此當(dāng)服務(wù)器收到初始值后需要返回確認(rèn)號(hào)用于確認(rèn)。同時(shí),服務(wù)器也需要計(jì)算出從服務(wù)器到客戶端方向的序號(hào)初始值,并將這個(gè)值發(fā)送給客戶端。然后,客戶端也需要根據(jù)服務(wù)器發(fā)來的初始值計(jì)算出確認(rèn)號(hào)發(fā)送給服務(wù)器,至此,連接建立完成,接下來就可以進(jìn)入數(shù)據(jù)收發(fā)階段了。

數(shù)據(jù)收發(fā)階段中,通信雙方可以同時(shí)發(fā)送請(qǐng)求和響應(yīng),雙方也可以同時(shí)對(duì)請(qǐng)求進(jìn)行確認(rèn)。

請(qǐng)求 - 確認(rèn)機(jī)制非常強(qiáng)大,通過這一機(jī)制,我們可以確認(rèn)接收方有沒有收到某個(gè)包,如果沒有收到則重新發(fā)送,這樣一來,但凡網(wǎng)絡(luò)中出現(xiàn)的任何錯(cuò)誤,我們都可以即使發(fā)現(xiàn)并補(bǔ)救。

網(wǎng)卡、集線器、路由器都沒有錯(cuò)誤補(bǔ)救機(jī)制,一旦檢測到錯(cuò)誤就會(huì)直接丟棄數(shù)據(jù)包,應(yīng)用程序也沒有這種機(jī)制,起作用的只是 TCP/IP 模塊。

由于網(wǎng)絡(luò)環(huán)境復(fù)雜多變,所以數(shù)據(jù)包會(huì)存在丟失情況,因此發(fā)送序號(hào)和確認(rèn)號(hào)也存在一定規(guī)則,TCP 會(huì)通過窗口管理確認(rèn)號(hào),我們這篇文章不再贅述,大家可以閱讀筆者的這篇文章 TCP 基礎(chǔ)知識(shí) 來尋找答案。

斷開連接

當(dāng)通信雙方不再需要收發(fā)數(shù)據(jù)時(shí),需要斷開連接。不同的應(yīng)用程序斷開連接的時(shí)機(jī)不同。以 Web 為例,瀏覽器向 Web 服務(wù)器發(fā)送請(qǐng)求消息,Web 服務(wù)器再返回響應(yīng)消息,這時(shí)收發(fā)數(shù)據(jù)就全部結(jié)束了,服務(wù)器可能會(huì)首先發(fā)起斷開響應(yīng),當(dāng)然客戶端也有可能會(huì)首先發(fā)起(誰先斷開連接是應(yīng)用程序做出的判斷),與協(xié)議棧無關(guān)。

無論哪一方發(fā)起斷開連接的請(qǐng)求,都會(huì)調(diào)用 Socket 庫的 close 程序。我們以服務(wù)器斷開連接為例,服務(wù)器發(fā)起斷開連接請(qǐng)求,協(xié)議棧會(huì)生成斷開連接的 TCP 頭部,其實(shí)就是設(shè)置 FIN 位,然后委托 IP 模塊向客戶端發(fā)送數(shù)據(jù),與此同時(shí),服務(wù)器的套接字會(huì)記錄下斷開連接的相關(guān)信息。

收到服務(wù)器發(fā)來 FIN 請(qǐng)求后,客戶端協(xié)議棧會(huì)將套接字標(biāo)記為斷開連接狀態(tài),然后,客戶端會(huì)向服務(wù)器返回一個(gè)確認(rèn)號(hào),這是斷開連接的第一步,在這一步之后,應(yīng)用程序還會(huì)調(diào)用 read 來讀取數(shù)據(jù)。等到服務(wù)器數(shù)據(jù)發(fā)送完成后,協(xié)議棧會(huì)通知客戶端應(yīng)用程序數(shù)據(jù)已經(jīng)接收完畢。

只要收到服務(wù)器返回的所有數(shù)據(jù),客戶端就會(huì)調(diào)用 close 程序來結(jié)束收發(fā)操作,這時(shí)客戶端會(huì)生成一個(gè) FIN 發(fā)送給服務(wù)器,一段時(shí)間后服務(wù)器返回 ACK 號(hào),至此,客戶端和服務(wù)器的通信就結(jié)束了。

刪除套接字

通信完成后,用來通信的套接字就不再會(huì)使用了,此時(shí)我們就可以刪除這個(gè)套接字了。不過,這時(shí)候套接字不會(huì)馬上刪除,而是等過一段時(shí)間再刪除。

等待這段時(shí)間是為了防止誤操作,最常見的誤操作就是客戶端返回的確認(rèn)號(hào)丟失,至于等待多長時(shí)間,和數(shù)據(jù)包重傳的方式有關(guān)。

本文轉(zhuǎn)載自微信公眾號(hào)「程序員cxuan」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員cxuan公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 程序員cxuan
相關(guān)推薦

2022-01-26 00:05:00

AOPRPC遠(yuǎn)程調(diào)用

2024-06-03 09:52:08

2015-11-16 13:31:24

大數(shù)據(jù)騙局

2019-05-05 09:24:09

KafkaTopicPartition

2016-02-29 10:52:02

大數(shù)據(jù)數(shù)據(jù)基礎(chǔ)設(shè)施大數(shù)據(jù)應(yīng)用

2021-06-21 09:36:44

微信語音轉(zhuǎn)發(fā)

2022-03-16 12:30:27

云服務(wù)器服務(wù)器

2013-11-28 14:34:30

微軟WP

2016-12-16 19:06:02

擴(kuò)展數(shù)據(jù)庫架構(gòu)

2020-05-28 10:45:31

Git分支合并

2012-05-17 11:04:18

匈牙利命名法

2024-09-25 08:22:06

2015-10-14 09:17:44

大可樂手機(jī)破產(chǎn)

2019-01-02 10:49:54

Tomcat內(nèi)存HotSpot VM

2015-02-11 09:35:09

iPhone6

2021-02-28 13:52:46

程序員編碼技術(shù)

2024-12-06 12:17:31

2022-04-26 18:08:21

C語言代碼編程規(guī)范

2020-03-05 16:47:51

Git內(nèi)部儲(chǔ)存

2017-03-08 13:12:44

編程學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲激情电影中文字幕| 成人妖精视频yjsp地址| 中文亚洲视频在线| www.com久久久| 在线看一级片| 91女人视频在线观看| 国产精品永久免费在线| 麻豆91精品91久久久| 国产a久久精品一区二区三区 | 国产手机在线视频| 成人无号精品一区二区三区| 精品国一区二区三区| 成年网站在线播放| 成人观看网址| 综合久久综合久久| 久久免费看av| 国产高清不卡视频| 三级亚洲高清视频| 九九久久久久久久久激情| 日韩精品无码一区二区三区久久久| 日韩福利在线观看| 欧美天堂在线观看| 国产 欧美 日本| 91吃瓜网在线观看| www.色精品| 成人自拍性视频| 亚洲天堂视频在线播放| 亚洲免费播放| 九九热这里只有精品免费看| avhd101老司机| 美日韩中文字幕| 亚洲国产精品一区二区久| 日本高清免费在线视频| 日韩欧美精品一区二区综合视频| 亚洲v日本v欧美v久久精品| 欧洲美女和动交zoz0z| 成年人在线看| 久久这里只精品最新地址| 古典武侠综合av第一页| 国产精品系列视频| 麻豆国产精品视频| 国产精品久久久久久久久久久不卡 | 国产精品电影一区二区| 欧洲精品一区色| 五月天久久久久久| 成人爱爱电影网址| 国产99视频精品免费视频36| 国产白浆在线观看| 国内不卡的二区三区中文字幕 | 欧美国产欧美亚州国产日韩mv天天看完整| 国产欧美一区二区在线播放| 亚洲国产精品suv| 国产精品自在在线| 91在线视频免费| 国产精品玖玖玖| 狠狠色丁香久久婷婷综合_中 | 人人狠狠综合久久亚洲| 欧美国产日本在线| 日韩a级片在线观看| 日韩精品影视| 色噜噜亚洲精品中文字幕| 五月天婷婷丁香网| 久久中文亚洲字幕| 精品久久国产精品| 日韩一区二区三区四区在线| 欧美aa国产视频| 欧美激情精品久久久久久黑人| 欧美黄色aaa| 亚洲最新av| 欧美激情2020午夜免费观看| 国产一级免费观看| 国产一级久久| 国产精品观看在线亚洲人成网| 中文字幕 日韩有码| 久久精品国产一区二区三| 91亚洲精品一区二区| 国内精品国产成人国产三级| 丁香婷婷综合五月| 久久精品第九区免费观看| 视频一区二区三区在线看免费看| 国产欧美日韩麻豆91| 亚洲一卡二卡| 视频在线这里都是精品| 激情成人中文字幕| 五月婷婷深爱五月| 中文幕av一区二区三区佐山爱| 欧美一区二区三区四区五区| 欧美熟妇精品一区二区蜜桃视频| 亚洲欧美成人vr| 最近日韩中文字幕中文| 久久久久亚洲av片无码下载蜜桃| 99在线|亚洲一区二区| 国产精品成人免费视频| 国产男女裸体做爰爽爽| 不卡视频一二三四| 无码免费一区二区三区免费播放 | 91小视频网站| heyzo欧美激情| 中文字幕日韩电影| 欧美日韩激情在线观看| 久久一区精品| av一区二区三区四区电影| 激情小视频在线观看| 亚洲精品欧美在线| 日韩一级片播放| 一本一道久久a久久| 一本色道久久88精品综合| 欧美成人免费观看视频| 玖玖精品视频| 国产福利久久| 欧洲日本在线| 日本乱人伦aⅴ精品| 色悠悠在线视频| 欧美gayvideo| 日韩免费在线视频| www黄色在线观看| 国产精品久久久久久久裸模| www.日本在线播放| www久久久| 正在播放亚洲1区| 一级免费在线观看| 狠狠狠色丁香婷婷综合久久五月| 日本一区视频在线观看免费| 99在线视频影院| 91精品麻豆日日躁夜夜躁| 亚洲久久久久久久| 亚洲免费播放| 国产一区二区三区无遮挡| 成人在线观看免费网站| 欧美色图一区二区三区| 免费看污片网站| 日韩午夜av在线| 高清不卡日本v二区在线| caoporm免费视频在线| 欧美日韩日本视频| 欧美人与性囗牲恔配| 毛片一区二区| 蜜桃麻豆www久久国产精品| a级片在线免费| 日韩免费看网站| 欧美卡一卡二卡三| 国产乱人伦偷精品视频不卡 | 欧美性大战久久| 国产精品无码久久久久一区二区| 在线亚洲精品| 免费99视频| 26uuu亚洲电影| 亚洲精品影视在线观看| 日韩特级黄色片| 91丝袜高跟美女视频| 91成人在线观看喷潮教学| 欧美变态挠脚心| 8050国产精品久久久久久| 午夜小视频在线播放| 午夜欧美视频在线观看| 三级电影在线看| 美女诱惑一区| 亚洲 日韩 国产第一区| 国产精品亲子伦av一区二区三区| 日韩专区在线观看| 一级黄色a毛片| 日韩毛片在线免费观看| 一级黄色免费毛片| 韩国一区二区三区在线观看| 国产精品有限公司| 亚洲男人av| 在线看日韩欧美| 97人妻一区二区精品免费视频| 亚洲人亚洲人成电影网站色| 欧美图片自拍偷拍| 亚洲综合二区| 亚洲国产精品一区二区第一页| 精品美女一区| 色中色综合影院手机版在线观看| 手机av免费在线观看| 亚洲综合偷拍欧美一区色| 欧美一区二区免费在线观看| 日韩精品亚洲专区| 久久免费视频2| 国产精品毛片视频| 国产97在线播放| 免费大片在线观看www| 精品国产乱码久久久久久免费| 男女视频免费看| 国产精品素人视频| 国产在线a视频| 日日噜噜夜夜狠狠视频欧美人| 一卡二卡3卡四卡高清精品视频| 最新国产一区二区| 国产成人精品视频在线| 五月婷婷视频在线观看| 亚洲欧洲日产国码av系列天堂| 国产精品久久久久久久成人午夜| 亚洲国产综合91精品麻豆 | 亚洲人成精品久久久久久| 亚洲香蕉中文网| 久久精品国产网站| 国产白丝袜美女久久久久| 日韩影院二区| 久草一区二区| 久久影院一区二区三区| 青青草99啪国产免费| av网站免费在线观看| 日韩精品有码在线观看| 国产日韩在线观看一区| 色噜噜狠狠成人中文综合| 日本天堂中文字幕| 欧美激情综合五月色丁香| 不许穿内裤随时挨c调教h苏绵| 日本大胆欧美人术艺术动态| 一卡二卡三卡视频| 国产精品精品| 欧美一区二区三区在线免费观看| 99久热在线精品视频观看| 啪一啪鲁一鲁2019在线视频| 91精品久久久久久粉嫩| 伊人av综合网| 免费人成在线观看网站| 精品粉嫩aⅴ一区二区三区四区| 97人人爽人人爽人人爽| 欧美性色黄大片手机版| 中文字幕国产在线观看| 亚洲国产sm捆绑调教视频 | 高跟丝袜欧美一区| 久久精品波多野结衣| 国产精品的网站| 久久婷婷五月综合| 91蝌蚪国产九色| www男人天堂| 国产999精品久久| 伊人精品视频在线观看| 精品一区二区三区欧美| 三级视频中文字幕| 日本伊人色综合网| 久久久久久久片| 一本一本久久| 欧美大片在线播放| 亚洲乱亚洲高清| 一二三四视频社区在线| 精品69视频一区二区三区Q| 777久久精品一区二区三区无码| 亚洲91精品| 992tv成人免费观看| 午夜影院欧美| 欧美在线观看视频在线| 久久久久亚洲av无码网站| 国产麻豆精品theporn| 6080国产精品| 国产美女主播视频一区| 国产不卡的av| 国产成人午夜视频| 国产人妻精品午夜福利免费| 国产91精品入口| 欧美夫妇交换xxx| 91亚洲精品久久久蜜桃| 蜜桃精品一区二区| 国产午夜精品一区二区三区四区 | 国产精品情趣视频| 亚洲不卡的av| 亚洲人123区| 欧美成人三级视频| 精品露脸国产偷人在视频| 久久99精品波多结衣一区| 色婷婷av久久久久久久| 怡红院男人的天堂| 日韩欧美一区在线| 色窝窝无码一区二区三区成人网站| 亚洲精品www| porn亚洲| 久久99视频免费| 国产网站在线| 国产精品露脸av在线| 先锋影音网一区二区| 97超碰在线播放| 久久亚州av| 色播亚洲视频在线观看| 亚洲破处大片| 免费一级特黄毛片| 三级欧美在线一区| 免费高清视频在线观看| 成人av在线一区二区三区| 国产精品毛片一区二区| 综合久久给合久久狠狠狠97色| 久久国产免费观看| 在线欧美日韩国产| av网站在线免费看| 日韩精品在线看| 日本中文在线| 97视频在线观看视频免费视频 | 精品美女一区二区| 可以直接在线观看的av| 美日韩精品免费观看视频| 日本不卡免费高清视频在线| 国产欧美久久久久久| 免费福利视频一区| 三级网在线观看| 久久xxxx| 农村末发育av片一区二区| 国产亚洲成aⅴ人片在线观看 | 丰满少妇一区二区三区| 国产精品久久久久久久久图文区| 中文在线观看免费网站| 欧美日韩综合一区| 香蕉视频黄在线观看| 久久艹在线视频| 亚洲mmav| 久久国产精品 国产精品| 国产精品精品| 成人性生生活性生交12| kk眼镜猥琐国模调教系列一区二区| 911国产在线| 色美美综合视频| 熟妇高潮一区二区三区| 美女福利精品视频| 国产精品无码久久久久| 欧美一区二区三区精美影视 | 久久超碰99| 男人的天堂狠狠干| 国产激情一区二区三区四区 | 亚洲午夜精品17c| 国产又粗又黄又爽视频| 国产一区二区免费| 亚洲国产福利| 精品日产一区2区三区黄免费| 欧美成人一品| theporn国产精品| 欧美精彩视频一区二区三区| 日本一区二区三区精品| 亚洲精品wwwww| 国产传媒在线| 国产伦精品一区二区三区照片91| 欧美阿v一级看视频| 精品国产鲁一鲁一区二区三区| 国产精品水嫩水嫩| 最近中文在线观看| 亚洲系列中文字幕| 成人免费网站www网站高清| 日韩av一级大片| 免费在线成人网| 亚洲最大成人综合网| 在线免费亚洲电影| 成人亚洲综合天堂| 国产精品久久久久aaaa九色| 欧美欧美黄在线二区| 粗暴91大变态调教| 国产欧美久久久精品影院| 中文字幕一区二区人妻视频| 亚洲小视频在线观看| 日本欧美韩国| 欧美h视频在线观看| 国产自产高清不卡| 日本a级片视频| 欧美不卡在线视频| 超碰成人av| 日本一区二区三区www| 青娱乐精品视频在线| 国产一区第一页| 日韩一级视频免费观看在线| 丰满诱人av在线播放| 狠狠干一区二区| 免费看的黄色欧美网站| 三年中国中文观看免费播放| 欧美日韩欧美一区二区| 1024在线播放| 国产专区一区二区三区| 久久一综合视频| 一区二区三区在线播放视频| 91精品福利在线一区二区三区 | 九色蝌蚪在线| 国产日韩av高清| 欧美日本免费| 30一40一50老女人毛片| 欧美亚男人的天堂| 国产在线激情| 狠狠爱一区二区三区| 日韩av一级片| 2021亚洲天堂| 亚洲欧洲在线视频| 日韩成人免费av| 国产96在线 | 亚洲| 国产精品欧美经典| 亚洲美女福利视频| 日韩美女写真福利在线观看| 欧美大片aaaa| 亚洲中文字幕无码av| 91福利小视频| 欧美草逼视频| 日本精品一区二区三区视频| 国产精品一卡二卡在线观看| 91video| 久久成人18免费网站| 欧美巨大xxxx| 污污视频在线免费| 色婷婷综合久久久久中文| 很黄的网站在线观看| 欧美精品亚洲| 国产精品白丝av| 久久久999久久久| 午夜精品一区二区三区在线视频 | 精品国产影院|