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

對ICMP路由跟蹤的研究

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
下面我們來對ICMP的路由跟蹤進(jìn)行一下講解。首先我們需要對ICMP協(xié)議的基礎(chǔ)知識進(jìn)行一下分析,然后對于其代碼再來進(jìn)一步研究。

在ICMP協(xié)議的使用中,我們來介紹一下路由跟蹤的應(yīng)用。那么,在掌握了ICMP協(xié)議的一些基本介紹后,我們來對具體的路由跟蹤的實現(xiàn)進(jìn)行一下分析和講解,希望對大家有所幫助。

一、概述

計算機(jī)在Internet中傳遞信息時,必須要經(jīng)過路由器進(jìn)行網(wǎng)絡(luò)路由才能找到目的主機(jī),把信息送到目的主機(jī).路由器中都有一張路由表,表中保存了從本路由器到某一主機(jī)的路由信息,路由器就是通過該路由表進(jìn)行網(wǎng)絡(luò)尋徑的.兩臺主機(jī)之間并沒有一條固定的路徑(即路由表并不固定),該路徑隨著網(wǎng)絡(luò)的變動而作相應(yīng)的變動,因而我們并不能直接從某一主機(jī)上得到去往另一主機(jī)的路徑,要得到本機(jī)與網(wǎng)絡(luò)上某臺主機(jī)的網(wǎng)絡(luò)路徑就必須要進(jìn)行路由跟蹤.本文將介紹一種實現(xiàn)路由跟蹤的方法.

二、ICMP簡介

ICMP即Internet控制報文協(xié)議是一種用于特殊用途的報文機(jī)制,可以使互聯(lián)網(wǎng)中的路由器或主機(jī)報告差錯或提供有關(guān)意外情況的信息.

ICMP報文為兩級封裝,ICMP報文放在IP數(shù)據(jù)報的數(shù)據(jù)部分,IP數(shù)據(jù)報則放在幀的數(shù)據(jù)中進(jìn)行網(wǎng)絡(luò)傳輸(如下圖1所示).ICMP報文與其他普通報文一樣,具有相同的路由選擇,并沒有特殊的優(yōu)先權(quán)和增加可靠性.

(圖1)ICMP報文的封裝

(圖1)ICMP報文的封裝

在ICMP包頭中包含了三個字段:1字節(jié)類型域、1字節(jié)代碼域、2字節(jié)校驗和.類型域表示了該報文的類型,如:回應(yīng)請求報文,數(shù)據(jù)報超時報文等,代碼域表示了該類型的幾種不同情況,如:當(dāng)類型為11(超時報文)時,代碼為0表示TTL超時,為1表示片重組超時.在實現(xiàn)本文中所述的功能時要發(fā)送回應(yīng)請求報文(類型為8),過程如下:源主機(jī)向目的主機(jī)發(fā)送一個類型為8的回應(yīng)請求報文,若目的站點收到回應(yīng)請求報文則把報文IP包頭部中的目的IP與源IP地址交換,將類型8改為回應(yīng)類型0,計算出新的校驗和再發(fā)往源主機(jī).若源主機(jī)收到了該回應(yīng)報文,則不但說明了目的主機(jī)可達(dá),而且說明目的主機(jī)與源主機(jī)之間的路由器工作正常,源主機(jī)和目的主機(jī)的IP、ICMP軟件運行正常.但若在傳輸過程中了出現(xiàn)了某些問題,如網(wǎng)絡(luò)不通等,導(dǎo)致數(shù)據(jù)被定向到一個無效的目的地,這時相關(guān)路由器或目的主機(jī)將發(fā)回目的不可達(dá)報文(類型為3),并在代碼中說明該報文的具體情況:是網(wǎng)絡(luò)不可達(dá)還是主機(jī)不可達(dá)等.若請求報文在傳輸過程中超時,即TTL被減為0(報文每經(jīng)過一個路由器TTL都要減1),則該路由器返回一個TTL超時報文(類型為11),報文IP頭中源IP地址即為本路由器的IP地址.

三、路由跟蹤的實現(xiàn)方法

