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

我發現書上寫錯啦!

網絡 無線技術
在 TCP 正常揮手過程中,處于 TIME_WAIT 狀態的連接,收到相同四元組的 SYN 后會發生什么?

周末跟朋友討論了一些 TCP 的問題,在查閱《Linux 服務器高性能編程》這本書的時候,發現書上寫了這么一句話:

書上說,處于 TIME_WAIT 狀態的連接,在收到相同四元組的 SYN 后,會回 RST 報文,對方收到后就會斷開連接。

書中作者只是提了這么一句話,沒有給予源碼或者抓包圖的證據。

起初,我看到也覺得這個邏輯也挺符合常理的,但是當我自己去啃了 TCP 源碼后,發現并不是這樣的。

所以,今天就來討論下這個問題,「在 TCP 正常揮手過程中,處于 TIME_WAIT 狀態的連接,收到相同四元組的 SYN 后會發生什么?」

問題現象如下圖,左邊是服務端,右邊是客戶端:

先說結論

在跟大家分析 TCP 源碼前,我先跟大家直接說下結論。

針對這個問題,關鍵是要看 SYN 的「序列號和時間戳」是否合法,因為處于 TIME_WAIT 狀態的連接收到 SYN 后,會判斷 SYN 的「序列號和時間戳」是否合法,然后根據判斷結果的不同做不同的處理。

先跟大家說明下, 什么是「合法」的 SYN?

  • 合法 SYN:客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要大,并且 SYN 的「時間戳」比服務端「最后收到的報文的時間戳」要大。
  • 非法 SYN:客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要小,或者 SYN 的「時間戳」比服務端「最后收到的報文的時間戳」要小。

上面 SYN 合法判斷是基于雙方都開啟了 TCP 時間戳機制的場景,如果雙方都沒有開啟 TCP 時間戳機制,則 SYN 合法判斷如下:

  • 合法 SYN:客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要大。
  • 非法 SYN:客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要小。

收到合法 SYN

如果處于 TIME_WAIT 狀態的連接收到「合法的 SYN 」后,就會重用此四元組連接,跳過 2MSL 而轉變為 SYN_RECV 狀態,接著就能進行建立連接過程。

用下圖作為例子,雙方都啟用了 TCP 時間戳機制,TSval 是發送報文時的時間戳:

上圖中,在收到第三次揮手的 FIN 報文時,會記錄該報文的 TSval (21),用 ts_recent 變量保存。然后會計算下一次期望收到的序列號,本次例子下一次期望收到的序列號就是 301,用 rcv_nxt 變量保存。

處于 TIME_WAIT 狀態的連接收到 SYN 后,因為 SYN 的 seq(400) 大于 rcv_nxt(301),并且 SYN 的 TSval(30) 大于 ts_recent(21),所以是一個「合法的 SYN」,于是就會重用此四元組連接,跳過 2MSL 而轉變為 SYN_RECV 狀態,接著就能進行建立連接過程。

收到非法的 SYN

如果處于 TIME_WAIT 狀態的連接收到「非法的 SYN 」后,就會再回復一個第四次揮手的 ACK 報文,客戶端收到后,發現并不是自己期望收到確認號(ack num),就回 RST 報文給服務端。

用下圖作為例子,雙方都啟用了 TCP 時間戳機制,TSval 是發送報文時的時間戳:

上圖中,在收到第三次揮手的 FIN 報文時,會記錄該報文的 TSval (21),用 ts_recent 變量保存。然后會計算下一次期望收到的序列號,本次例子下一次期望收到的序列號就是 301,用 rcv_nxt 變量保存。

處于 TIME_WAIT 狀態的連接收到 SYN 后,因為 SYN 的 seq(200) 小于 rcv_nxt(301),所以是一個「非法的 SYN」,就會再回復一個與第四次揮手一樣的 ACK 報文,客戶端收到后,發現并不是自己期望收到確認號,就回 RST 報文給服務端。

