青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

loop_in_codes

低調(diào)做技術(shù)__歡迎移步我的獨(dú)立博客 codemaro.com 微博 kevinlynx

tcp要點(diǎn)學(xué)習(xí)-建立連接

Author : Kevin Lynx

準(zhǔn)備:

在這里本文將遵循上一篇文章的風(fēng)格,只提TCP協(xié)議中的要點(diǎn),這樣我覺得可以更容易地掌握TCP。或者
根本談不上掌握,對于這種純理論的東西,即使你現(xiàn)在掌握了再多的細(xì)節(jié),一段時(shí)間后也會(huì)淡忘。

在以后各種細(xì)節(jié)中,因?yàn)槲覀儠?huì)涉及到分析一些TCP中的數(shù)據(jù)報(bào),因此一個(gè)協(xié)議包截獲工具必不可少。在
<TCP/IP詳解>中一直使用tcpdump。這里因?yàn)槲业南到y(tǒng)是windows,所以只好使用windows平臺(tái)的tcpdump,
也就是WinDump。在使用WinDump之前,你需要安裝該程序使用的庫WinpCap。

關(guān)于WinDump的具體用法你可以從網(wǎng)上其他地方獲取,這里我只稍微提一下。要讓W(xué)inDump開始監(jiān)聽數(shù)據(jù),
首先需要確定讓其監(jiān)聽哪一個(gè)網(wǎng)絡(luò)設(shè)備(或者說是網(wǎng)絡(luò)接口)。你可以:

 

windump -D

 

獲取當(dāng)前機(jī)器上的網(wǎng)絡(luò)接口。然后使用:

 

windump -i 2 

 

開始對網(wǎng)絡(luò)接口2的數(shù)據(jù)監(jiān)聽。windump如同tcpdump(其實(shí)就是tcpdump)一樣支持過濾表達(dá)式,windump
將會(huì)根據(jù)你提供的過濾表達(dá)式過濾不需要的網(wǎng)絡(luò)數(shù)據(jù)包,例如:

 

windump -i 2 port 4000 

 

那么windump只會(huì)顯示端口號為4000的網(wǎng)絡(luò)數(shù)據(jù)。

序號和確認(rèn)號:

要講解TCP的建立過程,也就是那個(gè)所謂的三次握手,就會(huì)涉及到序號和確認(rèn)號這兩個(gè)東西。翻書到TCP
的報(bào)文頭,有兩個(gè)很重要的域(都是32位)就是序號域和確認(rèn)號域??赡苡行┩瑢W(xué)會(huì)對TCP那個(gè)報(bào)文頭有所
疑惑(能看懂我在講什么的會(huì)產(chǎn)生這樣的疑惑么?),這里我可以告訴你,你可以假想TCP的報(bào)文頭就是個(gè)
C語言結(jié)構(gòu)體(假想而已,去翻翻bsd對TCP的實(shí)現(xiàn),肯定沒這么簡單),那么大致上,所謂的TCP報(bào)文頭就是:

typedef struct _tcp_header
{
   
/// 16位源端口號
    unsigned short src_port;
   
/// 16位目的端口號
    unsigned short dst_port;
   
/// 32位序號
    unsigned long seq_num;
   
/// 32位確認(rèn)號
    unsigned long ack_num;
   
/// 16位標(biāo)志位[4位首部長度,保留6位,ACK、SYN之類的標(biāo)志位]
    unsigned short flag;
   
/// 16位窗口大小
    unsigned short win_size;
   
/// 16位校驗(yàn)和
    short crc_sum;
   
/// 16位緊急指針
    short ptr;
   
/// 可選選項(xiàng)
   
/// how to implement this ?   

}
tcp_header;