路由跟蹤的實現(xiàn)就是巧妙地利用了ICMP報文的TTL超時報文.其實現(xiàn)過程如下:源主機(jī)先向目的主機(jī)發(fā)送一個回應(yīng)請求報文(類型8),TTL值設(shè)為1,第一個路由器收到后將TTL減1,這樣TTL變?yōu)?,分組被廢除,同時路由器向源主機(jī)發(fā)送一個TTL超時報文(類型為11),報文的IP包頭中的源IP地址就是第一個路由器的地址,源主機(jī)就可以通過對該報文進(jìn)行分析,得到第一個路由器的地址.接著發(fā)送TTL等于2的報文得到第二個路由器地址,再發(fā)TTL等于3的報文,如此下去直到收到目的主機(jī)的回應(yīng)應(yīng)答報文(類型為0)或目的不可達(dá)報文(類型為3),或者到了最大跳數(shù)(要檢測路由器個數(shù)的最大值).可以看到,對TTL的設(shè)置是實現(xiàn)跟蹤的關(guān)鍵,使用函數(shù)setsockopt(m_Sock, IPPROTO_IP, IP_TTL,(LPSTR)&TTL,sizeof(int)) 可以對其進(jìn)行設(shè)置,m_Sock是所創(chuàng)建的套接字,IP_TTL說明是進(jìn)行TTL設(shè)置,TTL即是要設(shè)置的TTL值,為一個整形數(shù)值 .其實現(xiàn)流程可用下圖2表示:

(圖2) 流程圖

(圖2) 流程圖

四、路由跟蹤程序?qū)崿F(xiàn)

本文所介紹的程序是使用了Visual C++6.0編寫,其過程如下:

1、創(chuàng)建一個新的基于對話框的AppWizard工程,并命名為RouteTrace.

2、在stdafx.h中加入#include "winsock2.h".

3、打開選擇菜單Project->Setting (ALT+F7),進(jìn)入Project Setting 對話框,在Link下的 Object/library modules 輸入ws2_32.lib,然后點OK.

4、自定義一個ICMP類.點擊菜單中的Insert->New Class,進(jìn)入New Class對話框,在Class type中選擇Generic Class,在Name中輸入類名CICMP,然后點OK,這樣就新建了一個CICMP類.

5、將對話框設(shè)置成如圖3所示的樣子:

(圖3 程序界面)

(圖3 程序界面)

啟動Class Wizard 為各控件添加響應(yīng)函數(shù)和關(guān)聯(lián)變量,控件對應(yīng)的ID及響應(yīng)函數(shù)或變量為:

控件 ID 響應(yīng)函數(shù) 變量
地址組合框 IDC_COMBO   CComboBox m_comb
最大跳數(shù)編輯框 IDC_MAXHOT   int m_maxhot
跟蹤按鈕 IDC_TRACE OnTrace()  
停止按鈕 IDC_STOP OnStop()  
列表框 IDC_LIST   CListCtrl m_list

#p#

五、路由跟蹤代碼

在完成了對各控件的設(shè)置和類的添加以后就是對代碼的編寫了,這里給出了新建類CICMP和RouteTraceDlg.cpp的代碼,詳細(xì)代碼請參看源程序。

ICMP.cpp文件代碼:

// ICMP.cpp: implementation of the CICMP class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "RouteTrace.h"
#include "ICMP.h"
#include "ws2tcpip.h"  //實現(xiàn) IP_TTL 設(shè)置的關(guān)鍵
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CICMP::CICMP()
{
  winsock = 0;
  m_pIp = NULL;
  m_pIcmp = NULL;
  m_pIp = (IP_HEAD *)new BYTE[MAX_PACKET];
  m_pIcmp = (ICMP_HEAD *)new BYTE[MAX_PACKET];
}
CICMP::~CICMP()
{
  delete [] m_pIp;
  delete [] m_pIcmp;
}
BOOL CICMP::Initialize()
{
  WSADATA wsadata;
  if( WSAStartup(MAKEWORD(2, 1),&wsadata) ) 
  {
    AfxMessageBox("WSAStartup初始化失敗!");
    return FALSE;
  }
  
  winsock= WSASocket (AF_INET,   //建立socket
          SOCK_RAW,
          IPPROTO_ICMP,
          NULL, 0,0);
  if(!winsock)  {
    AfxMessageBox( "Socket創(chuàng)建失敗!");
    return FALSE;
  }
  int timeout =5000;
  setsockopt(winsock,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,  // 設(shè)置接收超時
    sizeof(timeout));
  timeout = 5000;
  setsockopt(winsock,SOL_SOCKET,SO_SNDTIMEO,(char *)&timeout,  //設(shè)置發(fā)送超時
    sizeof(timeout));
  return TRUE;
}
void CICMP::Uninitialize()        //釋放Socket
{
  if(winsock)
    closesocket(winsock);
  WSACleanup();
}
USHORT CICMP::CheckSum(USHORT *buffer, int size) //計算校驗和
{
 unsigned long cksum = 0;
 while(size > 1) {
  cksum+=*buffer++;
  size -=sizeof(USHORT);
 }
 
 if(size ) {
  cksum += *(UCHAR*)buffer;
 }
 cksum = (cksum >> 16) + (cksum & 0xffff);
 cksum += (cksum >>16);
 return (USHORT)(~cksum);
}
//--------------------發(fā)送ICMP回應(yīng)請求報文-------------------
BOOL CICMP::SendICMPPack(char *pAddr)
{
  sockaddr_in sockAddr;
  memset((void *)&sockAddr,0,sizeof(sockAddr));
  sockAddr.sin_family = AF_INET;
  sockAddr.sin_port = 0;
  sockAddr.sin_addr.S_un.S_addr=inet_addr(pAddr);
  return SendICMPPack(&sockAddr);
}
BOOL CICMP::SendICMPPack(sockaddr_in *pAddr)
{
  //填充ICMP數(shù)據(jù)各項
  int state;
  char *p_data;
  m_pIcmp->type = ICMP_ECHO;
  m_pIcmp->code = 0;
  m_pIcmp->ID = (USHORT)GetCurrentProcessId();
  m_pIcmp->number = 0;
  m_pIcmp->time = GetTickCount();
  m_pIcmp->cksum = 0;
  //填充數(shù)據(jù)
  p_data = ((char *)m_pIcmp + sizeof(ICMP_HEAD));
  memset((char *)p_data,''0'',DEF_PACKET);
  //校驗和
  m_pIcmp->cksum = CheckSum((USHORT *)m_pIcmp,
    DEF_PACKET+sizeof(ICMP_HEAD));
  
  //發(fā)送數(shù)據(jù)
  state = sendto(winsock,(char *)m_pIcmp,
    DEF_PACKET+sizeof(ICMP_HEAD),
    NULL,(struct sockaddr *)pAddr,sizeof(sockaddr));
  if(state == SOCKET_ERROR) {
    if(GetLastError()==WSAETIMEDOUT)
      m_strInfo = "連接超時!(發(fā)送)";
    else
      m_strInfo.Format("出現(xiàn)未知發(fā)送錯誤!");
    return FALSE;
  }
  if(state <DEF_PACKET) {
    m_strInfo = "發(fā)送數(shù)據(jù)錯誤!";
    return FALSE;
  }
  
  memcpy((void *)&m_sockAddr,(void *)pAddr,
    sizeof(sockaddr_in));
  return TRUE;
}
//----------------------接收數(shù)據(jù)----------------------------
BOOL CICMP::RecvICMPPack()
{
  int state;
  int len = sizeof(sockaddr_in);
  char * addr;
  struct hostent *lpHostent = NULL;
  addr = inet_ntoa(m_sockAddr.sin_addr);
  state = recvfrom(winsock,(char *)m_pIp,MAX_PACKET,0,
    (struct sockaddr*)&m_sockAddr,&len);
  if (state == SOCKET_ERROR) {
    if (WSAGetLastError() == WSAETIMEDOUT)
    {  m_strInfo="接收超時,路由跟蹤失敗!";
    routestate=0;
    RouteState="路由跟蹤失敗!";
    }
    else
      m_strInfo = "未知接收錯誤!";
    return FALSE;
  }
  //分析數(shù)據(jù)
  int ipheadlen;
  ipheadlen = m_pIp->HeadLen * 4 ;
  if (state < (ipheadlen+MIN_PACKET))  {
    m_strInfo = "目的地址的響應(yīng)數(shù)據(jù)不正確";
    return FALSE;
  }
  ICMP_HEAD * p_icmprev;
  p_icmprev = (ICMP_HEAD*)((char *)m_pIp + ipheadlen);
    switch (p_icmprev->type)
    {
    case ICMP_ECHOREPLY: //收到正常回顯
    {
    m_strInfo.Format("接收到%s %d字節(jié)響應(yīng)數(shù)據(jù),響應(yīng)時間:%dms.",
    inet_ntoa(m_sockAddr.sin_addr),len,GetTickCount()-p_icmprev->time);
    routeaddr=addr;
    routestate=0;  
    RouteState="到達(dá)目的主機(jī)!";
    return TRUE;
      break;  
    }
    case ICMP_TTLOUT:  // TTL超時
    {  routeaddr=inet_ntoa(m_sockAddr.sin_addr);
      routestate=1;
      RouteState="測試到路由器!";
      return TRUE;
      break;
    }
    
    case ICMP_DESUNREACH: //目的不可達(dá)
    {  m_strInfo = "目的不可達(dá)!";
        routestate=0;
      RouteState="目的不可達(dá)!";
      return TRUE;
      break;
    }
        
    default :{ routestate=0;
          m_strInfo="未知錯誤!";
          RouteState="不明狀態(tài)!";
         }
    }
    return TRUE;
}
//----------------設(shè)置TTL--------------------
int CICMP::SetTTL(int TTL)
{
  int nRet=setsockopt(winsock, IPPROTO_IP, IP_TTL,(LPSTR)&TTL,sizeof(int));
  
  if(nRet==SOCKET_ERROR)
  {  CString ttlerr;
    ttlerr.Format("設(shè)置 TTL 錯誤!");
    AfxMessageBox(ttlerr);
    return 0;
  }
  return 1;
}

  RouteTraceDlg.cpp文件代碼:

// RouteTraceDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RouteTrace.h"
#include "RouteTraceDlg.h"
#include "afxmt.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
struct SubThreadInfo
{
  CDialog* pDialog;
  CListCtrl*  list;
  CStatic* state;
  CString IPStr;
  int Maxhot;
  
} Info;
CEvent eventStopRoute;
//-----------------路由跟蹤線程---------------
UINT ThreadRoute(LPVOID pParam)     
{
  SubThreadInfo* pInfo = (SubThreadInfo*)pParam;
  CRouteTraceDlg* pThreadDlg = (CRouteTraceDlg*)pInfo->pDialog;
  CICMP m_icmp;
  CString IPStr=pInfo->IPStr;
  CString sTTL;
  int nTtl;
  m_icmp.Initialize();
  for(nTtl=1;nTtl<=pInfo->Maxhot;nTtl++)
  {
  if(m_icmp.SetTTL(nTtl)==0)
    return 0;  
  sTTL.Format("%d",nTtl);  
  if(m_icmp.SendICMPPack((char *)(LPCSTR)IPStr)) 
  m_icmp.RecvICMPPack();
  
  
  {  
  int i=pInfo->list->InsertItem(0,sTTL);
   pInfo->list->SetItemText(i,1,m_icmp.routeaddr);
   pInfo->list->SetItemText(i,2,m_icmp.RouteState);
    pInfo->state->SetWindowText(m_icmp.m_strInfo);
    Sleep(100);
  }
if(m_icmp.routestate==0)  //收到非TTL超時報文則跳出循環(huán)
     break;
if(WaitForSingleObject(eventStopRoute.m_hObject, 0) == WAIT_OBJECT_0)
     break;     //收到停止信號則跳出循環(huán)
  }
pThreadDlg->Routeflag=TRUE;
 return 0;
}
……  //系統(tǒng)代碼
BOOL CRouteTraceDlg::OnInitDialog()
{
  CDialog::OnInitDialog();
…… //系統(tǒng)代碼
  
  // TODO: Add extra initialization here
  m_list.InsertColumn(0,"標(biāo)號",LVCFMT_CENTER,60,0);
  m_list.InsertColumn(1,"路由器地址",HDF_CENTER,200,0);
  m_list.InsertColumn(2,"狀態(tài)",HDF_CENTER,100,0);
  ListView_SetExtendedListViewStyleEx(m_list.m_hWnd, LVS_EX_FULLROWSELECT, 0xFFFFFFFF);
  return TRUE; // return TRUE unless you set the focus to a control
}
…… //系統(tǒng)代碼
void CRouteTraceDlg::OnTrace()
{
  CString str;
  UpdateData(TRUE);
  CWnd * pWnd;
  pWnd = GetDlgItem(IDC_COMBO);
  pWnd->GetWindowText(str);
  if(str.IsEmpty()) {
    MessageBox("請輸入地址!");
    pWnd->SetFocus();
    return;
  }
  if (m_comb.FindStringExact(-1, str) == CB_ERR)
  m_comb.AddString(str);
   m_list.DeleteAllItems();
   if(Routeflag)
   {
    Routeflag=FALSE;
    Info.IPStr=str;
    Info.pDialog=this;
    Info.Maxhot=m_maxhot;
    Info.list=(&m_list);
    Info.state=(&m_statectl);
    AfxBeginThread(ThreadRoute, &Info); //在線程中實現(xiàn)路由跟蹤
   }
}
void CRouteTraceDlg::OnStop()
{
   if(!Routeflag)
   {  
    eventStopRoute.SetEvent();  // 發(fā)出停止信號
   }
}
void CRouteTraceDlg::OnDestroy()
{
  CDialog::OnDestroy();
  
  // TODO: Add your message handler code here
  m_icmp.Uninitialize();
}