客戶端等待一段時間還是沒收到 SYN + ACK 后,就會超時重傳 SYN 報文,重傳次數達到最大值后,就會斷開連接。

PS:這里先埋一個疑問,處于 TIME_WAIT 狀態的連接,收到 RST 會斷開連接嗎?

源碼分析

下面源碼分析是基于 Linux 4.2 版本的內核代碼。

Linux 內核在收到 TCP 報文后,會執行 tcp_v4_rcv 函數,在該函數和 TIME_WAIT 狀態相關的主要代碼如下:

int tcp_v4_rcv(struct sk_buff *skb)
{
struct sock *sk;
...
//收到報文后,會調用此函數,查找對應的 sock
sk = __inet_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source,
th->dest, sdif, &refcounted);
if (!sk)
goto no_tcp_socket;

process:
//如果連接的狀態為 time_wait,會跳轉到 do_time_wait
if (sk->sk_state == TCP_TIME_WAIT)
goto do_time_wait;

...

do_time_wait:
...
//由tcp_timewait_state_process函數處理在 time_wait 狀態收到的報文
switch (tcp_timewait_state_process(inet_twsk(sk), skb, th)) {
// 如果是TCP_TW_SYN,那么允許此 SYN 重建連接
// 即允許TIM_WAIT狀態躍遷到SYN_RECV
case TCP_TW_SYN: {
struct sock *sk2 = inet_lookup_listener(....);
if (sk2) {
....
goto process;
}
}
// 如果是TCP_TW_ACK,那么,返回記憶中的ACK
case TCP_TW_ACK:
tcp_v4_timewait_ack(sk, skb);
break;
// 如果是TCP_TW_RST直接發送RESET包
case TCP_TW_RST:
tcp_v4_send_reset(sk, skb);
inet_twsk_deschedule_put(inet_twsk(sk));
goto discard_it;
// 如果是TCP_TW_SUCCESS則直接丟棄此包,不做任何響應
case TCP_TW_SUCCESS:;
}
goto discard_it;
}

該代碼的過程:

  • 接收到報文后,會調用 __inet_lookup_skb() 函數查找對應的 sock 結構;
  • 如果連接的狀態是 TIME_WAIT,會跳轉到 do_time_wait 處理;
  • 由 tcp_timewait_state_process() 函數來處理收到的報文,處理后根據返回值來做相應的處理。

先跟大家說下,如果收到的 SYN 是合法的,tcp_timewait_state_process() 函數就會返回 TCP_TW_SYN,然后重用此連接。如果收到的 SYN 是非法的,tcp_timewait_state_process() 函數就會返回 TCP_TW_ACK,然后會回上次發過的 ACK。

接下來,看 tcp_timewait_state_process() 函數是如何判斷 SYN 包的。

enum tcp_tw_status
tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
const struct tcphdr *th)
{
...
//paws_reject 為 false,表示沒有發生時間戳回繞
//paws_reject 為 true,表示發生了時間戳回繞
bool paws_reject = false;

tmp_opt.saw_tstamp = 0;
//TCP頭中有選項且舊連接開啟了時間戳選項
if (th->doff > (sizeof(*th) >> 2) && tcptw->tw_ts_recent_stamp) {
//解析選項
tcp_parse_options(twsk_net(tw), skb, &tmp_opt, 0, NULL);

if (tmp_opt.saw_tstamp) {
...
//檢查收到的報文的時間戳是否發生了時間戳回繞
paws_reject = tcp_paws_reject(&tmp_opt, th->rst);
}
}

....

//是SYN包、沒有RST、沒有ACK、時間戳沒有回繞,并且序列號也沒有回繞,
if (th->syn && !th->rst && !th->ack && !paws_reject &&
(after(TCP_SKB_CB(skb)->seq, tcptw->tw_rcv_nxt) ||
(tmp_opt.saw_tstamp && //新連接開啟了時間戳
(s32)(tcptw->tw_ts_recent - tmp_opt.rcv_tsval) < 0))) { //時間戳沒有回繞
// 初始化序列號
u32 isn = tcptw->tw_snd_nxt + 65535 + 2;
if (isn == 0)
isn++;
TCP_SKB_CB(skb)->tcp_tw_isn = isn;
return TCP_TW_SYN; //允許重用TIME_WAIT四元組重新建立連接
}


if (!th->rst) {
// 如果時間戳回繞,或者報文里包含ack,則將 TIMEWAIT 狀態的持續時間重新延長
if (paws_reject || th->ack)
inet_twsk_schedule(tw, &tcp_death_row, TCP_TIMEWAIT_LEN,
TCP_TIMEWAIT_LEN);

// 返回TCP_TW_ACK, 發送上一次的 ACK
return TCP_TW_ACK;
}
inet_twsk_put(tw);
return TCP_TW_SUCCESS;
}