那么,這個(gè)序號和確認(rèn)號是什么?TCP報(bào)文為每一個(gè)字節(jié)都設(shè)置一個(gè)序號,覺得很奇怪?這里并不是為每一
字節(jié)附加一個(gè)序號(那會(huì)是多么可笑的編程手法?),而是為一個(gè)TCP報(bào)文附加一個(gè)序號,這個(gè)序號表示報(bào)文
中數(shù)據(jù)的第一個(gè)字節(jié)的序號,而其他數(shù)據(jù)則是根據(jù)離第一個(gè)數(shù)據(jù)的偏移來決定序號的,例如,現(xiàn)在有數(shù)據(jù):
abcd。如果這段數(shù)據(jù)的序號為1200,那么a的序號就是1200,b的序號就是1201。而TCP發(fā)送的下一個(gè)數(shù)據(jù)包
的序號就會(huì)是上一個(gè)數(shù)據(jù)包最后一個(gè)字節(jié)的序號加一。例如efghi是abcd的下一個(gè)數(shù)據(jù)包,那么它的序號就
是1204。通過這種看似簡單的方法,TCP就實(shí)現(xiàn)了為每一個(gè)字節(jié)設(shè)置序號的功能(終于明白為什么書上要告訴
我們‘為每一個(gè)字節(jié)設(shè)置一個(gè)序號’了吧?)。注意,設(shè)置序號是一種可以讓TCP成為’可靠協(xié)議‘的手段。
TCP中各種亂七八糟的東西都是有目的的,大部分目的還是為了’可靠‘兩個(gè)字。別把TCP看高深了,如果
讓你來設(shè)計(jì)一個(gè)網(wǎng)絡(luò)協(xié)議,目的需要告訴你是’可靠的‘,你就會(huì)明白為什么會(huì)產(chǎn)生那些亂七八糟的東西了。

接著看,確認(rèn)號是什么?因?yàn)門CP會(huì)對接收到的數(shù)據(jù)包進(jìn)行確認(rèn),發(fā)送確認(rèn)數(shù)據(jù)包時(shí),就會(huì)設(shè)置這個(gè)確認(rèn)號,
確認(rèn)號通常表示接收方希望接收到的下一段報(bào)文的序號。例如某一次接收方收到序號為1200的4字節(jié)數(shù)舉報(bào),
那么它發(fā)送確認(rèn)報(bào)文給發(fā)送方時(shí),就會(huì)設(shè)置確認(rèn)號為1204。

大部分書上在講確認(rèn)號和序號時(shí),都會(huì)說確認(rèn)號是序號加一。這其實(shí)有點(diǎn)誤解人,所以我才在這里廢話了
半天(高手寬容下:D)。

開始三次握手:

如果你還不會(huì)簡單的tcp socket編程,我建議你先去學(xué)學(xué),這就好比你不會(huì)C++基本語法,就別去研究vtable
之類。

三次握手開始于客戶端試圖連接服務(wù)器端。當(dāng)你調(diào)用諸如connect的函數(shù)時(shí),正常情況下就會(huì)開始三次握手。
隨便在網(wǎng)上找張三次握手的圖:

connection

如前文所述,三次握手也就是產(chǎn)生了三個(gè)數(shù)據(jù)包??蛻舳酥鲃?dòng)連接,發(fā)送SYN被設(shè)置了的報(bào)文(注意序號和
確認(rèn)號,因?yàn)檫@里不包含用戶數(shù)據(jù),所以序號和確認(rèn)號就是加一減一的關(guān)系)。服務(wù)器端收到該報(bào)文時(shí),正
常情況下就發(fā)送SYN和ACK被設(shè)置了的報(bào)文作為確認(rèn),以及告訴客戶端:我想打開我這邊的連接(雙工)。客戶
端于是再對服務(wù)器端的SYN進(jìn)行確認(rèn),于是再發(fā)送ACK報(bào)文。然后連接建立完畢。對于阻塞式socket而言,你
的connect可能就返回成功給你。

在進(jìn)行了鋪天蓋地的羅利巴索的基礎(chǔ)概念的講解后,看看這個(gè)連接建立的過程,是不是簡單得幾近無聊?

我們來實(shí)際點(diǎn),寫個(gè)最簡單的客戶端代碼:

   sockaddr_in addr;
    memset(
&addr, 0, sizeof( addr ) );
    addr.sin_family
= AF_INET;
    addr.sin_port
= htons( 80 );
   
/// 220.181.37.55
    addr.sin_addr.s_addr = inet_addr( "220.181.37.55" );
    printf(
"%s : connecting to server.\n", _str_time() );
   
int err = connect( s, (sockaddr*) &addr, sizeof( addr ) );

 
主要就是connect。運(yùn)行程序前我們運(yùn)行windump:

 

windump -i 2 host 220.181.37.55 

 