代碼運行效果圖如下:

代碼運行效果圖

六、結(jié)束語

本文所述程序在 Windows 98 下 Visual C++6.0 中調(diào)試通過,并在寬帶網(wǎng)中測試成功。讀者可根據(jù)實際需要修改程序中的參數(shù),以實現(xiàn)更強(qiáng)大的功能,比如可以把超時值設(shè)置成更合適的值,或設(shè)置成可動態(tài)輸入的形式。
 

責(zé)任編輯:佟健 來源: 賽迪網(wǎng)
相關(guān)推薦

2010-09-16 11:05:43

2010-09-29 12:52:14

2010-12-14 15:07:15

ICMP路由重定向

2010-07-28 17:36:17

2010-08-05 08:49:19

2015-05-11 09:43:07

路由traceroute

2010-12-22 11:27:23

2020-12-18 09:49:48

iOS ChromiWKWebViewJavaScript

2011-01-18 13:50:20

路由跟蹤tcptracerou

2011-04-18 15:24:40

Tracert命令ICMP

2009-12-22 15:25:23

2010-08-02 16:59:54

2010-07-13 10:10:07

2010-06-21 13:07:14

2010-05-31 17:45:50

MySQL行鎖

2021-01-18 09:30:25

惡意軟件網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2010-04-12 16:24:15

Oracle表查詢

2022-11-07 07:54:05

微服務(wù)數(shù)據(jù)庫網(wǎng)關(guān)

2010-08-03 09:23:25

2010-02-22 15:13:01

Python模塊
點贊
收藏

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