如果雙方啟用了 TCP 時間戳機制,就會通過 tcp_paws_reject() 函數來判斷時間戳是否發生了回繞,也就是「當前收到的報文的時間戳」是否大于「上一次收到的報文的時間戳」:

  • 如果大于,就說明沒有發生時間戳繞回,函數返回 false。
  • 如果小于,就說明發生了時間戳回繞,函數返回 true。

從源碼可以看到,當收到 SYN 包后,如果該 SYN 包的時間戳沒有發生回繞,也就是時間戳是遞增的,并且 SYN 包的序列號也沒有發生回繞,也就是 SYN 的序列號「大于」下一次期望收到的序列號。就會初始化一個序列號,然后返回 TCP_TW_SYN,接著就重用該連接,也就跳過 2MSL 而轉變為 SYN_RECV 狀態,接著就能進行建立連接過程。

如果雙方都沒有啟用 TCP 時間戳機制,就只需要判斷 SYN 包的序列號有沒有發生回繞,如果 SYN 的序列號大于下一次期望收到的序列號,就可以跳過 2MSL,重用該連接。

如果 SYN 包是非法的,就會返回 TCP_TW_ACK,接著就會發送與上一次一樣的 ACK 給對方。

在 TIME_WAIT 狀態,收到 RST 會斷開連接嗎?

在前面我留了一個疑問,處于 TIME_WAIT 狀態的連接,收到 RST 會斷開連接嗎?

會不會斷開,關鍵看 net.ipv4.tcp_rfc1337 這個內核參數(默認情況是為 0):

  • 如果這個參數設置為 0, 收到 RST 報文會提前結束 TIME_WAIT 狀態,釋放連接。
  • 如果這個參數設置為 1, 就會丟掉 RST 報文。

源碼處理如下:

enum tcp_tw_status
tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
const struct tcphdr *th)
{
....
//rst報文的時間戳沒有發生回繞
if (!paws_reject &&
(TCP_SKB_CB(skb)->seq == tcptw->tw_rcv_nxt &&
(TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq || th->rst))) {

//處理rst報文
if (th->rst) {
//不開啟這個選項,當收到 RST 時會立即回收tw,但這樣做是有風險的
if (twsk_net(tw)->ipv4.sysctl_tcp_rfc1337 == 0) {
kill:
//刪除tw定時器,并釋放tw
inet_twsk_deschedule_put(tw);
return TCP_TW_SUCCESS;
}
} else {
//將 TIMEWAIT 狀態的持續時間重新延長
inet_twsk_reschedule(tw, TCP_TIMEWAIT_LEN);
}

...
return TCP_TW_SUCCESS;
}
}

TIME_WAIT 狀態收到 RST 報文而釋放連接,這樣等于跳過 2MSL 時間,這么做還是有風險。

sysctl_tcp_rfc1337 這個參數是在 rfc 1337 文檔提出來的,目的是避免因為 TIME_WAIT 狀態收到 RST 報文而跳過 2MSL 的時間,文檔里也給出跳過 2MSL 時間會有什么潛在問題。