00:38:22.979229 IP noname.domain.4397 > 220.181.37.55.80: S 2523219966:2523219966(0) win 65535 <mss 1460,nop,nop,sackOK>
00:38:23.024254 IP 220.181.37.55.80 > noname.domain.4397: S 1277008647:1277008647(0) ack 2523219967 win 2920 <mss 1440,nop,nop,sackOK>
00:38:23.024338 IP noname.domain.4397 > 220.181.37.55.80: . ack 1 win 65535 

 

如何分析windump的結(jié)果,建議參看<tcp/ip詳解>中對于tcpdump的描述。

建立連接的附加信息:

雖然SYN、ACK之類的報(bào)文沒有用戶數(shù)據(jù),但是TCP還是附加了其他信息。最為重要的就是附加的MSS值。這個(gè)
可以被協(xié)商的MSS值基本上就只在建立連接時(shí)協(xié)商。如以上數(shù)據(jù)表示,MSS為1460字節(jié)。

連接的意外:

連接的意外我大致分為兩種情況(也許還有更多情況):目的主機(jī)不可達(dá)、目的主機(jī)并沒有在指定端口監(jiān)聽。
當(dāng)目的主機(jī)不可達(dá)時(shí),也就是說,SYN報(bào)文段根本無法到達(dá)對方(如果你的機(jī)器根本沒插網(wǎng)線,你就不可達(dá)),
那么TCP收不到任何回復(fù)報(bào)文。這個(gè)時(shí)候,你會(huì)看到TCP中的定時(shí)器機(jī)制出現(xiàn)了。TCP對發(fā)出的SYN報(bào)文進(jìn)行
計(jì)時(shí),當(dāng)在指定時(shí)間內(nèi)沒有得到回復(fù)報(bào)文時(shí),TCP就會(huì)重傳剛才的SYN報(bào)文。通常,各種不同的TCP實(shí)現(xiàn)對于
這個(gè)超時(shí)值都不同,但是據(jù)我觀察,重傳次數(shù)基本上都是3次。例如,我連接一個(gè)不可達(dá)的主機(jī):

 

12:39:50.560690 IP cd-zhangmin.1573 > 220.181.37.55.1024: S 3117975575:3117975575(0) win 65535 <mss 1460,nop,nop,sackOK>
12:39:53.538734 IP cd-zhangmin.1573 > 220.181.37.55.1024: S 3117975575:3117975575(0) win 65535 <mss 1460,nop,nop,sackOK>
12:39:59.663726 IP cd-zhangmin.1573 > 220.181.37.55.1024: S 3117975575:3117975575(0) win 65535 <mss 1460,nop,nop,sackOK>

 

發(fā)出了三個(gè)序號一樣的SYN報(bào)文,但是沒有得到一個(gè)回復(fù)報(bào)文(廢話)。每一個(gè)SYN報(bào)文之間的間隔時(shí)間都是
有規(guī)律的,在windows上是3秒6秒9秒12秒。上面的數(shù)據(jù)你看不到12秒這個(gè)數(shù)據(jù),因?yàn)檫@是第三個(gè)報(bào)文發(fā)出的
時(shí)間和connect返回錯(cuò)誤信息時(shí)的時(shí)間之差。另一方面,如果連接同一個(gè)網(wǎng)絡(luò),這個(gè)間隔時(shí)間又不同。例如
直接連局域網(wǎng),間隔時(shí)間就差不多為500ms。

(我強(qiáng)烈建議你能運(yùn)行windump去試驗(yàn)這里提到的每一個(gè)現(xiàn)象,如果你在ubuntu下使用tcpdump,記住sudo :D)

出現(xiàn)意外的第二種情況是如果主機(jī)數(shù)據(jù)包可達(dá),但是試圖連接的端口根本沒有監(jiān)聽,那么發(fā)送SYN報(bào)文的這
方會(huì)收到RST被設(shè)置的報(bào)文(connect也會(huì)返回相應(yīng)的信息給你),例如:

 

13:37:22.202532 IP cd-zhangmin.1658 > 7AURORA-CCTEST.7100: S 2417354281:2417354281(0) win 65535 <mss 1460,nop,nop,sackOK>
13:37:22.202627 IP 7AURORA-CCTEST.7100 > cd-zhangmin.1658: R 0:0(0) ack 2417354282 win 0
13:37:22.711415 IP cd-zhangmin.1658 > 7AURORA-CCTEST.7100: S 2417354281:2417354281(0) win 65535 <mss 1460,nop,nop,sackOK>
13:37:22.711498 IP 7AURORA-CCTEST.7100 > cd-zhangmin.1658: R 0:0(0) ack 1 win 0
13:37:23.367733 IP cd-zhangmin.1658 > 7AURORA-CCTEST.7100: S 2417354281:2417354281(0) win 65535 <mss 1460,nop,nop,sackOK>
13:37:23.367826 IP 7AURORA-CCTEST.7100 > cd-zhangmin.1658: R 0:0(0) ack 1 win 0 

 