国产高清一区视频| 俺去亚洲欧洲欧美日韩| 国模杨依粉嫩蝴蝶150p| 国产日本在线观看| 国产剧情一区二区三区| 91国在线精品国内播放| 九九九视频在线观看| 日本精品视频| 日本高清无吗v一区| 黄色网络在线观看| 你懂的在线播放| 国产一区二区伦理| 日韩av免费在线看| 免费一级片在线观看| 国产毛片一区二区三区 | 99中文字幕在线观看| 亚洲欧美日韩精品永久在线| 精品在线免费观看| 日韩免费av在线| 免费视频网站www| 日韩精品一卡| 亚洲女人天堂网| caopor在线| 99精品在线免费观看| 色哟哟日韩精品| 国产一二三在线视频| 日本电影全部在线观看网站视频| 97aⅴ精品视频一二三区| 91色中文字幕| 曰批又黄又爽免费视频| 亚洲男人影院| 97久久精品国产| 国产亚洲小视频| 在线电影一区二区| 日韩在线精品视频| 亚洲综合欧美综合| 亚洲精品中文字幕99999| 精品欧美一区二区在线观看| 涩多多在线观看| 成人性片免费| 欧美亚一区二区| 情侣黄网站免费看| 日韩影院在线| 精品magnet| 精品丰满人妻无套内射| 日本不卡影院| 亚洲一区二区三区在线看| 手机成人av在线| 精品国产99久久久久久| 中文字幕av一区 二区| 亚洲成人一区二区三区| 韩日在线视频| 国产蜜臀97一区二区三区 | 色视频在线看| 91色porny| 欧美国产综合视频| 欧美美女搞黄| 国产三级欧美三级日产三级99 | 91亚洲自偷观看高清| 在线电影欧美日韩一区二区私密| 久久国产柳州莫菁门| 成人av手机在线| 偷偷操不一样的久久| 黄色美女久久久| 亚洲第一页中文字幕| 中文字幕在线视频播放| 欧美91在线| 亚洲欧美精品在线| 色欲AV无码精品一区二区久久| 精品国产一区二区三区小蝌蚪| 国产亚洲欧美日韩美女| 青青青手机在线视频| 66久久国产| 久久久久久亚洲精品不卡| 日韩网红少妇无码视频香港| 欧美亚洲网站| 国产欧洲精品视频| 国产富婆一级全黄大片| www.欧美.com| 日韩精品一区二区三区四区五区 | 日本中文字幕在线| 日韩高清在线不卡| 99热国内精品永久免费观看| 亚洲色图综合网| av资源在线免费观看| 欧美久色视频| 青青草一区二区| 国产一区二区三区中文字幕| 成人少妇影院yyyy| 欧美亚洲免费高清在线观看| 黄色免费网站在线| 午夜精品福利一区二区蜜股av| 国产精品亚洲αv天堂无码| 日韩精品第二页| 亚洲精品按摩视频| 免费一级suv好看的国产网站| 激情欧美一区| 国产精品偷伦免费视频观看的| 国产成人三级一区二区在线观看一 | 日本一区二区高清| 欧美精品在欧美一区二区| 香蕉视频亚洲一级| 欧美大片在线观看| 亚洲精品视频网址| 亚洲精品美女91| 国产中文日韩欧美| 青青国产在线| 亚洲午夜电影网| 一本岛在线视频| 欧美巨大xxxx| 欧美日韩国产第一页| 波多野结衣在线观看一区| 国产成人自拍在线| 中文字幕日韩一区二区三区| 123区在线| 欧美一卡二卡在线| 久久亚洲无码视频| 欧美在线综合| 成人综合电影| av在线免费网址| 欧美日韩综合不卡| www.自拍偷拍| 亚洲黄色影片| 亚洲自拍偷拍区| 免费在线观看黄色网| 色综合久久久久| 亚洲激情 欧美| 综合在线视频| 国产欧美一区二区三区在线| 国产专区在线播放| 欧美日韩国产在线看| 一级做a爱视频| 欧美gvvideo网站| 国产精品久久久久影院日本| 午夜性色福利视频| 亚洲国产你懂的| 日本黄色大片在线观看| 一本一道久久综合狠狠老| 国产精品偷伦免费视频观看的| 男女污视频在线观看| 精品久久久中文| 99久久免费看精品国产一区| 亚洲第一毛片| 国产三区二区一区久久| а√天堂资源官网在线资源| 精品剧情在线观看| 久久久久久久久久99| 国产成人精品影视| 黄色a级片免费看| 中文字幕一区图| 久久久噜久噜久久综合| 色婷婷av一区二区三区之e本道| 夜夜爽夜夜爽精品视频| 精品人妻一区二区免费| 在线 亚洲欧美在线综合一区| 国产精品国产三级欧美二区| h片在线观看视频免费免费| 亚洲国产成人在线播放| 黄色大片网站在线观看| 久久久久国产一区二区三区四区| 久久精品一区二| 欧美影院三区| 成人精品网站在线观看| 亚洲妇熟xxxx妇色黄| 欧美mv和日韩mv国产网站| 日本视频www| 国产亚洲视频系列| 亚洲天堂网一区| 亚洲最新色图| 国产综合精品一区二区三区| 亚洲三级欧美| 一区二区三区精品99久久| 国产精品欧美综合亚洲| 一区二区三区欧美日| 久久久久久久久免费看无码| 一本一道波多野毛片中文在线| 国产精品久久夜| 一级黄色高清视频| 亚洲人妖在线| 神马影院一区二区三区| 日韩成人在线电影| 久久久欧美精品| 黑人与亚洲人色ⅹvideos | 99热这里只有精品66| 亚洲无线码一区二区三区| 日韩中文字幕电影| 精品一区二区在线观看| 波多野结衣综合网| 青青草国产成人a∨下载安卓| 91在线高清视频| 亚洲小少妇裸体bbw| 久久精品国产一区二区电影| 涩涩视频免费看| 欧美色手机在线观看| 少妇影院在线观看| 久久亚洲影视婷婷| 九九热视频免费| 久久99伊人| 国产欧美123| 欧美一级精品| 国内一区在线| 国产精品日本一区二区三区在线| 欧美一区二区三区四区在线| 国产在线高潮| 国产亚洲一区精品| 亚洲精品一区二区三区不卡| 欧美日韩一区二区三区不卡| 亚洲综合一二三| 亚洲免费观看高清完整版在线观看熊| theav精尽人亡av| 国产99久久久国产精品免费看| 成年人在线观看视频免费| 精品不卡视频| a级网站在线观看| 黑人操亚洲人| 国产一区二区在线网站| 国产精品一区二区三区www| 国产精品va在线| 黄色污网站在线观看| 欧美精品在线第一页| av中文字幕在线| 国产视频久久网| 婷婷色在线视频| 日韩欧美成人激情| 国产精品女同一区二区| 欧美日韩亚洲综合一区| 精品国产xxx| 欧美丝袜一区二区| 日产欧产va高清| 亚洲一区二区视频在线| 久草免费在线视频观看| 国产精品国产成人国产三级| www色com| 中文一区一区三区高中清不卡| 强伦人妻一区二区三区| 91香蕉视频在线| 欧美bbbbb性bbbbb视频| 91麻豆国产自产在线观看| 国产一级黄色录像| bt欧美亚洲午夜电影天堂| 久久久久无码国产精品一区李宗瑞| 国产一区二三区| 91精品国产三级| 国产精品亚洲一区二区三区妖精| 国内自拍第二页| 国产曰批免费观看久久久| 亚洲第一天堂久久| 国产一区二区剧情av在线| 日本在线观看视频一区| 国产精品一级片| 日本少妇xxxx软件| 成人免费观看视频| 久久久久9999| 久久久精品综合| 国产一级久久久久毛片精品| 欧美激情一区二区三区蜜桃视频| xxxxx在线观看| 国产精品欧美久久久久一区二区| 国产一级淫片久久久片a级| 国产精品电影一区二区三区| 三级黄色录像视频| 一区二区三区精品在线| 国产精品美女毛片真酒店| 日韩欧美国产黄色| 在线观看中文字幕av| 91精品国产综合久久久蜜臀图片| 精品人妻一区二区三区三区四区| 日韩欧美激情在线| 天堂av中文字幕| 在线亚洲国产精品网| 国产在线观看a视频| 午夜精品一区二区三区在线| 在线最新版中文在线| 国产精品亚洲精品| av成人男女| 欧美日韩电影一区二区三区| 日韩欧美国产精品综合嫩v| 青青在线免费视频| 米奇777在线欧美播放| 亚洲图色中文字幕| 99久久综合色| 正在播放国产对白害羞| 亚洲一区二区三区激情| 人人妻人人爽人人澡人人精品| 欧美一级艳片视频免费观看| 午夜性色福利视频| 久久精品视频在线| 黄视频免费在线看| 91久久精品美女高潮| 亚洲va久久| 可以免费看的黄色网址| 午夜亚洲福利在线老司机| 亚洲综合20p| 久久亚洲一区二区三区四区| 午夜剧场免费在线观看| 日韩欧美精品网站| 国产黄色一级网站| 9999在线视频| 国产精品美女www爽爽爽视频| 我要色综合中文字幕| 欧美在线一二三区| 国内自拍视频一区二区三区| 日本三级黄色网址| 99re成人精品视频| 欧美黑人一级片| 精品视频一区二区不卡| 国产精品国产高清国产| 欧美日韩成人在线播放| 国产精品亲子伦av一区二区三区| 国产亚洲精品久久飘花| 亚洲色图88| 免费看污黄网站| 91在线云播放| 久久久久久久久99| 91.麻豆视频| 能在线看的av| 久久精品福利| 另类少妇人与禽zozz0性伦| 男人天堂2024| 欧美一级高清片| 免费av网站在线看| 国产成人精品优优av| 欧美爱爱网站| 亚洲国产精品无码av| 国产超碰在线一区| 国产精品久久久久久免费观看| 亚洲精品成人无码| 厕沟全景美女厕沟精品| 91麻豆精品国产自产在线 | 欧美aa视频| 国产在线视频一区二区三区| 久久天天躁狠狠躁夜夜av| 激情小视频在线观看| 久久久久久久国产精品| 欧美videos粗暴| 色狠狠久久av五月综合|| 免费在线亚洲| 国产亚洲色婷婷久久99精品91| av成人福利| 久久久精品一区二区| 日韩欧美在线视频播放| 日韩久久一区| 久久免费少妇高潮久久精品99| 成人污版视频| 国产手机视频在线观看| 国产一区二区福利视频| 国产欧美一区二区三区在线观看视频| 色婷婷综合久久久久中文一区二区 | 成年人视频在线看| 国产精品免费看久久久香蕉 | 96av麻豆蜜桃一区二区| 日本熟妇毛茸茸丰满| 欧美精品一区二区三区久久久| 黄色网页在线免费观看| 成人亚洲欧美一区二区三区| 一精品久久久| 亚洲午夜久久久久久久久| 亚洲午夜久久久久久久久电影院| 欧美 日韩 国产 成人 在线 91 | 日韩精品视频免费看| 日韩免费看网站| 国产福利电影在线播放| 欧洲精品码一区二区三区免费看| 蜜臀av一级做a爰片久久| 精品在线观看一区| 欧美一级xxx| 成人免费图片免费观看| **亚洲第一综合导航网站| 成人午夜在线影视| 91探花福利精品国产自产在线| 欧美日韩国产欧| 亚洲中文字幕一区| 在线观看日韩电影| 黄色在线免费看| 国产精品免费一区二区三区在线观看| 一区二区三区精品视频在线观看| 人人人妻人人澡人人爽欧美一区| 欧美精品久久一区二区三区| 菠萝蜜视频在线观看www入口| 麻豆成人在线播放| 狠狠v欧美v日韩v亚洲ⅴ| 九九热国产视频| 国产亚洲视频在线| 欧美特黄不卡| 国内外免费激情视频| 亚洲乱码国产乱码精品精98午夜| 色婷婷av一区二区三| 91精品国产自产在线观看永久| 好看不卡的中文字幕| 久久国产柳州莫菁门| 精品乱人伦小说| 欧美暴力调教| www.av毛片| 国产精品国产三级国产普通话三级 | 91动漫免费网站| 亚洲福利在线观看| 精品视频在线播放一区二区三区 | 色噜噜亚洲精品中文字幕| 成功精品影院| 亚洲一级片网站|