TIME_WAIT 狀態之所以要持續 2MSL 時間,主要有兩個目的:

  • 防止歷史連接中的數據,被后面相同四元組的連接錯誤的接收;
  • 保證「被動關閉連接」的一方,能被正確的關閉;

雖然 TIME_WAIT 狀態持續的時間是有一點長,顯得很不友好,但是它被設計來就是用來避免發生亂七八糟的事情。

《UNIX網絡編程》一書中卻說道:TIME_WAIT 是我們的朋友,它是有助于我們的,不要試圖避免這個狀態,而是應該弄清楚它。

所以,我個人覺得將 net.ipv4.tcp_rfc1337 設置為 1 會比較安全。

總結

在 TCP 正常揮手過程中,處于 TIME_WAIT 狀態的連接,收到相同四元組的 SYN 后會發生什么?

如果雙方開啟了時間戳機制:

  • 如果客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要大,并且 SYN 的「時間戳」比服務端「最后收到的報文的時間戳」要大。那么就會重用該四元組連接,跳過 2MSL 而轉變為 SYN_RECV 狀態,接著就能進行建立連接過程。
  • 如果客戶端的 SYN 的「序列號」比服務端「期望下一個收到的序列號」要小,或者 SYN 的「時間戳」比服務端「最后收到的報文的時間戳」要小。那么就會再回復一個第四次揮手的 ACK 報文,客戶端收到后,發現并不是自己期望收到確認號,就回 RST 報文給服務端。

在 TIME_WAIT 狀態,收到 RST 會斷開連接嗎?

  • 如果 net.ipv4.tcp_rfc1337 參數為 0,則提前結束 TIME_WAIT 狀態,釋放連接。
  • 如果 net.ipv4.tcp_rfc1337 參數為 1,則會丟掉該 RST 報文。
責任編輯:趙寧寧 來源: 小林coding
相關推薦

2022-04-26 06:43:12

文檔TCPLinux

2021-02-23 09:06:00

MVCC版本并發

2022-03-18 11:50:06

AI模型GPT-3

2019-02-12 15:24:50

C語言JavaPython

2020-07-20 09:04:05

Java語言Vue

2024-05-20 08:25:55

2021-03-12 22:16:30

MySQL并發

2022-04-21 07:52:08

JS線程GUI渲染

2013-09-11 17:53:56

2023-01-13 13:26:38

ChatGPT醫學寫作能力

2012-05-03 09:56:31

招聘開發PHP

2015-06-23 17:07:06

戴爾云計算

2025-08-28 02:11:00

C++開發RAII

2024-06-03 11:43:55

2020-04-01 08:40:44

Vue.jsweb開發

2022-04-06 08:47:03

Dubbo服務協議

2015-01-04 15:36:52

XSS漏洞XSS

2020-03-01 13:52:46

Go語言項目

2020-02-10 12:38:30

遠程辦公

2015-06-17 09:52:00

點贊
收藏

51CTO技術棧公眾號