可以看出,7AURORA-CCTEST.7100返回了RST報(bào)文給我,但是我這邊根本不在乎這個(gè)報(bào)文,繼續(xù)發(fā)送SYN報(bào)文。
三次過后connect就返回了。(數(shù)據(jù)反映的事實(shí)是這樣)

關(guān)于listen:

TCP服務(wù)器端會(huì)維護(hù)一個(gè)新連接的隊(duì)列。當(dāng)新連接上的客戶端三次握手完成時(shí),就會(huì)將其放入這個(gè)隊(duì)列。這個(gè)隊(duì)

列的大小是通過listen設(shè)置的。當(dāng)這個(gè)隊(duì)列滿時(shí),如果有新的客戶端試圖連接(發(fā)送SYN),服務(wù)器端丟棄報(bào)文,

同時(shí)不做任何回復(fù)。

總結(jié):
TCP連接的建立的相關(guān)要點(diǎn)就是這些(or more?)。正常情況下就是三次握手,非正常情況下就是SYN三次超時(shí),
以及收到RST報(bào)文卻被忽略。

posted on 2008-05-11 01:03 Kevin Lynx 閱讀(3720) 評論(10)  編輯 收藏 引用 所屬分類: game developnetwork

評論

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2008-05-11 02:40 Fox

看來,這一塊的東西,我又可以偷偷懶,直接請教你了;)  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2008-05-15 17:34 買書網(wǎng)

TCP協(xié)議中的要點(diǎn)寫的很好  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2008-05-16 09:25

寫的很通俗易懂。
  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接[未登錄] 2008-09-03 22:21 thinkinnight

文章寫得很好,看了之后我就自己想試了一下。結(jié)果發(fā)現(xiàn)自己編寫的服務(wù)器、客戶端在三次握手后,由客戶端又向服務(wù)器發(fā)送了一個(gè)RST ACK,不知道是為什么。

服務(wù)器端并沒有使用while循環(huán),而只是一次的accept。我想原因可能在這里,但是具體的還是不清楚如何出的問題。能交流一下嗎?謝謝  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2008-09-04 13:54 Kevin Lynx

@thinkinnight
發(fā)送RST通常都是因?yàn)楫惓M顺鰧?dǎo)致的。可能你沒有正常關(guān)閉。  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接[未登錄] 2008-09-04 16:01 thinkinnight

Kevin Lynx你好, 關(guān)鍵是我不知道問題是出在哪里.程序是最簡單的client和server, 為winsock, 代碼的主要部分如下(去掉wsastartup和wsacleanup,其余socket相關(guān)代碼均在下方,沒有寫close):

[server]

sockaddr_in server;
SOCKET s = socket(AF_INET, SOCK_STREAM, NULL);

server.sin_family = AF_INET;
server.sin_port = htons(5001);
server.sin_addr.S_un.S_addr = INADDR_ANY;

int _err = bind(s,(sockaddr *)&server, sizeof(server));
_err = listen(s,5);
SOCKET forclient = accept(s, (sockaddr *)NULL, NULL);


[client]

sockaddr_in client;
memset(&client,0,sizeof(client));

client.sin_family = AF_INET;
client.sin_port = htons(5001);
client.sin_addr.S_un.S_addr = inet_addr("192.168.0.2");

SOCKET s = socket(AF_INET,SOCK_STREAM,NULL);
int _err=connect(s, (sockaddr *)&client, sizeof(sockaddr));

windump結(jié)果(處理了一下,將ip隱藏了)
windump: listening on \Device\xxx_{xxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxx}
15:53:20.162579 IP client.36519 > server.5001: S 36061147:360611
47(0) win 65535 <mss 1460,nop,nop,sackOK>
15:53:20.163065 IP server.5001 > client.36519: S 808783039:80878
3039(0) ack 36061148 win 65535 <mss 1460,nop,nop,sackOK>
15:53:20.163110 IP client.36519 > server.5001: . ack 1 win 65535

15:53:20.163243 IP client.36519 > server.5001: R 1:1(0) ack 1 wi
n 0

4 packets captured
26 packets received by filter
0 packets dropped by kernel

就是最后會(huì)有一個(gè)RST, ACK, 對這個(gè)不明白是為什么.
也不應(yīng)該是半開端口吧.  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接[未登錄] 2008-09-04 16:41 thinkinnight

windump是只監(jiān)聽到server 5001端口的通信,其他都被過濾掉了,有用的信息就這四條.  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2008-09-05 09:30 Kevin Lynx

加上正常關(guān)閉closesocket之類,在程序未退出前不要ctrl+c強(qiáng)制退出。你試下這些。我做實(shí)驗(yàn)也是在WIN平臺(tái)下。  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接[未登錄] 2008-09-06 21:34 thinkinnight

我試了一下,加上closesocket還是一樣的結(jié)果,而且關(guān)鍵我覺得不是得到正確的序列,而是內(nèi)部到底發(fā)生了什么造成這種結(jié)果。
剛看了TCP/IP卷一中對RST的描述,一共有三種情況:
1. 到不存在的端口的連接請求
2. 異常終止一個(gè)連接
3. 半打開連接

第一種情況下,應(yīng)該是服務(wù)器向客戶端發(fā)送RST。告知該端口不存在。
第二種情況,按照書上面的說法,需要置SO_LINGER,這樣使得連接關(guān)閉時(shí)進(jìn)行復(fù)位而不是正常的FIN,但是程序中并沒有這樣。可是現(xiàn)象倒是很符合。
第三種情況,書上也是接受方以RST作為應(yīng)答,那現(xiàn)在也沒有數(shù)據(jù)交互,而是直接出現(xiàn)RST,也不像。

所以只是想研究一下這種情況的原理、過程。
至于正常的情況,能做出來肯定是很好,不然反正書上那些內(nèi)容也知道了,關(guān)鍵還是使用嘛,所以就是想對真實(shí)的現(xiàn)象有一些了解,我都懷疑是不是漏包了。。。但是看來看去,也只有這些
  回復(fù)  更多評論   

# re: tcp要點(diǎn)學(xué)習(xí)-建立連接 2010-02-11 10:03 tcpcoder