欧洲精品在线观看| 九九**精品视频免费播放| 亚洲成人激情视频| 92看片淫黄大片一级| av午夜在线| 国产精品一区三区| 欧美一级高清免费| 黑人狂躁日本娇小| 欧美成人午夜77777| 欧美日韩国产综合一区二区 | 污版视频在线观看| 麻豆av在线免费观看| 久久久国产一区二区三区四区小说| 国产精品美女av| 国产对白videos麻豆高潮| 日韩国产专区| 精品中文字幕久久久久久| 国产精品久久久久久久av福利| 九色porny丨国产首页在线| 中文字幕欧美一区| 欧美在线播放一区二区| 蜜桃视频久久一区免费观看入口| 日本中文字幕一区| 51视频国产精品一区二区| 日韩黄色免费观看| 久久在线视频| 亚洲视频综合网| youjizz.com日本| 亚洲精品aa| 色8久久精品久久久久久蜜| 国产九色porny| 免费人成在线观看播放视频| 久久久久久久久久久黄色| 国产精品久久久久久免费观看| 伊人色综合久久久| 久久aⅴ国产紧身牛仔裤| 欧美人交a欧美精品| 三级黄色在线观看| 欧美色蜜桃97| 亚洲欧美日韩中文在线制服| 午夜视频在线观看国产| 亚洲精品黑牛一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 国产电影一区二区三区| 国产精品一区二区三区在线播放| 伊人久久久久久久久久久久| 中国女人久久久| 欧美大荫蒂xxx| 玖玖爱免费视频| 欧美一区二区三区久久精品茉莉花 | 国产韩日影视精品| 久久精品国产69国产精品亚洲 | 欧美伦理在线视频| 亚洲欧美激情在线视频| 粉嫩av蜜桃av蜜臀av| 小嫩嫩12欧美| 国产婷婷色综合av蜜臀av| 亚洲乱码国产乱码精品精大量| 狼人精品一区二区三区在线| 精品无码久久久久久国产| 国产吞精囗交久久久| 国产成人精品一区二区免费看京| 国产一区二区三区在线播放免费观看| 99久久人妻精品免费二区| 精品精品国产毛片在线看| 亚洲精品大尺度| 丰满圆润老女人hd| 成人久久久久| 欧美成人免费va影院高清| 欧美xxxx黑人xyx性爽| 欧美色图首页| 88xx成人精品| 中文字幕日本视频| 韩国欧美一区二区| 国产精品有限公司| 国产九九在线| **欧美大码日韩| 国产精品一色哟哟| 欧美大胆性生话| 欧美丰满嫩嫩电影| 五月天丁香社区| 亚洲人成精品久久久| www.亚洲成人| 日韩免费av片| 日韩精品国产欧美| 91免费人成网站在线观看18| 人妻少妇一区二区三区| 国产亚洲精品福利| www.黄色网址.com| 涩涩在线视频| 欧美一区二区三区小说| 波多野结衣有码| 日韩成人精品一区| 久久久久久伊人| 99re热视频| 国产iv一区二区三区| 日本一区视频在线观看免费| 八戒八戒神马在线电影| 欧美日韩精品二区| 一级片黄色免费| 伊人成综合网yiren22| 久久大大胆人体| 久久青青草视频| 韩国av一区二区三区在线观看| 国产区日韩欧美| 欧美精品videos另类| 亚洲成人av一区二区三区| 日韩欧美国产片| 日本亚洲不卡| 欧美美最猛性xxxxxx| 波多野结衣日韩| 不卡一区二区在线| 亚洲自拍偷拍一区二区三区| xxxxxx欧美| 精品欧美久久久| 亚洲女同二女同志奶水| 国产视频一区在线观看一区免费| 91日本视频在线| 浮生影视网在线观看免费| 亚洲国产成人高清精品| www.五月天色| 日韩在线精品| 国产精品都在这里| 五月婷婷免费视频| 亚洲国产毛片aaaaa无费看| 一级淫片在线观看| 成人激情免费视频| 国产精品18久久久久久麻辣| 五月天婷婷社区| 亚洲一区欧美一区| 中文字幕avav| 亚洲大全视频| 91久久在线观看| 日韩av中文| 欧美色网一区二区| 成人黄色a级片| 肉肉av福利一精品导航| 久久久久久精| 日本在线高清| 日韩激情片免费| 91香蕉在线视频| av成人动漫在线观看| 国产xxxx振车| 爱高潮www亚洲精品| 欧美精品久久久久久久免费观看 | 国模娜娜一区二区三区| 亚洲欧洲一区二区在线观看| 国产91亚洲精品久久久| 中文字幕日韩免费视频| 又色又爽又黄无遮挡的免费视频| 国产欧美精品一区二区色综合| 欧美黄色一级片视频| 蜜桃一区二区三区| 国产精品久久91| 成年人在线视频免费观看| 在线亚洲+欧美+日本专区| 51妺嘿嘿午夜福利| 免费观看在线色综合| 亚洲一区二区不卡视频| 国产999精品在线观看| 欧美成人免费全部| 丰满熟女一区二区三区| 黄网动漫久久久| 亚洲AV无码片久久精品| 麻豆国产精品777777在线| 中文字幕在线亚洲精品| 日韩中文字幕在线一区| 午夜精品久久久久久99热软件| 天天综合网在线| 91极品美女在线| 黑人操日本美女| 国产精品综合网| 日韩av高清在线看片| 神马影视一区二区| 91精品在线观| 超碰在线视屏| 一本色道久久88亚洲综合88| 国产精品久久综合青草亚洲AV| 伊人色综合久久天天| 中文字幕丰满孑伦无码专区| 看国产成人h片视频| 成人短视频在线观看免费| 精品国产导航| 国产精品永久免费在线| 国产区美女在线| 亚洲无av在线中文字幕| 91 中文字幕| 午夜精品一区二区三区三上悠亚| 韩国三级hd中文字幕| 国产一区二区伦理| 99草草国产熟女视频在线| 亚洲色图欧美| 六十路精品视频| 精品国产乱码一区二区三区| 97超碰色婷婷| 中文日本在线观看| 日韩精品久久久久久福利| 一级片视频播放| 五月婷婷欧美视频| 2025国产精品自拍| 国产日韩欧美一区二区三区乱码| 日本一本在线视频| 日韩精品视频网站| 欧美不卡在线播放| 欧美国产偷国产精品三区| 久精品国产欧美| 亚洲码欧美码一区二区三区| 国产精品日韩一区| 乱人伦视频在线| 欧美大片在线看免费观看| 永久免费av在线| 国产婷婷97碰碰久久人人蜜臀| 99在线精品视频免费观看软件| 色综合久久久久综合99| 久久国产露脸精品国产| 中文字幕亚洲不卡| 无码人妻精品一区二区中文| 成人h精品动漫一区二区三区| 日韩av.com| 新67194成人永久网站| 日韩人妻无码精品久久久不卡| 久久激情电影| 日本不卡二区| 欧美三级自拍| 国产精品久久国产三级国电话系列 | 亚洲国产综合色| 无码人妻精品中文字幕| 国产拍揄自揄精品视频麻豆 | 日本一区二区成人| 成人午夜剧场视频网站| 99热精品一区二区| 2018国产精品| 国产99精品在线观看| 久久精品一卡二卡| 国产一区二区三区免费看| 嫩草视频免费在线观看| 久久电影网站中文字幕| 久热精品在线播放| 老司机精品视频在线| 久久久久久三级| 日韩精品久久理论片| 国产精品igao| 久久狠狠亚洲综合| av中文字幕网址| 精久久久久久久久久久| 99中文字幕在线| 国产一区二区久久| 韩国黄色一级片| caoporn国产一区二区| yy6080午夜| 91蝌蚪porny成人天涯| 在线观看av中文字幕| 91麻豆精品一区二区三区| 女尊高h男高潮呻吟| 国产午夜精品在线观看| 人人爽人人爽人人片| 国产精品二区一区二区aⅴ污介绍| 国产精品1区2区3区4区| 亚洲色图在线看| 青青草偷拍视频| 亚洲第一狼人社区| 国产成人在线免费视频| 欧美综合一区二区| 国产男男gay体育生网站| 欧美大片国产精品| 三级视频网站在线| 在线亚洲国产精品网| 国产三区视频在线观看| 久久久久亚洲精品国产| 久热在线观看视频| 国产精品久久久久久久久久新婚 | 偷拍自拍在线看| 国产成人精品一区| 成人国产精品一区二区网站| 成人在线免费网站| 中日韩免视频上线全都免费| 午夜一区二区三视频在线观看| 91精品国产自产拍在线观看蜜| 屁屁影院ccyy国产第一页| 国产日韩亚洲| 做a视频在线观看| 成人午夜电影网站| 亚洲精品国产一区黑色丝袜| 亚洲视频网在线直播| 日韩精品一区三区| 欧美日韩国产综合久久| 亚洲免费国产视频| 伊人久久久久久久久久| 国产偷倩在线播放| 国产精品久久久久久久久久免费| 日本精品国产| 日本欧美精品久久久| 欧美国产高清| 美女网站视频黄色| 不卡视频一二三| 国产精品18在线| 午夜精品成人在线视频| 国产尤物在线观看| 日韩av网站在线| jizz性欧美| 国产精品久久视频| 九九热hot精品视频在线播放 | 国产网站在线免费观看| 欧美亚洲国产日韩2020| 国产一区二区三区免费观看在线 | 少妇伦子伦精品无吗| 国产欧美一二三区| 国产午夜在线播放| 日韩精品一区二区三区视频| 在线视频91p| 欧美一区二三区| 99国产精品久久一区二区三区| 一区二区视频在线播放| 小嫩嫩精品导航| 中文在线永久免费观看| 亚洲免费看黄网站| 中文字幕一区二区三区四区免费看| 亚洲大胆人体视频| 成人在线影视| 国产精品视频久久久久| 亚洲国产国产| 国产www免费| 国产成人综合网| h色网站在线观看| 欧美天堂亚洲电影院在线播放| 天天射,天天干| 午夜免费日韩视频| 国内精品免费| 久久99久久久久久| 成人美女在线视频| 日本aⅴ在线观看| 91精品国产乱码久久蜜臀| 欧美尤物美女在线| 国产精品极品尤物在线观看| 九九热精品视频在线观看| 精品久久久久久久久久中文字幕| 国产成人在线电影| 天堂网avav| 91精品国产综合久久久久久久| 日本中文字幕在线看| 国产精品一二三在线| 精品freesex老太交| 黑人粗进入欧美aaaaa| 国产午夜亚洲精品不卡| 91麻豆精品在线| 在线激情影院一区| 欧洲亚洲精品| 热这里只有精品| 国产一区二区福利| 豆国产97在线 | 亚洲| 日韩av影院在线观看| 裤袜国产欧美精品一区| 日本精品二区| 麻豆传媒一区二区三区| 疯狂撞击丝袜人妻| 欧美大片一区二区| 久草在线资源福利站| 日韩电影免费观看高清完整| 免费人成精品欧美精品| 九九精品视频免费| 日韩三级精品电影久久久| 色爱综合区网| 国产日韩亚洲精品| 视频一区免费在线观看| sm捆绑调教视频| 日韩午夜中文字幕| 女人让男人操自己视频在线观看| 欧美国产综合视频| 麻豆一区二区99久久久久| 中文字幕影音先锋| 日韩精品免费看| 欧美成人福利| 青青青青在线视频| 久久蜜桃av一区精品变态类天堂| 中文字幕网址在线| 欧美精品手机在线| 亚洲欧洲色图| 日本高清久久久| 亚洲国产日韩精品| 成人免费黄色网页| 97超碰最新| 久久亚洲国产精品一区二区| 国产精品视频一区二区在线观看| 亚洲成人xxx| 97成人超碰| 日本手机在线视频| 国产精品无码永久免费888| 亚洲第九十九页| 国产91露脸中文字幕在线| 中文字幕一区二区三区久久网站| 日本一卡二卡在线| 欧美精品在线观看播放| 国产精品电影| 欧美性受xxxx黑人猛交88| 99国产精品久久久久久久久久 | 国产一级18片视频| 粗暴蹂躏中文一区二区三区| 九一亚洲精品| 一级全黄裸体片| 欧美日韩国产高清一区二区三区 |