so good  回復(fù)  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情视频在线播放| 亚洲欧洲一区二区三区在线观看| 国产欧美日韩不卡| 欧美日韩国产一中文字不卡 | 午夜视频一区在线观看| 亚洲日本乱码在线观看| 亚洲经典三级| av成人激情| 亚洲午夜精品福利| 久久精品成人欧美大片古装| 亚洲综合色在线| 欧美伊人久久| 久久综合伊人77777尤物| 久久最新视频| 欧美日韩久久不卡| 国产日韩精品一区二区三区| 国产日韩一区| 亚洲免费高清视频| 午夜精品久久| 麻豆精品在线观看| 亚洲三级视频在线观看| 亚洲一区视频| 卡一卡二国产精品| 国产精品久线观看视频| 在线欧美视频| 亚洲在线观看| 欧美大学生性色视频| 一区二区国产日产| 久久精品视频在线| 欧美午夜视频在线| 黄色成人在线免费| 亚洲伊人久久综合| 欧美国产日韩xxxxx| 亚洲在线日韩| 欧美日韩成人一区| 一区在线影院| 久久精品成人| 在线国产亚洲欧美| 午夜精品免费在线| 亚洲精品一区二区三区婷婷月 | 老司机午夜精品| 一本久久综合亚洲鲁鲁| 久久综合99re88久久爱| 欧美体内谢she精2性欧美| 亚洲国产精品成人精品| 欧美在线免费播放| 中国女人久久久| 欧美mv日韩mv国产网站app| 国产老肥熟一区二区三区| 亚洲国产精品电影在线观看| 欧美在线一级视频| 亚洲午夜激情在线| 欧美日韩不卡一区| 一道本一区二区| 欧美国产在线电影| 欧美一区二区免费| 国产欧美日韩在线视频| 午夜国产精品影院在线观看 | 一区二区av在线| 欧美精品久久久久a| 亚洲国产成人av在线| 另类av一区二区| 久久久久久久一区二区三区| 国产欧美69| 欧美中文字幕在线| 午夜精品福利在线观看| 欧美色网在线| 亚洲欧美国产va在线影院| 99精品国产在热久久| 欧美激情二区三区| 一区二区三区视频观看| 亚洲精品综合精品自拍| 欧美日韩免费一区二区三区视频| 99天天综合性| 一区二区久久久久久| 国产精品va| 久久国产福利国产秒拍| 久久久久久久一区二区| 亚洲国产三级网| 最新国产拍偷乱拍精品| 欧美日韩专区在线| 欧美一区观看| 久久久久久久一区| 日韩视频不卡| 99精品视频免费在线观看| 国产精品福利网| 久久一区国产| 欧美精品久久久久久久免费观看| 一区二区三区.www| 亚洲尤物影院| 樱花yy私人影院亚洲| 亚洲激情精品| 国产欧美在线视频| 亚洲大片免费看| 国产精品视频精品| 极品少妇一区二区三区| 欧美丰满少妇xxxbbb| 欧美日韩视频在线一区二区| 午夜在线视频一区二区区别| 久久精品国产亚洲一区二区| 亚洲国产中文字幕在线观看| 一区二区三区福利| 亚洲福利国产| 亚洲尤物精选| 日韩一二三区视频| 欧美一区午夜视频在线观看| 亚洲人成小说网站色在线| 亚洲天堂av电影| 亚洲精品一二三| 久久激情综合网| 亚洲一区二区三区国产| 久久久久国产成人精品亚洲午夜| 日韩一级视频免费观看在线| 亚洲欧美一级二级三级| 一本色道久久综合亚洲精品按摩| 欧美一级大片在线免费观看| 99国产精品久久久久久久成人热| 午夜精品福利一区二区三区av| 亚洲精品乱码视频| 久久成人免费电影| 午夜精品久久久久影视| 欧美电影免费观看| 久久综合中文| 国产亚洲成av人在线观看导航| av成人免费观看| 99xxxx成人网| 欧美成人一区二区三区在线观看| 久久精品国产在热久久| 国产精品久久波多野结衣| 亚洲国产黄色片| 伊人春色精品| 久久久久久久97| 久久国产精品高清| 国产麻豆日韩欧美久久| 亚洲午夜小视频| 亚洲欧美在线一区| 欧美日韩一区二区三区在线观看免| 欧美激情精品久久久久久免费印度| 国产午夜亚洲精品理论片色戒| 亚洲网友自拍| 午夜精品视频网站| 国产欧美日韩视频| 久久se精品一区二区| 久久一区中文字幕| 在线激情影院一区| 欧美刺激午夜性久久久久久久| 欧美电影专区| 99re6热只有精品免费观看| 欧美精品18| 9人人澡人人爽人人精品| 亚洲影院一区| 国产深夜精品福利| 久久成年人视频| 欧美成人资源网| 日韩视频精品| 国产精品成人一区二区网站软件| 一区二区三区国产在线观看| 亚洲欧美国产日韩中文字幕| 国产精品理论片| 欧美一区国产一区| 欧美超级免费视 在线| 亚洲青涩在线| 欧美亚一区二区| 久久久青草青青国产亚洲免观| 国产亚洲欧洲| 欧美a级片网站| 99在线|亚洲一区二区| 欧美一区二区三区在线播放| 国产日韩欧美亚洲一区| 久久亚洲私人国产精品va媚药| 欧美激情一区三区| 午夜视频精品| 亚洲电影第1页| 国产精品v日韩精品v欧美精品网站 | 一区二区三区在线免费播放| 你懂的成人av| 一区二区三区日韩欧美精品| 欧美一区二区免费视频| 亚洲激情精品| 国产日韩精品一区二区三区在线 | 欧美性理论片在线观看片免费| 亚洲欧美日韩一区二区三区在线观看| 久久久99国产精品免费| 亚洲三级色网| 国产美女精品视频| 欧美国产综合视频| 久久电影一区| 在线视频亚洲一区| 欧美大片一区二区三区| 香蕉久久夜色精品国产使用方法| 伊人久久久大香线蕉综合直播 | 久久精品99国产精品酒店日本| 亚洲人成免费| 久久综合五月| 欧美在线影院在线视频| 99国产精品| 日韩视频―中文字幕| 国产综合久久久久久| 国产精品久久久久久妇女6080| 欧美激情精品久久久久久大尺度|