久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

编程问答

uip1.0核心模块uip_process函数解读

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uip1.0核心模块uip_process函数解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載地址:https://www.amobbs.com/thread-5531817-1-1.html

?最近,利用uip搞了小東西,要想利用好uip, 最好徹底搞清楚其關鍵函數 uip_process.
當網卡接收到數據之后,均需要通過該函數來處理.
??下面是對uip 1.0中的uip_process函數解讀.

//要點: 網卡收到數據時,uip_process會遍歷uip_udp_conns數組,如果當前包的目的端口與
//本機端口不匹配,或者遠程端口與uip_udp_new中的端口不匹配,那么uip會直接丟棄
//這個包。
void uip_process(u8_t flag)
{
??u8_t temp[2];
??register struct uip_conn *uip_connr = uip_conn;

#if UIP_UDP
??if(flag == UIP_UDP_SEND_CONN) {? ? ? ???//若是則goto udp_send;不是則向下執行;
? ? goto udp_send;
??}
#endif /* UIP_UDP */
??
??uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN];

??/* Check if we were invoked because of a poll request for a
? ???particular connection. */
??if(flag == UIP_POLL_REQUEST) { // 如果處于穩定連接狀態且沒有數據在緩存中等待確認則:
? ? if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
? ?? ? !uip_outstanding(uip_connr)) {
? ? ? ? uip_flags = UIP_POLL;
? ? ? ? UIP_APPCALL();
? ? ? ? goto appsend;
? ? }
? ? goto drop;
? ??
? ? /* Check if we were invoked because of the perodic timer fireing. */
??} else if(flag == UIP_TIMER) {
#if UIP_REASSEMBLY
? ? if(uip_reasstmr != 0) {
? ?? ?--uip_reasstmr;
? ? }
#endif /* UIP_REASSEMBLY */
? ? /* Increase the initial sequence number. */
? ? if(++iss[3] == 0) {
? ?? ?if(++iss[2] == 0) {
? ? ? ? if(++iss[1] == 0) {
? ? ? ?? ?++iss[0];
? ? ? ? }
? ?? ?}
? ? }

? ? /* Reset the length variables. */
? ? uip_len = 0;
? ? uip_slen = 0;

? ? /* Check if the connection is in a state in which we simply wait
? ?? ? for the connection to time out. If so, we increase the
? ?? ? connection's timer and remove the connection if it times
? ?? ? out. */
? ? if(uip_connr->tcpstateflags == UIP_TIME_WAIT ||
? ?? ? uip_connr->tcpstateflags == UIP_FIN_WAIT_2) {
? ?? ?++(uip_connr->timer);
? ?? ?if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {
? ?//如果連接處于等待超時關閉狀態則增加超時計數器,如果到達超時期限則關閉當前連接
? ? ? ?? ?? ? uip_connr->tcpstateflags = UIP_CLOSED;
? ? ? ? ? ? ? ?? ?//uip_arp_close(uip_connr->ripaddr);
? ?? ?}
? ? } else if(uip_connr->tcpstateflags != UIP_CLOSED) {? ? ? ? //如果連接不處于關閉狀態
? ?? ?/* If the connection has outstanding data, we increase the
? ? ? ???connection's timer and see if it has reached the RTO value
? ? ? ???in which case we retransmit. */
//已經發送的數據包還未接收到對其的ACK,超時計數器減一且超時計數器值為0??
? ?? ?if(uip_outstanding(uip_connr)) {
? ? ? ? if(uip_connr->timer-- == 0) {
? ? ? ?? ?if(uip_connr->nrtx == UIP_MAXRTX ||
? ? ? ?? ?? ?((uip_connr->tcpstateflags == UIP_SYN_SENT ||
? ? ? ?? ?? ???uip_connr->tcpstateflags == UIP_SYN_RCVD) &&
? ? ? ?? ?? ? uip_connr->nrtx == UIP_MAXSYNRTX)) {
? ? ? ?? ?//①如果到達所設定的重發次數則
? ? ? ?? ???uip_connr->tcpstateflags = UIP_CLOSED;//關閉當前連接

? ? ? ?? ???/* We call UIP_APPCALL() with uip_flags set to
? ? ? ?? ?? ???UIP_TIMEDOUT to inform the application that the
? ? ? ?? ?? ???connection has timed out. */
? ? ? ?? ???uip_flags = UIP_TIMEDOUT; //通知應用程序超時;
? ? ? ?? ???UIP_APPCALL();
? ? ? ?? ???/* We also send a reset packet to the remote host. */
? ? ? ?? ???BUF->flags = TCP_RST | TCP_ACK;? ? ? ?? ?//設置RST+ACK終止連接標志
? ? ? ?? ???goto tcp_send_nodata;
? ? ? ?? ?}
? ?//②沒有到達設定的重發次數則重傳數據:
? ? ? ?? ?/* Exponential backoff. */
? ? ? ?? ?uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???4:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???uip_connr->nrtx);? ? ? ? //重置重傳計數器
? ? ? ?? ?++(uip_connr->nrtx);
? ? ? ?? ?
? ? ? ?? ?/* Ok, so we need to retransmit. We do this differently
? ? ? ?? ?? ?depending on which state we are in. In ESTABLISHED, we
? ? ? ?? ?? ?call upon the application so that it may prepare the
? ? ? ?? ?? ?data for the retransmit. In SYN_RCVD, we resend the
? ? ? ?? ?? ?SYNACK that we sent earlier and in LAST_ACK we have to
? ? ? ?? ?? ?retransmit our FINACK. */
? ? ? ?? ?UIP_STAT(++uip_stat.tcp.rexmit);
? ? ? ?? ?switch(uip_connr->tcpstateflags & UIP_TS_MASK) {//根據連接處的不同狀態重發不同的數據包
? ? ? ?? ?case UIP_SYN_RCVD:
? ? ? ?? ???/* In the SYN_RCVD state, we should retransmit our
? ?? ?? ?? ?? ?SYNACK. */
? ? ? ?? ???goto tcp_send_synack; // 重新發送先前發送的SYN+ACK?
? ? ? ?? ???
#if UIP_ACTIVE_OPEN
? ? ? ?? ?case UIP_SYN_SENT:
? ? ? ?? ???/* In the SYN_SENT state, we retransmit out SYN. */
? ? ? ?? ???BUF->flags = 0;
? ? ? ?? ???goto tcp_send_syn;? ? ? ???//重發SYN請求連接
#endif /* UIP_ACTIVE_OPEN */
? ? ? ?? ???
? ? ? ?? ?case UIP_ESTABLISHED:
? ? ? ?? ???/* In the ESTABLISHED state, we call upon the application
? ?? ?? ?? ?? ?to do the actual retransmit after which we jump into
? ?? ?? ?? ?? ?the code for sending out the packet (the apprexmit
? ?? ?? ?? ?? ?label). */
? ? ? ?? ???uip_flags = UIP_REXMIT;
? ? ? ?? ???UIP_APPCALL();? ? ? ? //調用上層應用程序,通知重新生成數據重發
? ? ? ?? ???goto apprexmit;? ? ? ? //進入重發階段
? ? ? ?? ???
? ? ? ?? ?case UIP_FIN_WAIT_1:
? ? ? ?? ?case UIP_CLOSING:
? ? ? ?? ?case UIP_LAST_ACK:
? ? ? ?? ???/* In all these states we should retransmit a FINACK. */
? ? ? ?? ???goto tcp_send_finack;//重發FIN+ACK關閉連接?
? ? ? ?? ???
? ? ? ?? ?}
? ? ? ? }
? ? } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) {??//處于穩定連接狀態且上次發送的數據?
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?//接收到正確的ACK,可以繼續發送新數據?
? ? ? ? /* If there was no need for a retransmission, we poll the
? ?? ?? ???application for new data. */
? ? ? ? uip_flags = UIP_POLL; //詢問應用程序是否有數據要發送?
? ? ? ? UIP_APPCALL();//調用應用程序產生數據
? ? ? ? goto appsend;//發送數據
? ?? ?}
? ? }
? ? goto drop;
??}
#if UIP_UDP
??if(flag == UIP_UDP_TIMER) {
? ? if(uip_udp_conn->lport != 0) { //當前連接的本地端口不為0則
? ?? ?uip_conn = NULL;
? ?? ?uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
? ?? ?uip_len = uip_slen = 0;
? ?? ?uip_flags = UIP_POLL;? ? ? ???//詢問應用程序是否有數據要發送
? ?? ?UIP_UDP_APPCALL();//調用應用程序產生數據
? ?? ?goto udp_send;
? ? } else {
? ?? ?goto drop;//本地端口為0,表明沒有建立DUP連接,則
? ? }
??}
#endif

??/* This is where the input processing starts. */
??UIP_STAT(++uip_stat.ip.recv);

??/* Start of IP input header processing code. */
??//檢查IP幀頭中的IP版本及IP頭長度是否符合要
#if UIP_CONF_IPV6
??/* Check validity of the IP header. */
??if((BUF->vtc & 0xf0) != 0x60)??{ /* IP version and header length. */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.vhlerr);
? ? UIP_LOG("ipv6: invalid version.");
? ? goto drop; //不符合:goto drop;丟棄此包
??}
#else /* UIP_CONF_IPV6 */
??/* Check validity of the IP header. others 0x69,0x46 ? */
??if(BUF->vhl != 0x45)??{ /* IP version and header length. */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.vhlerr);
? ? ? ? temp[0]=??BUF->vhl;
? ? ? ? temp[1]='\0';
? ? ? ? UIP_LOG(temp);
? ? UIP_LOG("ip: invalid version or header length.");
? ? goto drop;//不符合:goto drop;丟棄此包
??}
#endif /* UIP_CONF_IPV6 */
??
??/* Check the size of the packet. If the size reported to us in
? ???uip_len is smaller the size reported in the IP header, we assume
? ???that the packet has been corrupted in transit. If the size of
? ???uip_len is larger than the size reported in the IP packet header,
? ???the packet has been padded and we set uip_len to the correct
? ???value.. */

??if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
? ? uip_len = (BUF->len[0] << 8) + BUF->len[1];
#if UIP_CONF_IPV6
? ? uip_len += 40; /* The length reported in the IPv6 header is the
? ? ? ? ? ? ? ?? ?? ? length of the payload that follows the
? ? ? ? ? ? ? ?? ?? ? header. However, uIP uses the uip_len variable
? ? ? ? ? ? ? ?? ?? ? for holding the size of the entire packet,
? ? ? ? ? ? ? ?? ?? ? including the IP header. For IPv4 this is not a
? ? ? ? ? ? ? ?? ?? ? problem as the length field in the IPv4 header
? ? ? ? ? ? ? ?? ?? ? contains the length of the entire packet. But
? ? ? ? ? ? ? ?? ?? ? for IPv6 we need to add the size of the IPv6
? ? ? ? ? ? ? ?? ?? ? header (40 bytes). */
#endif /* UIP_CONF_IPV6 */
??} else {
? ? UIP_LOG("ip: packet shorter than reported in IP header.");
? ? goto drop;
??}

#if !UIP_CONF_IPV6
??/* Check the fragment flag. */
??if((BUF->ipoffset[0] & 0x3f) != 0 ||
? ???BUF->ipoffset[1] != 0) {
#if UIP_REASSEMBLY
? ? uip_len = uip_reass();
? ? if(uip_len == 0) {
? ?? ?goto drop;
? ? }
#else /* UIP_REASSEMBLY */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.fragerr);
? ? UIP_LOG("ip: fragment dropped.");
? ? goto drop;
#endif /* UIP_REASSEMBLY */
??}
#endif /* UIP_CONF_IPV6 */

??if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) {
? ? /* If we are configured to use ping IP address configuration and
? ?? ? hasn't been assigned an IP address yet, we accept all ICMP
? ?? ? packets. */
#if UIP_PINGADDRCONF && !UIP_CONF_IPV6
? ? if(BUF->proto == UIP_PROTO_ICMP) {
? ?? ?UIP_LOG("ip: possible ping config packet received.");
? ?? ?goto icmp_input;
? ? } else {
? ?? ?UIP_LOG("ip: packet dropped since no address assigned.");
? ?? ?goto drop;
? ? }
#endif /* UIP_PINGADDRCONF */

??} else {
? ? /* If IP broadcast support is configured, we check for a broadcast
? ?? ? UDP packet, which may be destined to us. */
#if UIP_BROADCAST
? ? DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum());
? ? if(BUF->proto == UIP_PROTO_UDP &&
? ?? ? uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr)
? ?? ? /*&&
? ? ? ???uip_ipchksum() == 0xffff*/) {
? ?? ?goto udp_input;
? ? }
#endif /* UIP_BROADCAST */
? ? //檢查目的IP地址是否為本機地址
? ? /* Check if the packet is destined for our IP address. */
#if !UIP_CONF_IPV6
? ? if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) {
? ?? ?UIP_STAT(++uip_stat.ip.drop);
? ?? ?goto drop;//不是,丟棄此包
? ? }
#else /* UIP_CONF_IPV6 */
? ? /* For IPv6, packet reception is a little trickier as we need to
? ?? ? make sure that we listen to certain multicast addresses (all
? ?? ? hosts multicast address, and the solicited-node multicast
? ?? ? address) as well. However, we will cheat here and accept all
? ?? ? multicast packets that are sent to the ff02::/16 addresses. */
? ? if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) &&
? ?? ? BUF->destipaddr[0] != HTONS(0xff02)) {
? ?? ?UIP_STAT(++uip_stat.ip.drop);
? ?? ?goto drop;//不是,丟棄此包
? ? }
#endif /* UIP_CONF_IPV6 */
??}

#if !UIP_CONF_IPV6
??if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ???checksum. */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.chkerr);
? ? UIP_LOG("ip: bad checksum.");
? ? goto drop;
??}
#endif /* UIP_CONF_IPV6 */
??//IP上層協議是否為TCP協議?
??if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? ???proceed with TCP input
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? ???processing. */
? ? goto tcp_input;? ? ? ? //進入TCP數據處理模塊
??}

#if UIP_UDP
??if(BUF->proto == UIP_PROTO_UDP) {? ? ? ?? ?//IP上層協議是否為UDP協議?
? ? goto udp_input;? ? ? ? //進入UDP數據處理模塊
??}
#endif /* UIP_UDP */

#if !UIP_CONF_IPV6
??/* ICMPv4 processing code follows. */? ? ? ??
??//不是TCP不是UDP也不是ICMP協議?
??if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? here. */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.protoerr);
? ? UIP_LOG("ip: neither tcp nor icmp.");
? ? goto drop;? ? ? ???//本機只處理UDP、TCP、ICMP數據包,其它包都將丟棄?
??}

#if UIP_PINGADDRCONF
icmp_input: //是ICMP數據包
#endif /* UIP_PINGADDRCONF */
??UIP_STAT(++uip_stat.icmp.recv);
??//ICMP數據包處理部分
??/* ICMP echo (i.e., ping) processing. This is simple, we only change
? ???the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
? ???checksum before we return the packet. */
??if(ICMPBUF->type != ICMP_ECHO) {? ? ? ? //僅僅接收ECHO命令
? ? UIP_STAT(++uip_stat.icmp.drop);
? ? UIP_STAT(++uip_stat.icmp.typeerr);
? ? UIP_LOG("icmp: not icmp echo.");
? ? goto drop;? ? ? ? //若接收到別的命令,則將數據包丟棄。
??}

??/* If we are configured to use ping IP address assignment, we use
? ???the destination IP address of this ping packet and assign it to
? ???ourself. */
#if UIP_PINGADDRCONF
??if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {
? ? uip_hostaddr[0] = BUF->destipaddr[0];
? ? uip_hostaddr[1] = BUF->destipaddr[1];
??}
#endif /* UIP_PINGADDRCONF */
??//若接收到的是ECHO命令則返回包含ECHO_REPLY的ICMP數據包給遠方主機,主要是用來響應ping命令
??ICMPBUF->type = ICMP_ECHO_REPLY;

??if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
? ? ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
??} else {
? ? ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
??}

??/* Swap IP addresses. */
??uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
??uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);

??UIP_STAT(++uip_stat.icmp.sent);
??goto send;

??/* End of IPv4 input header processing code. */
#else /* !UIP_CONF_IPV6 */

??/* This is IPv6 ICMPv6 processing code. */
??DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);

??if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???here. */
? ? UIP_STAT(++uip_stat.ip.drop);
? ? UIP_STAT(++uip_stat.ip.protoerr);
? ? UIP_LOG("ip: neither tcp nor icmp6.");
? ? goto drop;
??}

??UIP_STAT(++uip_stat.icmp.recv);

??/* If we get a neighbor solicitation for our address we should send
? ???a neighbor advertisement message back. */
??if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) {
? ? if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) {

? ?? ?if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) {
? ? ? ? /* Save the sender's address in our neighbor list. */
? ? ? ? uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2]));
? ?? ?}
? ?? ?
? ?? ?/* We should now send a neighbor advertisement back to where the
? ? ? ???neighbor solicication came from. */
? ?? ?ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT;
? ?? ?ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */
? ?? ?
? ?? ?ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0;
? ?? ?
? ?? ?uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr);
? ?? ?uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr);
? ?? ?ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS;
? ?? ?ICMPBUF->options[1] = 1;??/* Options length, 1 = 8 bytes. */
? ?? ?memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr));
? ?? ?ICMPBUF->icmpchksum = 0;
? ?? ?ICMPBUF->icmpchksum = ~uip_icmp6chksum();
? ?? ?goto send;
? ?? ?
? ? }
? ? goto drop;
??} else if(ICMPBUF->type == ICMP6_ECHO) {
? ? /* ICMP echo (i.e., ping) processing. This is simple, we only
? ?? ? change the ICMP type from ECHO to ECHO_REPLY and update the
? ?? ? ICMP checksum before we return the packet. */
??//返回包含ECHO_REPLY的ICMP數據包給遠方主機,主要是用來響應ping命令
? ? ICMPBUF->type = ICMP6_ECHO_REPLY;
? ??
? ? uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
? ? uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
? ? ICMPBUF->icmpchksum = 0;
? ? ICMPBUF->icmpchksum = ~uip_icmp6chksum();
? ??
? ? UIP_STAT(++uip_stat.icmp.sent);
? ? goto send;
??} else {
? ? DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type);
? ? UIP_STAT(++uip_stat.icmp.drop);
? ? UIP_STAT(++uip_stat.icmp.typeerr);
? ? UIP_LOG("icmp: unknown ICMP message.");
? ? goto drop;
??}

??/* End of IPv6 ICMP processing. */
??
#endif /* !UIP_CONF_IPV6 */

#if UIP_UDP
??/* UDP input processing. */
udp_input:
??/* UDP processing is really just a hack. We don't do anything to the
? ???UDP/IP headers, but let the UDP application do all the hard
? ???work. If the application sets uip_slen, it has a packet to
? ???send. */
#if UIP_UDP_CHECKSUMS
??uip_len = uip_len - UIP_IPUDPH_LEN;
??uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
??if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) {? ? ? ?? ?//根據要求校驗UDP
? ? UIP_STAT(++uip_stat.udp.drop);
? ? UIP_STAT(++uip_stat.udp.chkerr);
? ? UIP_LOG("udp: bad checksum.");
? ? goto drop;
??}
#else /* UIP_UDP_CHECKSUMS */
??uip_len = uip_len - UIP_IPUDPH_LEN;
#endif /* UIP_UDP_CHECKSUMS */
//在UDP連接列表中尋找接收到的數據包是否屬于列表中的連接
??/* Demultiplex this UDP packet between the UDP "connections". */
??for(uip_udp_conn = &uip_udp_conns[0];
? ?? ?uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];
? ?? ?++uip_udp_conn) {
? ? /* If the local UDP port is non-zero, the connection is considered
? ?? ? to be used. If so, the local port number is checked against the
? ?? ? destination port number in the received packet. If the two port
? ?? ? numbers match, the remote port number is checked if the
? ?? ? connection is bound to a remote port. Finally, if the
? ?? ? connection is bound to a remote IP address, the source IP
? ?? ? address of the packet is checked. */
? ? if(uip_udp_conn->lport != 0 &&
? ?? ? UDPBUF->destport == uip_udp_conn->lport &&
? ?? ? (uip_udp_conn->rport == 0 ||
? ?? ???UDPBUF->srcport == uip_udp_conn->rport) &&
? ?? ? (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
? ? ? ? uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
? ? ? ? uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) {
? ?? ?goto udp_found;
? ? }
??}
??UIP_LOG("udp: no matching connection found");
??goto drop;??//如果不是則
??
udp_found:
??uip_conn = NULL;
??uip_flags = UIP_NEWDATA;? ? ? ? //接收到數據
??uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN]; //指向接收到的UDP包的數據部分
??uip_slen = 0;
??UIP_UDP_APPCALL();//使應用程序處理接收到的數據
udp_send:
??if(uip_slen == 0) { //表明沒有數據要發送
? ? goto drop;
??}
??//計算UDP數據包長度,填充UDP、IP幀頭中的數據長度及相關選項
??uip_len = uip_slen + UIP_IPUDPH_LEN;

#if UIP_CONF_IPV6
??/* For IPv6, the IP length field does not include the IPv6 IP header
? ???length. */
??BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
??BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
??BUF->len[0] = (uip_len >> 8);
??BUF->len[1] = (uip_len & 0xff);
#endif /* UIP_CONF_IPV6 */

??BUF->ttl = uip_udp_conn->ttl;
??BUF->proto = UIP_PROTO_UDP;

??UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN);
??UDPBUF->udpchksum = 0;

??BUF->srcport??= uip_udp_conn->lport;
??BUF->destport = uip_udp_conn->rport;

??uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
??uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr);
? ?
??uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN];
??//根據要求計算校驗和
#if UIP_UDP_CHECKSUMS
??/* Calculate UDP checksum. */
??UDPBUF->udpchksum = ~(uip_udpchksum());
??if(UDPBUF->udpchksum == 0) {
? ? UDPBUF->udpchksum = 0xffff;
??}
#endif /* UIP_UDP_CHECKSUMS */
??
??goto ip_send_nolen; //發送UDP數據包
#endif /* UIP_UDP */
??
??/* TCP input processing. */
tcp_input:
??UIP_STAT(++uip_stat.tcp.recv);

??/* Start of TCP input header processing code. */
??//檢查TCP校驗和,若正確向下繼續,若錯誤則丟棄此包直接返回
??if(uip_tcpchksum() != 0xffff) {? ?/* Compute and check the TCP
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?? ???checksum. */
? ? UIP_STAT(++uip_stat.tcp.drop);
? ? UIP_STAT(++uip_stat.tcp.chkerr);
? ? UIP_LOG("tcp: bad checksum.");
? ? goto drop;
??}
??//在TCP連接列表uip_conns中輪詢,檢查接收到的TCP數據包是否已經建立連接
??//(通過逐個比較源端口、目的端口和源IP是否與鏈接列表中的相同)
??/* Demultiplex this segment. */
??/* First check any active connections. */
??for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1];
? ?? ?++uip_connr) {
? ? if(uip_connr->tcpstateflags != UIP_CLOSED &&
? ?? ? BUF->destport == uip_connr->lport &&
? ?? ? BUF->srcport == uip_connr->rport &&
? ?? ? uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) {
? ?? ?goto found;//若找到
? ? }
??}

??/* If we didn't find and active connection that expected the packet,
? ???either this packet is an old duplicate, or this is a SYN packet
? ???destined for a connection in LISTEN. If the SYN flag isn't set,
? ???it is an old packet and we send a RST. */
??if((BUF->flags & TCP_CTL) != TCP_SYN) {??//沒有找到則檢查接收到的TCP數據包中是否含有SYN請求建立連接標志
? ? goto reset;? ? ? ???//若沒有則,發送RST+ACK斷開連接
??}
??
??tmp16 = BUF->destport;

??/* Next, check listening connections. */
??for(c = 0; c < UIP_LISTENPORTS; ++c) {
? ? if(tmp16 == uip_listenports[c])
? ?? ?goto found_listen;//若有則檢查uip_listenports監聽列表,若TCP數據包目的端口在監聽列表中則
??}
//若不在監聽列表中則向下執行,進入 reset;發送RST+ACK斷開連接?
??/* No matching connection found, so we send a RST packet. */
??UIP_STAT(++uip_stat.tcp.synrst);
reset:

??/* We do not send resets in response to resets. */
??if (BUF->flags & TCP_RST) {? ? ? ? //接收到的是RST斷開連接包,則直接丟包返回
? ? ? ? //uip_arp_close(BUF->srcipaddr);?
? ? ? ???//增加對TCP_RST的響應處理,發送TCP_ACK
? ? ? ???UIP_LOG("tcp-1: got reset, aborting connection.");
? ?/* uip_connr->tcpstateflags = UIP_CLOSED;
? ? UIP_LOG("tcp-1: got reset, aborting connection.");
? ? uip_flags = UIP_ABORT;
? ? UIP_APPCALL();
//? ? ? ? uip_arp_close(uip_connr->ripaddr);
//增加對TCP_RST的響應處理,發送TCP_ACK
? ? BUF->flags = TCP_ACK;? ? ? ??
? ? ? ? goto tcp_send_nodata;*/
? ? goto drop;
??}

??UIP_STAT(++uip_stat.tcp.rst);
??//設置RST+ACK標志,填充適當的TCP幀頭
??BUF->flags = TCP_RST | TCP_ACK;
??uip_len = UIP_IPTCPH_LEN;
??BUF->tcpoffset = 5 << 4;

??/* Flip the seqno and ackno fields in the TCP header. */
??c = BUF->seqno[3];
??BUF->seqno[3] = BUF->ackno[3];
??BUF->ackno[3] = c;
??
??c = BUF->seqno[2];
??BUF->seqno[2] = BUF->ackno[2];
??BUF->ackno[2] = c;
??
??c = BUF->seqno[1];
??BUF->seqno[1] = BUF->ackno[1];
??BUF->ackno[1] = c;
??
??c = BUF->seqno[0];
??BUF->seqno[0] = BUF->ackno[0];
??BUF->ackno[0] = c;

??/* We also have to increase the sequence number we are
? ???acknowledging. If the least significant byte overflowed, we need
? ???to propagate the carry to the other bytes as well. */
??if(++BUF->ackno[3] == 0) {
? ? if(++BUF->ackno[2] == 0) {
? ?? ?if(++BUF->ackno[1] == 0) {
? ? ? ? ++BUF->ackno[0];
? ?? ?}
? ? }
??}

??/* Swap port numbers. */
??tmp16 = BUF->srcport;
??BUF->srcport = BUF->destport;
??BUF->destport = tmp16;
??
??/* Swap IP addresses. */
??uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
??uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
??
??/* And send out the RST packet! */
??goto tcp_send_noconn;//發送TCP數據

??/* This label will be jumped to if we matched the incoming packet
? ???with a connection in LISTEN. In that case, we should create a new
? ???connection and send a SYNACK in return. */
found_listen:? ? ? ? //被動連接
??/* First we check if there are any connections avaliable. Unused
? ???connections are kept in the same table as used connections, but
? ???unused ones have the tcpstate set to CLOSED. Also, connections in
? ???TIME_WAIT are kept track of and we'll use the oldest one if no
? ???CLOSED connections are found. Thanks to Eddie C. Dost for a very
? ???nice algorithm for the TIME_WAIT search. */
??uip_connr = 0;
??for(c = 0; c < UIP_CONNS; ++c) {
? ? if(uip_conns[c].tcpstateflags == UIP_CLOSED) { //從鏈接列表中找出一個空鏈接或剩余生存時間最短的連接
? ?? ?uip_connr = &uip_conns[c];
? ?? ?break;
? ? }
? ? if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) {
? ?? ?if(uip_connr == 0 ||
? ? ? ???uip_conns[c].timer > uip_connr->timer) {
? ? ? ? uip_connr = &uip_conns[c];
? ?? ?}
? ? }
??}

??if(uip_connr == 0) {
? ? /* All connections are used already, we drop packet and hope that
? ?? ? the remote end will retransmit the packet at a time when we
? ?? ? have more spare connections. */
? ? UIP_STAT(++uip_stat.tcp.syndrop);
? ? UIP_LOG("tcp: found no unused connections.");
? ? goto drop;
??}
??uip_conn = uip_connr;? ? ? ? //將找到的鏈接列表根據接收到的TCP數據包進行初始化
??
??/* Fill in the necessary fields for the new connection. */
??uip_connr->rto = uip_connr->timer = UIP_RTO;
??uip_connr->sa = 0;
??uip_connr->sv = 4;
??uip_connr->nrtx = 0;
??uip_connr->lport = BUF->destport;
??uip_connr->rport = BUF->srcport;
??uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr);
??uip_connr->tcpstateflags = UIP_SYN_RCVD;//設置TCP狀態為UIP_SYN_RCVD

??uip_connr->snd_nxt[0] = iss[0];??// 第二次握手用的seqno賦值,該值是有暫定。
??uip_connr->snd_nxt[1] = iss[1];
??uip_connr->snd_nxt[2] = iss[2];
??uip_connr->snd_nxt[3] = iss[3];
??uip_connr->len = 1;

??/* rcv_nxt should be the seqno from the incoming packet + 1. */
??uip_connr->rcv_nxt[3] = BUF->seqno[3];? ?// 將對方第一次握手發送的seqno+1賦值給
??uip_connr->rcv_nxt[2] = BUF->seqno[2];? ?// 第二次握手用的ackno
??uip_connr->rcv_nxt[1] = BUF->seqno[1];
??uip_connr->rcv_nxt[0] = BUF->seqno[0];
??uip_add_rcv_nxt(1);
//分析TCP的最大段長度
??/* Parse the TCP MSS option, if present. */
??if((BUF->tcpoffset & 0xf0) > 0x50) {
? ? for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
? ?? ?opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c];
? ?? ?if(opt == TCP_OPT_END) {
? ? ? ? /* End of options. */
? ? ? ? break;
? ?? ?} else if(opt == TCP_OPT_NOOP) {
? ? ? ? ++c;
? ? ? ? /* NOP option. */
? ?? ?} else if(opt == TCP_OPT_MSS &&
? ? ? ? ? ? ? ? uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
? ? ? ? /* An MSS option with the right option length. */
? ? ? ? tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
? ? ? ?? ?(u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c];
? ? ? ? uip_connr->initialmss = uip_connr->mss =
? ? ? ?? ?tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
? ? ? ??
? ? ? ? /* And we are done processing options. */
? ? ? ? break;
? ?? ?} else {
? ? ? ? /* All other options have a length field, so that we easily
? ? ? ?? ? can skip past them. */
? ? ? ? if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
? ? ? ?? ?/* If the length field is zero, the options are malformed
? ? ? ?? ?? ?and we don't process them further. */
? ? ? ?? ?break;
? ? ? ? }
? ? ? ? c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
? ?? ?}
? ? }
??}
//發送ACK?
??/* Our response will be a SYNACK. */
#if UIP_ACTIVE_OPEN
tcp_send_synack:
??BUF->flags = TCP_ACK;//設置ACK標志
??
tcp_send_syn:
??BUF->flags |= TCP_SYN; //設置SYN標志
#else /* UIP_ACTIVE_OPEN */
tcp_send_synack:
??BUF->flags = TCP_SYN | TCP_ACK;
#endif /* UIP_ACTIVE_OPEN */
??//填充TCP選項中最大報文段長度MSS
??/* We send out the TCP Maximum Segment Size option with our
? ???SYNACK. */
??BUF->optdata[0] = TCP_OPT_MSS;
??BUF->optdata[1] = TCP_OPT_MSS_LEN;
??BUF->optdata[2] = (UIP_TCP_MSS) / 256;
??BUF->optdata[3] = (UIP_TCP_MSS) & 255;
??uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN;
??BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4;
??goto tcp_send;

??/* This label will be jumped to if we found an active connection. */
found:? ? ? ?? ?//主動鏈接部分
??uip_conn = uip_connr;
??uip_flags = 0;
??/* We do a very naive form of TCP reset processing; we just accept
? ???any RST and kill our connection. We should in fact check if the
? ???sequence number of this reset is wihtin our advertised window
? ???before we accept the reset. */
??if(BUF->flags & TCP_RST) {//若接收到的是RST數據包,則將本連接狀態置為UIP_CLOSED
? ? uip_connr->tcpstateflags = UIP_CLOSED;
? ? UIP_LOG("tcp: got reset, aborting connection.");
? ? uip_flags = UIP_ABORT;
? ? UIP_APPCALL();? ? ? ???//通知應用程序處理連接斷開請求。然后丟棄此包,直接返回
? ? goto drop;
??}
??/* Calculated the length of the data, if the application has sent
? ???any data to us. */
??c = (BUF->tcpoffset >> 4) << 2;
??/* uip_len will contain the length of the actual TCP data. This is
? ???calculated by subtracing the length of the TCP header (in
? ???c) and the length of the IP header (20 bytes). */
??uip_len = uip_len - c - UIP_IPH_LEN;

??/* First, check if the sequence number of the incoming packet is
? ???what we're expecting next. If not, we send out an ACK with the
? ???correct numbers in. */
??if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) &&
? ?? ? ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) {
? ? if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) &&
? ?? ? (BUF->seqno[0] != uip_connr->rcv_nxt[0] ||
? ? ? ? BUF->seqno[1] != uip_connr->rcv_nxt[1] ||
? ? ? ? BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
? ? ? ? BUF->seqno[3] != uip_connr->rcv_nxt[3])) { //檢查接收到的數據包中的數據編號是否為自己等在等待的數據編號
? ?? ?goto tcp_send_ack;? ?//若不是則發送自己期望的數據編號的數據,即請求重傳
? ? }
??}
??//檢查接收到的數據包中是否包含ACK
??/* Next, check if the incoming segment acknowledges any outstanding
? ???data. If so, we update the sequence number, reset the length of
? ???the outstanding data, calculate RTT estimations, and reset the
? ???retransmission timer. */
??if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) {? ?// 收到了ACK幀,同時有待確認的數據
? ?// uip_connr->len 用于記錄本次發送的字節數
? ?// 在第三次握手中uip_connr->len = 1
? ? uip_add32(uip_connr->snd_nxt, uip_connr->len);// 計算下一次發送的第一個字節的序列號
? ? ? ???
? ? if(BUF->ackno[0] == uip_acc32[0] &&
? ?? ? BUF->ackno[1] == uip_acc32[1] &&
? ?? ? BUF->ackno[2] == uip_acc32[2] &&
? ?? ? BUF->ackno[3] == uip_acc32[3]) {
? ?? ?/* Update sequence number. */
? ?? ?uip_connr->snd_nxt[0] = uip_acc32[0];? ? ? ?? ?//更新發送數據序列的編號,使之可以發送后續數據
? ?? ?uip_connr->snd_nxt[1] = uip_acc32[1];
? ?? ?uip_connr->snd_nxt[2] = uip_acc32[2];
? ?? ?uip_connr->snd_nxt[3] = uip_acc32[3];
? ? ? ??
? ? ? ? // 計算RTT時間,重新設置RTT時間
? ?? ?/* Do RTT estimation, unless we have done retransmissions. */
? ?? ?if(uip_connr->nrtx == 0) {
? ? ? ? signed char m;
? ? ? ? m = uip_connr->rto - uip_connr->timer;
? ? ? ? /* This is taken directly from VJs original code in his paper */
? ? ? ? m = m - (uip_connr->sa >> 3);
? ? ? ? uip_connr->sa += m;
? ? ? ? if(m < 0) {
? ? ? ?? ?m = -m;
? ? ? ? }
? ? ? ? m = m - (uip_connr->sv >> 2);
? ? ? ? uip_connr->sv += m;
? ? ? ? uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv;

? ?? ?}
? ?? ?/* Set the acknowledged flag. */
? ?? ?uip_flags = UIP_ACKDATA;//表明接收到ACK
? ?? ?/* Reset the retransmission timer. */
? ?? ?uip_connr->timer = uip_connr->rto;

? ?? ?/* Reset length of outstanding data. */
? ?? ?uip_connr->len = 0; //表明等待ACK的數據長度為0,即可以發送其它數據?
? ? }
? ? ? ? else
? ? ? ? {
??? ?? ???//當MCU作為TCP服務器時,如果ackno 與 uip_acc32
? ?? ?? ? //不一致時,會引起無法重新連接或發送數據, 當時等待發起連接端情動TCP_RST之后,允許重新連接
? ?? ?? ?//需要在用戶應用里如何處理? 或這里增加如何處理?
? ? ? ?? ? UIP_LOG("tcp: snd_nxt ,ackno reset ??? .");
? ? ? ? }?
??}
//檢查TCP狀態機制
??/* Do different things depending on in what state the connection is. */
??switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
? ? /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not
? ? ? ? implemented, since we force the application to close when the
? ? ? ? peer sends a FIN (hence the application goes directly from
? ? ? ? ESTABLISHED to LAST_ACK). */
??case UIP_SYN_RCVD: //是否接收到對自己發送SYN的ACK確認
? ? /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and
? ?? ? we are waiting for an ACK that acknowledges the data we sent
? ?? ? out the last time. Therefore, we want to have the UIP_ACKDATA
? ?? ? flag set. If so, we enter the ESTABLISHED state. */
? ? if(uip_flags & UIP_ACKDATA) {
? ?? ?uip_connr->tcpstateflags = UIP_ESTABLISHED; //若是,進入ESTABLISHED狀態
? ?? ?uip_flags = UIP_CONNECTED; //連接成功
? ?? ?uip_connr->len = 0;
? ?? ?if(uip_len > 0) {? ? ? ???//檢查數據包長度是否包含數據部分
? ?? ???uip_flags |= UIP_NEWDATA; //是
? ?? ???uip_add_rcv_nxt(uip_len);
? ?? ?}
? ?? ?uip_slen = 0;
? ?? ?UIP_APPCALL(); //處理剛建立的連接和新接收到數據
? ?? ?goto appsend;
? ? }
? ? goto drop;//若不是則丟包返回;
#if UIP_ACTIVE_OPEN
??case UIP_SYN_SENT:
? ? /* In SYN_SENT, we wait for a SYNACK that is sent in response to
? ?? ? our SYN. The rcv_nxt is set to sequence number in the SYNACK
? ?? ? plus one, and we send an ACK. We move into the ESTABLISHED
? ?? ? state. */
? ? if((uip_flags & UIP_ACKDATA) &&
? ?? ? (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) {? ? ? ? //如果接收到ACK且為SYN+ACK

? ?? ?/* Parse the TCP MSS option, if present. */
? ?? ?if((BUF->tcpoffset & 0xf0) > 0x50) { //檢查TCP擴展選項,如果有擴展選項從中取出MSS信息
? ? ? ? for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
? ? ? ?? ?opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c];
? ? ? ?? ?if(opt == TCP_OPT_END) {
? ? ? ?? ???/* End of options. */
? ? ? ?? ???break;
? ? ? ?? ?} else if(opt == TCP_OPT_NOOP) {
? ? ? ?? ???++c;
? ? ? ?? ???/* NOP option. */
? ? ? ?? ?} else if(opt == TCP_OPT_MSS &&
? ? ? ? ? ? ? ?? ???uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
? ? ? ?? ???/* An MSS option with the right option length. */
? ? ? ?? ???tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
? ? ? ?? ?? ? uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
? ? ? ?? ???uip_connr->initialmss =
? ? ? ?? ?? ? uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;

? ? ? ?? ???/* And we are done processing options. */
? ? ? ?? ???break;
? ? ? ?? ?} else {
? ? ? ?? ???/* All other options have a length field, so that we easily
? ? ? ?? ?? ???can skip past them. */
? ? ? ?? ???if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
? ? ? ?? ?? ? /* If the length field is zero, the options are malformed
? ? ? ? ? ? ? ???and we don't process them further. */
? ? ? ?? ?? ? break;
? ? ? ?? ???}
? ? ? ?? ???c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
? ? ? ?? ?}
? ? ? ? }
? ?? ?}
? ?? ?uip_connr->tcpstateflags = UIP_ESTABLISHED; //進入ESTABLISHED狀態
? ?? ?//設置接收編號
? ? ? ?? ?uip_connr->rcv_nxt[0] = BUF->seqno[0];// 用于第三次握手的ackno,將收到的
? ?? ?uip_connr->rcv_nxt[1] = BUF->seqno[1]; // 第二次握手中的seqno+1賦值給第三
? ?? ?uip_connr->rcv_nxt[2] = BUF->seqno[2]; // 次握手中的ackno
? ?? ?uip_connr->rcv_nxt[3] = BUF->seqno[3];
? ?? ?uip_add_rcv_nxt(1);? ?// uip_connr->rcv_nxt[3] = uip_connr->rcv_nxt[3]+1
? ?? ?uip_flags = UIP_CONNECTED | UIP_NEWDATA; //設置接收編號
? ?? ?uip_connr->len = 0;
? ?? ?uip_len = 0;
? ?? ?uip_slen = 0;
? ?? ?UIP_APPCALL();//處理剛建立的連接和新接收到數據
? ?? ?goto appsend;
? ? }
? ? ? ? //沒有接收到ACK且為SYN+ACK則
? ? /* Inform the application that the connection failed */
? ? uip_flags = UIP_ABORT;//終止連接
? ? UIP_APPCALL();
? ? /* The connection is closed after we send the RST */
? ? uip_conn->tcpstateflags = UIP_CLOSED; //關閉TCP連接
? ? ? ? //uip_arp_close(uip_connr->ripaddr);
? ? goto reset;
#endif /* UIP_ACTIVE_OPEN */
? ??
??case UIP_ESTABLISHED:
? ? /* In the ESTABLISHED state, we call upon the application to feed
? ? data into the uip_buf. If the UIP_ACKDATA flag is set, the
? ? application should put new data into the buffer, otherwise we are
? ? retransmitting an old segment, and the application should put that
? ? data into the buffer.

? ? If the incoming packet is a FIN, we should close the connection on
? ? this side as well, and we send out a FIN and enter the LAST_ACK
? ? state. We require that there is no outstanding data; otherwise the
? ? sequence numbers will be screwed up. */
? ? ? ? //接收到遠方主機的FIN請求
? ? if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
? ?? ?if(uip_outstanding(uip_connr)) {
? ? ? ? goto drop;
? ?? ?}
//計算ackno:
? ?? ?uip_add_rcv_nxt(1 + uip_len);? ? ? ? //uip_connr->rcv_nxt+1+uip_len,其中uip_len是接收到的數據長度。
? ?? ?uip_flags |= UIP_CLOSE;? ? ? ? //關閉TCP連接
? ?? ?if(uip_len > 0) {
? ? ? ? uip_flags |= UIP_NEWDATA;//如果接收到的數據包中還包含有數據
? ?? ?}
? ?? ?UIP_APPCALL();
? ?? ?uip_connr->len = 1;
? ?? ?uip_connr->tcpstateflags = UIP_LAST_ACK;
? ?? ?uip_connr->nrtx = 0;
? ? tcp_send_finack:
? ?? ?BUF->flags = TCP_FIN | TCP_ACK;//發送TCP_FIN +TCP_ACK,關閉連接
? ?? ?goto tcp_send_nodata;
? ? }

? ? /* Check the URG flag. If this is set, the segment carries urgent
? ?? ? data that we must pass to the application. */
? ? if((BUF->flags & TCP_URG) != 0) {
#if UIP_URGDATA > 0
? ?? ?uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
? ?? ?if(uip_urglen > uip_len) {
? ? ? ? /* There is more urgent data in the next segment to come. */
? ? ? ? uip_urglen = uip_len;
? ?? ?}
? ?? ?uip_add_rcv_nxt(uip_urglen);
? ?? ?uip_len -= uip_urglen;
? ?? ?uip_urgdata = uip_appdata;
? ?? ?uip_appdata += uip_urglen;
? ? } else {
? ?? ?uip_urglen = 0;
#else /* UIP_URGDATA > 0 */
? ?? ?uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]);
? ?? ?uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
#endif /* UIP_URGDATA > 0 */
? ? }

? ? /* If uip_len > 0 we have TCP data in the packet, and we flag this
? ?? ? by setting the UIP_NEWDATA flag and update the sequence number
? ?? ? we acknowledge. If the application has stopped the dataflow
? ?? ? using uip_stop(), we must not accept any data packets from the
? ?? ? remote host. */
? ? if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
? ?? ?uip_flags |= UIP_NEWDATA;
? ?? ?uip_add_rcv_nxt(uip_len);
? ? }

? ? /* Check if the available buffer space advertised by the other end
? ?? ? is smaller than the initial MSS for this connection. If so, we
? ?? ? set the current MSS to the window size to ensure that the
? ?? ? application does not send more data than the other end can
? ?? ? handle.

? ?? ? If the remote host advertises a zero window, we set the MSS to
? ?? ? the initial MSS so that the application will send an entire MSS
? ?? ? of data. This data will not be acknowledged by the receiver,
? ?? ? and the application will retransmit it. This is called the
? ?? ? "persistent timer" and uses the retransmission mechanim.
? ? */
? ? tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
? ? if(tmp16 > uip_connr->initialmss ||
? ?? ? tmp16 == 0) {
? ?? ?tmp16 = uip_connr->initialmss;
? ? }
? ? uip_connr->mss = tmp16;

? ? /* If this packet constitutes an ACK for outstanding data (flagged
? ?? ? by the UIP_ACKDATA flag, we should call the application since it
? ?? ? might want to send more data. If the incoming packet had data
? ?? ? from the peer (as flagged by the UIP_NEWDATA flag), the
? ?? ? application must also be notified.

? ?? ? When the application is called, the global variable uip_len
? ?? ? contains the length of the incoming data. The application can
? ?? ? access the incoming data through the global pointer
? ?? ? uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN
? ?? ? bytes into the uip_buf array.

? ?? ? If the application wishes to send any data, this data should be
? ?? ? put into the uip_appdata and the length of the data should be
? ?? ? put into uip_len. If the application don't have any data to
? ?? ? send, uip_len must be set to 0. */
? ? if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {//如果接收到的數據狀態
? ?? ?uip_slen = 0;
? ?? ?UIP_APPCALL(); //處理接收到的包

? ? appsend:
? ?? ?
? ?? ?if(uip_flags & UIP_ABORT) { //如果是終止連接
? ? ? ? uip_slen = 0;
? ? ? ? uip_connr->tcpstateflags = UIP_CLOSED;//終止連接
? ? ? ? BUF->flags = TCP_RST | TCP_ACK;? ? ? ? //發送RST+ACK關閉連接
? ? ? ? goto tcp_send_nodata;
? ?? ?}

? ?? ?if(uip_flags & UIP_CLOSE) { //如果是正常關閉連接
? ? ? ? uip_slen = 0;
? ? ? ? uip_connr->len = 1;
? ? ? ? uip_connr->tcpstateflags = UIP_FIN_WAIT_1; //進入等待關閉狀態
? ? ? ? uip_connr->nrtx = 0;
? ? ? ? BUF->flags = TCP_FIN | TCP_ACK;//發送FIN+ACK告知對方關閉連接
? ? ? ? goto tcp_send_nodata;
? ?? ?}

? ?? ?/* If uip_slen > 0, the application has data to be sent. */
? ?? ?if(uip_slen > 0) {??//如果有數據要發送則設置發送數據的長度

? ? ? ? /* If the connection has acknowledged data, the contents of
? ? ? ?? ? the ->len variable should be discarded. */
? ? ? ? if((uip_flags & UIP_ACKDATA) != 0) {
? ? ? ?? ?uip_connr->len = 0;
? ? ? ? }

? ? ? ? /* If the ->len variable is non-zero the connection has
? ? ? ?? ? already data in transit and cannot send anymore right
? ? ? ?? ? now. */
? ? ? ? if(uip_connr->len == 0) {

? ? ? ?? ?/* The application cannot send more than what is allowed by
? ? ? ?? ?? ?the mss (the minumum of the MSS and the available
? ? ? ?? ?? ?window). */
? ? ? ?? ?if(uip_slen > uip_connr->mss) {
? ? ? ?? ???uip_slen = uip_connr->mss;
? ? ? ?? ?}

? ? ? ?? ?/* Remember how much data we send out now so that we know
? ? ? ?? ?? ?when everything has been acknowledged. */
? ? ? ?? ?uip_connr->len = uip_slen;
? ? ? ? } else {

? ? ? ?? ?/* If the application already had unacknowledged data, we
? ? ? ?? ?? ?make sure that the application does not send (i.e.,
? ? ? ?? ?? ?retransmit) out more than it previously sent out. */
? ? ? ?? ?uip_slen = uip_connr->len;
? ? ? ? }
? ?? ?}
? ?? ?uip_connr->nrtx = 0;
? ? apprexmit:
? ?? ?uip_appdata = uip_sappdata;
? ?? ?
? ?? ?/* If the application has data to be sent, or if the incoming
? ?? ?? ?packet had new data in it, we must send out a packet. */
? ?? ?if(uip_slen > 0 && uip_connr->len > 0) {? ? ? ? //發送PSH_ACK數據包;
? ? ? ? /* Add the length of the IP and TCP headers. */
? ? ? ? uip_len = uip_connr->len + UIP_TCPIP_HLEN;
? ? ? ? /* We always set the ACK flag in response packets. */
? ? ? ? BUF->flags = TCP_ACK | TCP_PSH;
? ? ? ? /* Send the packet. */
? ? ? ? goto tcp_send_noopts;
? ?? ?}
? ?? ?/* If there is no data to send, just send out a pure ACK if
? ? ? ???there is newdata. */
? ?? ?if(uip_flags & UIP_NEWDATA) {//僅僅是發送ACK
? ? ? ? uip_len = UIP_TCPIP_HLEN;
? ? ? ? BUF->flags = TCP_ACK; //沒有數據要發送則發送對接收到數據的ACK
? ? ? ? goto tcp_send_noopts;
? ?? ?}
? ? }
? ? goto drop;
??case UIP_LAST_ACK:
? ? /* We can close this connection if the peer has acknowledged our
? ?? ? FIN. This is indicated by the UIP_ACKDATA flag. */
? ? if(uip_flags & UIP_ACKDATA) { //接收到對本機發送的FIN的ACK確認
? ?? ?uip_connr->tcpstateflags = UIP_CLOSED; //將連接置為關閉狀態
? ?? ?uip_flags = UIP_CLOSE;
? ?? ?UIP_APPCALL();? ? ? ? //通知應用程序連接已經斷開
? ? }
? ? break;
? ??
??case UIP_FIN_WAIT_1:
? ? /* The application has closed the connection, but the remote host
? ?? ? hasn't closed its end yet. Thus we do nothing but wait for a
? ?? ? FIN from the other side. */
? ? if(uip_len > 0) { //此時本機已經關閉連接等待對方關閉連接,如果接收到數據并不處理,僅僅將接收到數據包數目加一
? ?? ?uip_add_rcv_nxt(uip_len);
? ? }
? ? if(BUF->flags & TCP_FIN) { //如果接收到FIN請求
? ?? ?if(uip_flags & UIP_ACKDATA) {? ? ? ? //接收到對本機發送FIN的確認則將連接狀態置為
? ? ? ? uip_connr->tcpstateflags = UIP_TIME_WAIT;
? ? ? ? uip_connr->timer = 0;
? ? ? ? uip_connr->len = 0;
? ?? ?} else {
? ? ? ? uip_connr->tcpstateflags = UIP_CLOSING;? ? ? ? //將連接狀態置為
? ?? ?}
? ?? ?uip_add_rcv_nxt(1);
? ?? ?uip_flags = UIP_CLOSE;//通知應用程序有一方已經關閉連接
? ?? ?UIP_APPCALL();
? ?? ?goto tcp_send_ack;
? ? } else if(uip_flags & UIP_ACKDATA) { //僅僅接收到ACK則設置連接狀態標志
? ?? ?uip_connr->tcpstateflags = UIP_FIN_WAIT_2; // 進入等待對方關閉階段
? ?? ?uip_connr->len = 0;
? ?? ?goto drop;
? ? }
? ? if(uip_len > 0) { //表明接收到數據包
? ?? ?goto tcp_send_ack; //發送對接收到數據的確認ACK
? ? }
? ? goto drop;
? ?? ?
??case UIP_FIN_WAIT_2:
? ? if(uip_len > 0) { //此時本機已經關閉連接等待對方關閉連接,如果接收到數據并不處理,僅僅將接收到數據包數目加一
? ?? ?uip_add_rcv_nxt(uip_len);
? ? }
? ? if(BUF->flags & TCP_FIN) {//如果接收到對方發送的FIN請求
? ?? ?uip_connr->tcpstateflags = UIP_TIME_WAIT;//進入超時關閉狀態
? ?? ?uip_connr->timer = 0;
? ?? ?uip_add_rcv_nxt(1);
? ?? ?uip_flags = UIP_CLOSE;
? ?? ?UIP_APPCALL();//通知應用程序有一方已經關閉連接?
? ?? ?goto tcp_send_ack;
? ? }
? ? if(uip_len > 0) { //表明接收到數據包
? ?? ?goto tcp_send_ack;//發送對接收到數據的確認ACK
? ? }
? ? goto drop;

??case UIP_TIME_WAIT:
? ? goto tcp_send_ack;
? ??
??case UIP_CLOSING:
? ? if(uip_flags & UIP_ACKDATA) { //接收到對FIN的ACK
? ?? ?uip_connr->tcpstateflags = UIP_TIME_WAIT;? ? ? ? //連接進入超時等待狀態
? ?? ?uip_connr->timer = 0;
? ? }
??}
??goto drop;
??

??/* We jump here when we are ready to send the packet, and just want
? ???to set the appropriate TCP sequence numbers in the TCP header. */
tcp_send_ack:
??BUF->flags = TCP_ACK;//設置ACK標志
tcp_send_nodata:
??uip_len = UIP_IPTCPH_LEN;? ? ? ? //將長度設為幀頭長度,不包含數據
tcp_send_noopts:
??BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4;? ? ? ???//將選項長度設為0
tcp_send:? ? ? ? //發送自己期望的數據編號的數據,即請求重發送自己期望的數據編號的數據,即請求重傳
??/* We're done with the input processing. We are now ready to send a
? ???reply. Our job is to fill in all the fields of the TCP and IP
? ???headers before calculating the checksum and finally send the
? ???packet. */
//寫入序號值, must do !!!?
//填充TCP幀頭確認編號和發送編號,IP地址和端口號
??BUF->ackno[0] = uip_connr->rcv_nxt[0];
??BUF->ackno[1] = uip_connr->rcv_nxt[1];
??BUF->ackno[2] = uip_connr->rcv_nxt[2];
??BUF->ackno[3] = uip_connr->rcv_nxt[3];
??
??BUF->seqno[0] = uip_connr->snd_nxt[0];
??BUF->seqno[1] = uip_connr->snd_nxt[1];
??BUF->seqno[2] = uip_connr->snd_nxt[2];
??BUF->seqno[3] = uip_connr->snd_nxt[3];

??BUF->proto = UIP_PROTO_TCP;
??
??BUF->srcport??= uip_connr->lport;
??BUF->destport = uip_connr->rport;

??uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
??uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr);

??if(uip_connr->tcpstateflags & UIP_STOPPED) { //要求暫停發送數據則將接收窗口設為0;禁止對方往自己發送數據
? ? /* If the connection has issued uip_stop(), we advertise a zero
? ?? ? window so that the remote host will stop sending data. */
? ? BUF->wnd[0] = BUF->wnd[1] = 0;
??} else {
? ? BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8);
? ? BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff);
??}

tcp_send_noconn:
??BUF->ttl = UIP_TTL; //設置TCP包生存時間,傳送的數據的長度
#if UIP_CONF_IPV6
??/* For IPv6, the IP length field does not include the IPv6 IP header
? ???length. */
??BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
??BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
??BUF->len[0] = (uip_len >> 8);
??BUF->len[1] = (uip_len & 0xff);
#endif /* UIP_CONF_IPV6 */

??BUF->urgp[0] = BUF->urgp[1] = 0;
??
??/* Calculate TCP checksum. */
??BUF->tcpchksum = 0;
??BUF->tcpchksum = ~(uip_tcpchksum()); //)計算TCP校驗和
??
ip_send_nolen:
? ?//設置IP幀頭中的各個選項
#if UIP_CONF_IPV6
??BUF->vtc = 0x60;
??BUF->tcflow = 0x00;
??BUF->flow = 0x00;
#else /* UIP_CONF_IPV6 */
??BUF->vhl = 0x45;
??BUF->tos = 0;
??BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
??++ipid;
??BUF->ipid[0] = ipid >> 8;
??BUF->ipid[1] = ipid & 0xff;
??/* Calculate IP checksum. */
??BUF->ipchksum = 0;
??BUF->ipchksum = ~(uip_ipchksum()); //計算IP校驗和
//??DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
#endif /* UIP_CONF_IPV6 */
??
??UIP_STAT(++uip_stat.tcp.sent);
send:
// DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
//? ? ? ?? ?? ???(BUF->len[0] << 8) | BUF->len[1]);
? ?//將發送的數據包計數器加一
??UIP_STAT(++uip_stat.ip.sent);
??/* Return and let the caller do the actual transmission. */
??uip_flags = 0;
??return;
drop:
??uip_len = 0;
??uip_flags = 0;
??return;
}

?

/*---------------------------------------------------------------------------*

總結

以上是生活随笔為你收集整理的uip1.0核心模块uip_process函数解读的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久久亚洲欧洲日产国码αv | 国产又爽又猛又粗的视频a片 | 中文字幕乱码中文乱码51精品 | 国产办公室秘书无码精品99 | 国产色在线 | 国产 | 男人扒开女人内裤强吻桶进去 | 亚拍精品一区二区三区探花 | 亚洲日韩av片在线观看 | 欧洲美熟女乱又伦 | 99久久精品国产一区二区蜜芽 | 日韩人妻无码一区二区三区久久99 | 亚洲国产欧美在线成人 | 亚洲精品久久久久久一区二区 | 亚洲va欧美va天堂v国产综合 | 无码纯肉视频在线观看 | 性史性农村dvd毛片 | 中文字幕乱码人妻无码久久 | 亚洲精品久久久久久一区二区 | 一本色道久久综合亚洲精品不卡 | 成人免费视频在线观看 | 露脸叫床粗话东北少妇 | 小泽玛莉亚一区二区视频在线 | 无码国模国产在线观看 | 色婷婷综合激情综在线播放 | 丰满少妇熟乱xxxxx视频 | 欧洲熟妇精品视频 | 啦啦啦www在线观看免费视频 | 蜜桃视频韩日免费播放 | 我要看www免费看插插视频 | 熟女少妇人妻中文字幕 | 欧美日本免费一区二区三区 | 亚洲欧美色中文字幕在线 | 日韩精品a片一区二区三区妖精 | 中文精品久久久久人妻不卡 | 国产精品多人p群无码 | 国产成人综合色在线观看网站 | 色偷偷人人澡人人爽人人模 | 精品午夜福利在线观看 | 蜜桃视频插满18在线观看 | 国产激情精品一区二区三区 | 国产成人精品久久亚洲高清不卡 | 精品久久综合1区2区3区激情 | 亚洲va欧美va天堂v国产综合 | 中文字幕无码av激情不卡 | 天堂а√在线地址中文在线 | 亚洲日韩一区二区三区 | av无码久久久久不卡免费网站 | 青青久在线视频免费观看 | 欧美性色19p | 亚洲va欧美va天堂v国产综合 | 九九综合va免费看 | 久久99久久99精品中文字幕 | 人妻少妇被猛烈进入中文字幕 | 欧洲精品码一区二区三区免费看 | 日本精品少妇一区二区三区 | 亚洲另类伦春色综合小说 | 精品欧美一区二区三区久久久 | 欧美人与牲动交xxxx | 婷婷五月综合激情中文字幕 | 美女黄网站人色视频免费国产 | 无码一区二区三区在线 | 色欲人妻aaaaaaa无码 | 免费无码一区二区三区蜜桃大 | 免费看男女做好爽好硬视频 | 国产精品嫩草久久久久 | 国产电影无码午夜在线播放 | 丰满少妇女裸体bbw | 久久精品女人天堂av免费观看 | 亚洲va中文字幕无码久久不卡 | 久久天天躁狠狠躁夜夜免费观看 | 国产黄在线观看免费观看不卡 | 国内丰满熟女出轨videos | 天堂无码人妻精品一区二区三区 | 久9re热视频这里只有精品 | 国产精品美女久久久 | 成人精品天堂一区二区三区 | 国产9 9在线 | 中文 | 国产综合久久久久鬼色 | 欧美刺激性大交 | 无码精品国产va在线观看dvd | аⅴ资源天堂资源库在线 | 少妇性荡欲午夜性开放视频剧场 | 初尝人妻少妇中文字幕 | 波多野结衣乳巨码无在线观看 | 国产av无码专区亚洲a∨毛片 | 午夜免费福利小电影 | 日日橹狠狠爱欧美视频 | 久久亚洲中文字幕精品一区 | 精品久久久久久人妻无码中文字幕 | 国产精品嫩草久久久久 | 亚洲日韩乱码中文无码蜜桃臀网站 | 图片区 小说区 区 亚洲五月 | 国产美女极度色诱视频www | 国产 浪潮av性色四虎 | 无码人妻丰满熟妇区五十路百度 | 乱码av麻豆丝袜熟女系列 | 亚洲爆乳精品无码一区二区三区 | 国产人妻精品午夜福利免费 | 波多野结衣av在线观看 | 国产偷国产偷精品高清尤物 | 日日麻批免费40分钟无码 | 国产成人精品优优av | aⅴ在线视频男人的天堂 | 麻花豆传媒剧国产免费mv在线 | 亚洲精品国产a久久久久久 | 精品国产精品久久一区免费式 | 亚洲成av人片在线观看无码不卡 | 中国女人内谢69xxxx | 国产97色在线 | 免 | 99精品视频在线观看免费 | √天堂中文官网8在线 | 67194成是人免费无码 | 国产乱人伦偷精品视频 | 亚洲国产精品无码久久久久高潮 | 成人无码视频在线观看网站 | 清纯唯美经典一区二区 | 一本久久a久久精品vr综合 | а√资源新版在线天堂 | 在线 国产 欧美 亚洲 天堂 | 国产精品亚洲lv粉色 | 亚洲国产午夜精品理论片 | 国产精品亚洲一区二区三区喷水 | 久久人妻内射无码一区三区 | 欧美人与物videos另类 | 亚洲欧美日韩综合久久久 | 永久免费精品精品永久-夜色 | 日本又色又爽又黄的a片18禁 | 99国产欧美久久久精品 | 人妻与老人中文字幕 | 国产精品久久久 | 97精品国产97久久久久久免费 | 亚洲无人区午夜福利码高清完整版 | 亚洲无人区午夜福利码高清完整版 | 中文精品无码中文字幕无码专区 | 小鲜肉自慰网站xnxx | 亚洲精品久久久久久一区二区 | 女人被男人躁得好爽免费视频 | 男人和女人高潮免费网站 | 精品国偷自产在线视频 | 免费乱码人妻系列无码专区 | 国産精品久久久久久久 | 久久综合激激的五月天 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 成熟人妻av无码专区 | 亚洲大尺度无码无码专区 | 乱码av麻豆丝袜熟女系列 | 日本免费一区二区三区最新 | 色 综合 欧美 亚洲 国产 | 国产人成高清在线视频99最全资源 | 亚洲伊人久久精品影院 | 日产国产精品亚洲系列 | 扒开双腿吃奶呻吟做受视频 | 欧美xxxxx精品 | 亚洲精品美女久久久久久久 | 亚洲国产精品无码一区二区三区 | 婷婷丁香六月激情综合啪 | 131美女爱做视频 | 欧美日本精品一区二区三区 | 未满小14洗澡无码视频网站 | 丝袜足控一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 欧洲vodafone精品性 | 国产精品国产三级国产专播 | 国产三级精品三级男人的天堂 | 日本免费一区二区三区最新 | 无码乱肉视频免费大全合集 | 国产亚洲视频中文字幕97精品 | 中文字幕av无码一区二区三区电影 | 麻豆国产97在线 | 欧洲 | 亚洲精品中文字幕 | 国产精品办公室沙发 | 欧美日韩久久久精品a片 | 久久精品成人欧美大片 | 国内精品九九久久久精品 | 国产97人人超碰caoprom | 国产69精品久久久久app下载 | 亚洲啪av永久无码精品放毛片 | 国产亚洲精品精品国产亚洲综合 | 亚洲国产精品一区二区美利坚 | 夜夜躁日日躁狠狠久久av | av无码久久久久不卡免费网站 | 国产热a欧美热a在线视频 | 亚洲精品国产精品乱码不卡 | 亚洲区欧美区综合区自拍区 | 一本色道久久综合亚洲精品不卡 | 综合人妻久久一区二区精品 | 成人aaa片一区国产精品 | 奇米影视7777久久精品人人爽 | 亚洲精品一区二区三区婷婷月 | 中文字幕无码热在线视频 | 国产情侣作爱视频免费观看 | 久久久久av无码免费网 | 99视频精品全部免费免费观看 | 久久久久久久女国产乱让韩 | 精品国产麻豆免费人成网站 | 国产性生大片免费观看性 | 精品久久久中文字幕人妻 | 亚洲人交乣女bbw | 国产女主播喷水视频在线观看 | 亚洲精品国产品国语在线观看 | av无码久久久久不卡免费网站 | 欧美一区二区三区视频在线观看 | 免费观看又污又黄的网站 | 国产精品久久国产精品99 | 中文无码成人免费视频在线观看 | 天天拍夜夜添久久精品 | 亚洲色偷偷男人的天堂 | 欧美人与牲动交xxxx | 欧美喷潮久久久xxxxx | 岛国片人妻三上悠亚 | 成人精品视频一区二区 | 99久久精品午夜一区二区 | 中文字幕无码av波多野吉衣 | 亚洲人成网站在线播放942 | 日本xxxx色视频在线观看免费 | 国产亚洲视频中文字幕97精品 | 亚洲の无码国产の无码影院 | 国产婷婷色一区二区三区在线 | 国产成人一区二区三区在线观看 | 国产精品久久国产三级国 | 久久久久成人片免费观看蜜芽 | 国产精品高潮呻吟av久久 | 天海翼激烈高潮到腰振不止 | 久久综合九色综合欧美狠狠 | 亚洲一区二区三区四区 | 精品人人妻人人澡人人爽人人 | 国产精品人妻一区二区三区四 | 色综合久久久久综合一本到桃花网 | 精品国产福利一区二区 | 99久久精品日本一区二区免费 | 亚洲男女内射在线播放 | 人妻天天爽夜夜爽一区二区 | 国产精品亚洲一区二区三区喷水 | 亚洲人成网站在线播放942 | 九九综合va免费看 | 亚洲国产精品一区二区美利坚 | 黑人玩弄人妻中文在线 | 久久久久av无码免费网 | 精品无码一区二区三区的天堂 | 国产偷抇久久精品a片69 | 中文字幕av无码一区二区三区电影 | 全球成人中文在线 | 国产精品高潮呻吟av久久4虎 | 真人与拘做受免费视频一 | 日本爽爽爽爽爽爽在线观看免 | 国产猛烈高潮尖叫视频免费 | 久久精品视频在线看15 | 无码国产激情在线观看 | 一本加勒比波多野结衣 | 亚洲乱码日产精品bd | 国产精品久久久午夜夜伦鲁鲁 | 国产人妻精品一区二区三区不卡 | 在线播放免费人成毛片乱码 | 日本一卡二卡不卡视频查询 | 亚洲欧美国产精品专区久久 | av无码久久久久不卡免费网站 | 国产精品99爱免费视频 | 麻豆精品国产精华精华液好用吗 | 国产色在线 | 国产 | 日韩在线不卡免费视频一区 | 成年美女黄网站色大免费视频 | 欧美 日韩 人妻 高清 中文 | 国产成人无码区免费内射一片色欲 | 亚洲精品久久久久久久久久久 | 国产成人无码区免费内射一片色欲 | 国产亚洲精品久久久ai换 | 76少妇精品导航 | 18精品久久久无码午夜福利 | 色综合久久久久综合一本到桃花网 | 樱花草在线播放免费中文 | 亚洲成av人片天堂网无码】 | 大地资源网第二页免费观看 | 国产精品18久久久久久麻辣 | 国产一区二区三区影院 | 成人动漫在线观看 | 国产手机在线αⅴ片无码观看 | 国产内射爽爽大片视频社区在线 | 亚洲乱码日产精品bd | 亚洲国产精华液网站w | 1000部夫妻午夜免费 | 两性色午夜视频免费播放 | 日日摸日日碰夜夜爽av | 性欧美videos高清精品 | 亚洲中文字幕在线观看 | 亚洲日本在线电影 | 国产欧美亚洲精品a | 中文字幕无码人妻少妇免费 | 最新国产麻豆aⅴ精品无码 | 国产两女互慰高潮视频在线观看 | 学生妹亚洲一区二区 | 精品少妇爆乳无码av无码专区 | 日韩精品一区二区av在线 | 俺去俺来也在线www色官网 | 亚洲国产精品无码一区二区三区 | 国产成人综合色在线观看网站 | 亚洲日韩av一区二区三区四区 | 国产av久久久久精东av | 国产美女精品一区二区三区 | 亚洲一区二区三区偷拍女厕 | 色综合久久久无码中文字幕 | 男女猛烈xx00免费视频试看 | 无码免费一区二区三区 | 久久久久成人精品免费播放动漫 | 国产精品嫩草久久久久 | 成人精品天堂一区二区三区 | 在线а√天堂中文官网 | 亚洲中文字幕在线无码一区二区 | 国产成人无码av一区二区 | 丰满岳乱妇在线观看中字无码 | 午夜福利不卡在线视频 | 欧美三级不卡在线观看 | 18禁止看的免费污网站 | 无码乱肉视频免费大全合集 | 国产亚洲精品精品国产亚洲综合 | 婷婷综合久久中文字幕蜜桃三电影 | 成人综合网亚洲伊人 | 午夜男女很黄的视频 | 亚洲欧美综合区丁香五月小说 | 亚洲自偷精品视频自拍 | 亚洲男人av天堂午夜在 | 亚洲精品一区二区三区婷婷月 | 亚洲欧美综合区丁香五月小说 | 国产av一区二区三区最新精品 | 日日摸夜夜摸狠狠摸婷婷 | 久久久久亚洲精品中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲午夜福利在线观看 | 免费人成在线观看网站 | 麻豆精品国产精华精华液好用吗 | 波多野结衣av在线观看 | 久久久成人毛片无码 | 久久婷婷五月综合色国产香蕉 | 亚洲精品国偷拍自产在线观看蜜桃 | 国内揄拍国内精品少妇国语 | 永久免费观看国产裸体美女 | 色综合久久久无码中文字幕 | 精品夜夜澡人妻无码av蜜桃 | 性欧美熟妇videofreesex | 蜜桃视频插满18在线观看 | 国产亚洲精品精品国产亚洲综合 | aⅴ在线视频男人的天堂 | 曰本女人与公拘交酡免费视频 | 人人超人人超碰超国产 | 狠狠色噜噜狠狠狠狠7777米奇 | 精品无码国产一区二区三区av | 爆乳一区二区三区无码 | 丰满岳乱妇在线观看中字无码 | 国产色精品久久人妻 | 日本爽爽爽爽爽爽在线观看免 | 国産精品久久久久久久 | 亚洲性无码av中文字幕 | 亚洲乱码国产乱码精品精 | 免费观看的无遮挡av | 无码av中文字幕免费放 | 装睡被陌生人摸出水好爽 | 欧美精品在线观看 | 99精品国产综合久久久久五月天 | 理论片87福利理论电影 | 国产精品手机免费 | 欧美老人巨大xxxx做受 | 丰满诱人的人妻3 | 国产精品久久久久久亚洲毛片 | 亚洲一区二区三区无码久久 | 色婷婷综合激情综在线播放 | 伊人色综合久久天天小片 | 高清国产亚洲精品自在久久 | 欧美日本免费一区二区三区 | 粗大的内捧猛烈进出视频 | 久久久久av无码免费网 | 娇妻被黑人粗大高潮白浆 | 丝袜美腿亚洲一区二区 | 国产真实夫妇视频 | 久久精品女人天堂av免费观看 | 国产亚洲精品久久久久久大师 | 免费乱码人妻系列无码专区 | 精品国产av色一区二区深夜久久 | 欧美日韩精品 | 18无码粉嫩小泬无套在线观看 | 大肉大捧一进一出好爽视频 | 成人无码视频在线观看网站 | 无码一区二区三区在线 | 国产精品香蕉在线观看 | 377p欧洲日本亚洲大胆 | 精品无码一区二区三区的天堂 | 国产在线无码精品电影网 | 国产午夜福利亚洲第一 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产成人无码av片在线观看不卡 | 无码人妻出轨黑人中文字幕 | 国产又爽又黄又刺激的视频 | 四虎国产精品一区二区 | 欧美 日韩 人妻 高清 中文 | 免费无码一区二区三区蜜桃大 | 极品嫩模高潮叫床 | 日韩精品无码一本二本三本色 | av香港经典三级级 在线 | 中文字幕精品av一区二区五区 | 国产精品自产拍在线观看 | 久久人人爽人人人人片 | 76少妇精品导航 | 国产麻豆精品一区二区三区v视界 | 欧美真人作爱免费视频 | 精品国精品国产自在久国产87 | 国内少妇偷人精品视频 | 帮老师解开蕾丝奶罩吸乳网站 | 在线播放免费人成毛片乱码 | 久久精品人人做人人综合试看 | 国产九九九九九九九a片 | 天天拍夜夜添久久精品 | 日本va欧美va欧美va精品 | 无码精品人妻一区二区三区av | 国产无遮挡吃胸膜奶免费看 | 18禁黄网站男男禁片免费观看 | 亚洲精品久久久久久久久久久 | 国产精品美女久久久久av爽李琼 | 午夜无码区在线观看 | 亚洲午夜久久久影院 | 搡女人真爽免费视频大全 | 2020久久香蕉国产线看观看 | 强开小婷嫩苞又嫩又紧视频 | 99久久久无码国产aaa精品 | 久久综合九色综合97网 | 乱人伦中文视频在线观看 | 国内精品一区二区三区不卡 | 国产美女精品一区二区三区 | 中文字幕人妻无码一夲道 | 97精品人妻一区二区三区香蕉 | 久久综合网欧美色妞网 | 人妻少妇精品无码专区二区 | 国产精品人妻一区二区三区四 | a片在线免费观看 | 色一情一乱一伦 | 国产三级精品三级男人的天堂 | 高清无码午夜福利视频 | 国产办公室秘书无码精品99 | 欧美人与禽猛交狂配 | 精品欧美一区二区三区久久久 | 人人妻人人澡人人爽人人精品浪潮 | 一本精品99久久精品77 | 97精品国产97久久久久久免费 | 亚洲色www成人永久网址 | 日本www一道久久久免费榴莲 | 亚洲国精产品一二二线 | 久久99精品久久久久久动态图 | 国产精品久久久久9999小说 | 图片区 小说区 区 亚洲五月 | 亚洲精品鲁一鲁一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 熟女俱乐部五十路六十路av | 久久人人97超碰a片精品 | 婷婷六月久久综合丁香 | 日韩人妻少妇一区二区三区 | 久青草影院在线观看国产 | 无码国内精品人妻少妇 | 2019午夜福利不卡片在线 | 国产亚洲精品久久久久久久久动漫 | 国产两女互慰高潮视频在线观看 | 国产精品免费大片 | 亚洲s色大片在线观看 | 国产真实乱对白精彩久久 | 久久午夜无码鲁丝片秋霞 | 亚洲中文字幕av在天堂 | 小泽玛莉亚一区二区视频在线 | 无码人妻丰满熟妇区毛片18 | av无码电影一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 未满小14洗澡无码视频网站 | 亚洲男人av天堂午夜在 | 国产在热线精品视频 | 亚洲成a人片在线观看无码3d | 九月婷婷人人澡人人添人人爽 | 成人无码视频免费播放 | 少妇邻居内射在线 | 精品国产av色一区二区深夜久久 | 国产特级毛片aaaaaaa高清 | 丁香花在线影院观看在线播放 | 国产av无码专区亚洲awww | 色综合久久网 | 小sao货水好多真紧h无码视频 | 欧美性猛交xxxx富婆 | 永久免费精品精品永久-夜色 | 午夜精品久久久内射近拍高清 | 最新国产乱人伦偷精品免费网站 | 亚洲毛片av日韩av无码 | 少妇久久久久久人妻无码 | 中国大陆精品视频xxxx | 中文字幕乱码人妻二区三区 | 久久99精品国产.久久久久 | 中文精品久久久久人妻不卡 | 国产精品高潮呻吟av久久4虎 | 日韩精品a片一区二区三区妖精 | 天天做天天爱天天爽综合网 | 中文字幕av日韩精品一区二区 | www国产亚洲精品久久网站 | 欧美黑人巨大xxxxx | 一个人免费观看的www视频 | 无套内谢的新婚少妇国语播放 | 桃花色综合影院 | 丰满岳乱妇在线观看中字无码 | 色窝窝无码一区二区三区色欲 | 一个人看的视频www在线 | 中国女人内谢69xxxx | 日本爽爽爽爽爽爽在线观看免 | 中国女人内谢69xxxx | 西西人体www44rt大胆高清 | 国精产品一品二品国精品69xx | 欧美色就是色 | 久久精品99久久香蕉国产色戒 | 亚洲欧洲日本无在线码 | 乱人伦人妻中文字幕无码 | 国产激情无码一区二区app | 无码人中文字幕 | 成人免费视频一区二区 | 国产精品自产拍在线观看 | 性开放的女人aaa片 | 在线观看国产午夜福利片 | 国产精品理论片在线观看 | 成人综合网亚洲伊人 | 人妻尝试又大又粗久久 | 日韩少妇内射免费播放 | 无码人中文字幕 | 久久久中文久久久无码 | 国产精品毛片一区二区 | 成人精品一区二区三区中文字幕 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲一区二区三区四区 | 少妇厨房愉情理9仑片视频 | 性啪啪chinese东北女人 | 国产真实乱对白精彩久久 | 国产成人综合美国十次 | 国产高清不卡无码视频 | 中文字幕日产无线码一区 | 久久精品无码一区二区三区 | 久久zyz资源站无码中文动漫 | 国产麻豆精品精东影业av网站 | 亚洲国产精品一区二区美利坚 | 丁香花在线影院观看在线播放 | 日日摸夜夜摸狠狠摸婷婷 | 婷婷六月久久综合丁香 | 大屁股大乳丰满人妻 | 亚洲国产午夜精品理论片 | 久久国产36精品色熟妇 | 亚洲午夜无码久久 | 精品无人国产偷自产在线 | 日韩少妇内射免费播放 | 日本一卡二卡不卡视频查询 | 三级4级全黄60分钟 | 无套内谢的新婚少妇国语播放 | 久久午夜无码鲁丝片午夜精品 | 久久这里只有精品视频9 | 鲁大师影院在线观看 | 天堂а√在线中文在线 | 国产乱人伦av在线无码 | 鲁大师影院在线观看 | 亚洲精品中文字幕久久久久 | 好爽又高潮了毛片免费下载 | 亚洲熟妇自偷自拍另类 | 精品国产成人一区二区三区 | 亚洲gv猛男gv无码男同 | 日日夜夜撸啊撸 | 国产后入清纯学生妹 | 亚洲国产精品久久久久久 | 亚洲の无码国产の无码步美 | 国产精品久久久久久久9999 | 久久亚洲日韩精品一区二区三区 | 国产手机在线αⅴ片无码观看 | 欧美大屁股xxxxhd黑色 | 亚洲一区二区三区偷拍女厕 | 狠狠色噜噜狠狠狠7777奇米 | 国产真实乱对白精彩久久 | 日本一本二本三区免费 | 精品欧洲av无码一区二区三区 | 熟女俱乐部五十路六十路av | 丰腴饱满的极品熟妇 | 图片小说视频一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产免费久久久久久无码 | 色综合久久88色综合天天 | 亚洲另类伦春色综合小说 | 狠狠色噜噜狠狠狠狠7777米奇 | 一本久道高清无码视频 | 国产精品沙发午睡系列 | 岛国片人妻三上悠亚 | 99在线 | 亚洲 | 人妻天天爽夜夜爽一区二区 | 国产色视频一区二区三区 | 亚洲人成影院在线观看 | 18精品久久久无码午夜福利 | 国产亚洲日韩欧美另类第八页 | 少妇被黑人到高潮喷出白浆 | 人妻夜夜爽天天爽三区 | 亚洲中文字幕乱码av波多ji | 国产精品无码永久免费888 | 欧美日韩一区二区三区自拍 | 中文字幕无码视频专区 | 久久熟妇人妻午夜寂寞影院 | 熟妇人妻无乱码中文字幕 | 丰满人妻精品国产99aⅴ | 日韩欧美成人免费观看 | 国产suv精品一区二区五 | 欧美 亚洲 国产 另类 | 亚洲精品成人福利网站 | 久久久精品欧美一区二区免费 | 久精品国产欧美亚洲色aⅴ大片 | 国产亚av手机在线观看 | 人妻少妇精品视频专区 | 久久久久久av无码免费看大片 | 俄罗斯老熟妇色xxxx | 日本va欧美va欧美va精品 | 午夜精品久久久内射近拍高清 | 99精品无人区乱码1区2区3区 | 一本久久伊人热热精品中文字幕 | 国产精品久久久久久久影院 | 久久精品视频在线看15 | 18黄暴禁片在线观看 | 丁香啪啪综合成人亚洲 | 蜜桃av抽搐高潮一区二区 | 亚洲小说图区综合在线 | 国产精品第一区揄拍无码 | 99麻豆久久久国产精品免费 | 免费人成网站视频在线观看 | av香港经典三级级 在线 | 无码乱肉视频免费大全合集 | 少妇性俱乐部纵欲狂欢电影 | 精品乱子伦一区二区三区 | 欧美一区二区三区 | 亚洲自偷自拍另类第1页 | 精品偷自拍另类在线观看 | 久久人人爽人人人人片 | 亚洲国产av美女网站 | 人人澡人摸人人添 | aⅴ亚洲 日韩 色 图网站 播放 | 午夜福利一区二区三区在线观看 | 亚洲爆乳无码专区 | 国产真实乱对白精彩久久 | 日本爽爽爽爽爽爽在线观看免 | 波多野结衣 黑人 | 青青青爽视频在线观看 | 亚洲呦女专区 | 久久精品国产一区二区三区肥胖 | 思思久久99热只有频精品66 | 人人妻人人澡人人爽人人精品浪潮 | 性欧美熟妇videofreesex | 成人片黄网站色大片免费观看 | 999久久久国产精品消防器材 | 久久视频在线观看精品 | 永久免费观看美女裸体的网站 | 国产在线无码精品电影网 | 欧洲欧美人成视频在线 | 无码乱肉视频免费大全合集 | 蜜臀av无码人妻精品 | 欧美真人作爱免费视频 | 国产精品亚洲一区二区三区喷水 | 少妇无码一区二区二三区 | 亚洲精品国偷拍自产在线麻豆 | 亚洲中文字幕在线无码一区二区 | 中文字幕日韩精品一区二区三区 | 未满成年国产在线观看 | 日日摸天天摸爽爽狠狠97 | 欧美成人高清在线播放 | 亚洲中文无码av永久不收费 | 国产人妻久久精品二区三区老狼 | 精品无码一区二区三区爱欲 | 日日麻批免费40分钟无码 | 欧美丰满熟妇xxxx性ppx人交 | 特黄特色大片免费播放器图片 | 亚洲啪av永久无码精品放毛片 | 成人无码视频在线观看网站 | 欧美性生交xxxxx久久久 | 四十如虎的丰满熟妇啪啪 | 大地资源网第二页免费观看 | 国精产品一区二区三区 | a在线亚洲男人的天堂 | 久久综合久久自在自线精品自 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产亚洲精品久久久闺蜜 | 亚洲国产av美女网站 | 久久天天躁狠狠躁夜夜免费观看 | 欧洲精品码一区二区三区免费看 | 2019nv天堂香蕉在线观看 | 国産精品久久久久久久 | 无码国产激情在线观看 | 国产片av国语在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 中文字幕无码视频专区 | 婷婷综合久久中文字幕蜜桃三电影 | 少妇人妻av毛片在线看 | 国产午夜视频在线观看 | aa片在线观看视频在线播放 | 人人妻人人澡人人爽欧美一区 | 九九在线中文字幕无码 | 超碰97人人做人人爱少妇 | 西西人体www44rt大胆高清 | 天海翼激烈高潮到腰振不止 | 亚洲国产日韩a在线播放 | 性做久久久久久久免费看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 色一情一乱一伦一区二区三欧美 | 女人被男人爽到呻吟的视频 | 亚洲精品成a人在线观看 | 国产精品香蕉在线观看 | 欧美人与禽zoz0性伦交 | 欧美日韩一区二区三区自拍 | 久久精品国产一区二区三区肥胖 | 99精品国产综合久久久久五月天 | 欧美丰满熟妇xxxx | 99精品无人区乱码1区2区3区 | 国产精品二区一区二区aⅴ污介绍 | 久久久亚洲欧洲日产国码αv | 性生交大片免费看女人按摩摩 | 亚洲人亚洲人成电影网站色 | 色综合久久中文娱乐网 | 国产精品毛片一区二区 | 激情五月综合色婷婷一区二区 | 欧美老人巨大xxxx做受 | 久久久久免费精品国产 | 中文字幕无码免费久久9一区9 | 国内精品人妻无码久久久影院 | 国产舌乚八伦偷品w中 | 亚洲熟女一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 亚洲欧美精品aaaaaa片 | 久久亚洲精品中文字幕无男同 | 久久精品人人做人人综合试看 | 中文字幕日韩精品一区二区三区 | 沈阳熟女露脸对白视频 | 色五月丁香五月综合五月 | 国产在线无码精品电影网 | 麻豆成人精品国产免费 | 亚洲中文字幕在线观看 | 中文无码伦av中文字幕 | 无码国产激情在线观看 | 丰满人妻精品国产99aⅴ | 人妻中文无码久热丝袜 | 久久久精品人妻久久影视 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 六十路熟妇乱子伦 | 激情五月综合色婷婷一区二区 | 男女作爱免费网站 | 亚洲成av人综合在线观看 | 日本一区二区更新不卡 | 亚洲无人区一区二区三区 | 纯爱无遮挡h肉动漫在线播放 | 久久亚洲日韩精品一区二区三区 | 天天做天天爱天天爽综合网 | 国产欧美熟妇另类久久久 | 国产无套内射久久久国产 | 无码国产色欲xxxxx视频 | 一本色道久久综合狠狠躁 | 无码帝国www无码专区色综合 | 男人和女人高潮免费网站 | 无码人妻出轨黑人中文字幕 | 青青青爽视频在线观看 | 天天燥日日燥 | 久久五月精品中文字幕 | 中文字幕无码av波多野吉衣 | 久久亚洲精品成人无码 | 久久精品人人做人人综合试看 | 狠狠躁日日躁夜夜躁2020 | 久久久精品国产sm最大网站 | 男女作爱免费网站 | 无码福利日韩神码福利片 | 色婷婷欧美在线播放内射 | 国产又爽又猛又粗的视频a片 | 男女作爱免费网站 | 亚洲欧美精品aaaaaa片 | 乌克兰少妇性做爰 | 亚洲s码欧洲m码国产av | 99久久精品国产一区二区蜜芽 | 中文字幕乱码亚洲无线三区 | 一本无码人妻在中文字幕免费 | 亚洲 激情 小说 另类 欧美 | 国产无套粉嫩白浆在线 | 日本护士xxxxhd少妇 | 久久99精品国产.久久久久 | 午夜精品一区二区三区在线观看 | 亚洲の无码国产の无码影院 | 中文字幕无码人妻少妇免费 | 99久久久国产精品无码免费 | 四虎影视成人永久免费观看视频 | 欧洲欧美人成视频在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 蜜桃臀无码内射一区二区三区 | 少妇无码吹潮 | 亚洲 另类 在线 欧美 制服 | 我要看www免费看插插视频 | 中文字幕乱码中文乱码51精品 | 中文久久乱码一区二区 | 亚洲中文字幕无码中字 | 丰满少妇熟乱xxxxx视频 | 九九久久精品国产免费看小说 | 亚洲成色在线综合网站 | 国模大胆一区二区三区 | 狠狠噜狠狠狠狠丁香五月 | 国产网红无码精品视频 | 又紧又大又爽精品一区二区 | 久久五月精品中文字幕 | 亚洲 欧美 激情 小说 另类 | 国产亚洲精品久久久久久 | 亚洲精品欧美二区三区中文字幕 | 亚洲精品www久久久 | 国精产品一区二区三区 | 中文字幕无码视频专区 | 国产精品.xx视频.xxtv | 在线成人www免费观看视频 | 国产欧美熟妇另类久久久 | 性生交片免费无码看人 | 激情内射日本一区二区三区 | а√天堂www在线天堂小说 | 久久精品女人的天堂av | 亚洲人成网站色7799 | av香港经典三级级 在线 | 亚洲自偷自拍另类第1页 | 狠狠cao日日穞夜夜穞av | 欧洲精品码一区二区三区免费看 | 日日麻批免费40分钟无码 | 日本成熟视频免费视频 | 乱人伦人妻中文字幕无码 | 中国大陆精品视频xxxx | 国产精品久久久久久无码 | 亚洲成a人一区二区三区 | 99国产精品白浆在线观看免费 | 国语自产偷拍精品视频偷 | 中国大陆精品视频xxxx | 国产suv精品一区二区五 | 亚洲精品成人福利网站 | 亚洲欧美色中文字幕在线 | 九九久久精品国产免费看小说 | a国产一区二区免费入口 | 国产猛烈高潮尖叫视频免费 | 欧美高清在线精品一区 | 亚洲s码欧洲m码国产av | 国产免费无码一区二区视频 | 四虎影视成人永久免费观看视频 | 免费观看激色视频网站 | 水蜜桃亚洲一二三四在线 | 国产精品无码成人午夜电影 | 亚洲成av人在线观看网址 | 国产成人精品优优av | 成在人线av无码免观看麻豆 | 免费无码的av片在线观看 | 久久综合给合久久狠狠狠97色 | 人妻天天爽夜夜爽一区二区 | 日韩人妻少妇一区二区三区 | 免费观看黄网站 | 在线欧美精品一区二区三区 | 午夜熟女插插xx免费视频 | 伊人久久婷婷五月综合97色 | 一本久久伊人热热精品中文字幕 | 麻豆果冻传媒2021精品传媒一区下载 | 成年美女黄网站色大免费全看 | 亚洲s码欧洲m码国产av | 99久久久无码国产精品免费 | 久久亚洲日韩精品一区二区三区 | 国产成人一区二区三区在线观看 | 超碰97人人做人人爱少妇 | 鲁一鲁av2019在线 | 久久久久se色偷偷亚洲精品av | 久久久久亚洲精品男人的天堂 | 国精产品一品二品国精品69xx | 亚洲欧美日韩成人高清在线一区 | 午夜成人1000部免费视频 | 十八禁真人啪啪免费网站 | 亚洲成a人片在线观看无码 | 成人综合网亚洲伊人 | 四虎国产精品免费久久 | 一个人免费观看的www视频 | 欧美熟妇另类久久久久久不卡 | 国产成人精品久久亚洲高清不卡 | 日韩少妇白浆无码系列 | 国产亚av手机在线观看 | 亚洲一区二区三区香蕉 | 国产激情无码一区二区app | 国产亚洲精品久久久久久久 | 人人妻人人澡人人爽欧美一区 | 亚洲综合另类小说色区 | 亚洲国产精品无码久久久久高潮 | 中文精品久久久久人妻不卡 | 少妇人妻大乳在线视频 | 国产乱人伦偷精品视频 | 欧美阿v高清资源不卡在线播放 | 131美女爱做视频 | 噜噜噜亚洲色成人网站 | 清纯唯美经典一区二区 | 亚洲国产精品毛片av不卡在线 | 国产精品久久久久久久影院 | 精品国产青草久久久久福利 | 国产艳妇av在线观看果冻传媒 | 成人亚洲精品久久久久软件 | 无码毛片视频一区二区本码 | 免费中文字幕日韩欧美 | 一个人看的www免费视频在线观看 | 天下第一社区视频www日本 | 久久综合狠狠综合久久综合88 | 东京一本一道一二三区 | 国产无av码在线观看 | 日本护士xxxxhd少妇 | 国产精品亚洲五月天高清 | 男女性色大片免费网站 | 欧美日韩一区二区三区自拍 | 97夜夜澡人人爽人人喊中国片 | 少妇邻居内射在线 | 香港三级日本三级妇三级 | 两性色午夜视频免费播放 | 少妇无码av无码专区在线观看 | 红桃av一区二区三区在线无码av | 精品久久8x国产免费观看 | 蜜桃臀无码内射一区二区三区 | 大胆欧美熟妇xx | 国产熟妇高潮叫床视频播放 | 99久久婷婷国产综合精品青草免费 | 久久久www成人免费毛片 | 国产免费观看黄av片 | 无码人妻丰满熟妇区五十路百度 | 欧美日韩精品 | 少妇久久久久久人妻无码 | 色噜噜亚洲男人的天堂 | 无码中文字幕色专区 | 欧美精品国产综合久久 | 久久久久久亚洲精品a片成人 | 国产麻豆精品精东影业av网站 | 久久久久成人精品免费播放动漫 | 日韩人妻无码中文字幕视频 | 2019nv天堂香蕉在线观看 | 又湿又紧又大又爽a视频国产 | 草草网站影院白丝内射 | 丝袜足控一区二区三区 | 国产极品视觉盛宴 | 色婷婷综合激情综在线播放 | 亚洲狠狠色丁香婷婷综合 | 99久久婷婷国产综合精品青草免费 | 东京热男人av天堂 | 骚片av蜜桃精品一区 | 欧美性猛交xxxx富婆 | 亚洲熟悉妇女xxx妇女av | 白嫩日本少妇做爰 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 性生交大片免费看l | 日韩人妻无码一区二区三区久久99 | 欧美乱妇无乱码大黄a片 | 人人妻在人人 | 野狼第一精品社区 | 国产 精品 自在自线 | 51国偷自产一区二区三区 | 国产亚洲精品久久久久久国模美 | 国产精品va在线播放 | 狠狠躁日日躁夜夜躁2020 | 天天av天天av天天透 | 成人影院yy111111在线观看 | 美女毛片一区二区三区四区 | 精品偷拍一区二区三区在线看 | 亚洲一区二区三区香蕉 | 国产午夜手机精彩视频 | 国产suv精品一区二区五 | 久久久亚洲欧洲日产国码αv | 欧美一区二区三区 | 久久精品99久久香蕉国产色戒 | 久9re热视频这里只有精品 | 亚洲精品久久久久久一区二区 | 国产精品18久久久久久麻辣 | 中文字幕无码免费久久9一区9 | 无码人妻精品一区二区三区不卡 | 国产情侣作爱视频免费观看 | 久久aⅴ免费观看 | 欧洲vodafone精品性 | 国产亚洲精品久久久久久 | 国产黄在线观看免费观看不卡 | 中国女人内谢69xxxxxa片 | 久久综合久久自在自线精品自 | 国产激情精品一区二区三区 | 中文字幕av伊人av无码av | 丰满岳乱妇在线观看中字无码 | 一本一道久久综合久久 | av无码不卡在线观看免费 | 亚洲一区二区三区 | 无码人妻黑人中文字幕 | 亚洲精品中文字幕久久久久 | 国产人妖乱国产精品人妖 | 免费观看的无遮挡av | 久精品国产欧美亚洲色aⅴ大片 | 亚洲区小说区激情区图片区 | 天堂无码人妻精品一区二区三区 | 给我免费的视频在线观看 | 亚洲人成影院在线无码按摩店 | 黑人粗大猛烈进出高潮视频 | 国产香蕉尹人视频在线 | 成人性做爰aaa片免费看 | 国产 浪潮av性色四虎 | 国产av一区二区精品久久凹凸 | 精品欧美一区二区三区久久久 | 成人试看120秒体验区 | 国产电影无码午夜在线播放 | 久久久久亚洲精品中文字幕 | 亚洲成色www久久网站 | 亚洲aⅴ无码成人网站国产app | 国产成人av免费观看 | 免费无码的av片在线观看 | 桃花色综合影院 | 久久精品国产一区二区三区肥胖 | 99久久人妻精品免费一区 | 精品熟女少妇av免费观看 | 欧美亚洲国产一区二区三区 | 国产黄在线观看免费观看不卡 | 亚洲国产精华液网站w | 麻豆国产人妻欲求不满 | 又大又黄又粗又爽的免费视频 | 成在人线av无码免费 | 无码精品国产va在线观看dvd | 午夜理论片yy44880影院 | 学生妹亚洲一区二区 | 亚洲精品国产精品乱码视色 | 老司机亚洲精品影院 | 国产亲子乱弄免费视频 | 国产97色在线 | 免 | 蜜桃臀无码内射一区二区三区 | 欧美激情一区二区三区成人 | 国产午夜精品一区二区三区嫩草 | 亚洲成av人片天堂网无码】 | 成人性做爰aaa片免费看 | 中文字幕av日韩精品一区二区 | 精品国偷自产在线 | 大色综合色综合网站 | 激情内射日本一区二区三区 | 欧美人与动性行为视频 | 久久精品国产一区二区三区肥胖 | 欧美 日韩 亚洲 在线 | 亚洲国产精品毛片av不卡在线 | 九月婷婷人人澡人人添人人爽 | 国产xxx69麻豆国语对白 | 精品欧洲av无码一区二区三区 | 国产一区二区三区影院 | 久久久中文字幕日本无吗 | 天天摸天天透天天添 | 国产极品美女高潮无套在线观看 | 色情久久久av熟女人妻网站 | 国产xxx69麻豆国语对白 | 成人性做爰aaa片免费看 | 国产精品国产三级国产专播 | 亚洲欧洲日本无在线码 | 色婷婷av一区二区三区之红樱桃 | а天堂中文在线官网 | 国精品人妻无码一区二区三区蜜柚 | 国产精品美女久久久 | 97精品人妻一区二区三区香蕉 | 国产成人久久精品流白浆 | 国内丰满熟女出轨videos | 精品厕所偷拍各类美女tp嘘嘘 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 精品亚洲韩国一区二区三区 | 亚洲精品中文字幕久久久久 | 小鲜肉自慰网站xnxx | 日韩av无码中文无码电影 | 在线成人www免费观看视频 | 精品夜夜澡人妻无码av蜜桃 | 午夜成人1000部免费视频 | 日本爽爽爽爽爽爽在线观看免 | av无码久久久久不卡免费网站 | 人人妻人人藻人人爽欧美一区 | 国产成人精品一区二区在线小狼 | 激情内射亚州一区二区三区爱妻 | 人妻中文无码久热丝袜 | 98国产精品综合一区二区三区 | 人妻少妇精品无码专区二区 | 18禁黄网站男男禁片免费观看 | 丰满人妻一区二区三区免费视频 | 98国产精品综合一区二区三区 | 国产婷婷色一区二区三区在线 | 亚洲欧美中文字幕5发布 | 97资源共享在线视频 | 久久精品人人做人人综合试看 | 波多野结衣一区二区三区av免费 | av无码电影一区二区三区 | 18无码粉嫩小泬无套在线观看 | 日韩人妻无码一区二区三区久久99 | a国产一区二区免费入口 | 国产无遮挡吃胸膜奶免费看 | 色综合久久88色综合天天 | 特大黑人娇小亚洲女 | 老太婆性杂交欧美肥老太 | 99国产精品白浆在线观看免费 | 欧美国产日韩亚洲中文 | 在线视频网站www色 | 亚洲精品成人福利网站 | 国产在线一区二区三区四区五区 | 黑人大群体交免费视频 | 在线精品亚洲一区二区 | 亚洲日韩av一区二区三区四区 | 久久久久成人片免费观看蜜芽 | 亚洲国产精品成人久久蜜臀 | 免费观看激色视频网站 | 国内老熟妇对白xxxxhd | 一本久道高清无码视频 | 无码人妻出轨黑人中文字幕 | 欧美国产亚洲日韩在线二区 | 国产成人无码av片在线观看不卡 | aa片在线观看视频在线播放 | 国产精品igao视频网 | 久久久久免费精品国产 | 国产成人综合在线女婷五月99播放 | 国精品人妻无码一区二区三区蜜柚 | 久久久久人妻一区精品色欧美 | 人妻体内射精一区二区三四 | 波多野结衣乳巨码无在线观看 | 久久婷婷五月综合色国产香蕉 | 欧美放荡的少妇 | 中文字幕av伊人av无码av | 亚洲乱码国产乱码精品精 | 少妇邻居内射在线 | 色爱情人网站 | 青青青手机频在线观看 | 国色天香社区在线视频 | 国产精品久久久久久久9999 | 乱人伦人妻中文字幕无码 | 亚洲七七久久桃花影院 | 精品成人av一区二区三区 | 国产情侣作爱视频免费观看 | 强伦人妻一区二区三区视频18 | 一区二区三区乱码在线 | 欧洲 | 亚洲精品国产精品乱码视色 | 成人免费视频视频在线观看 免费 | 国模大胆一区二区三区 | 在线看片无码永久免费视频 | 无码精品人妻一区二区三区av | 强辱丰满人妻hd中文字幕 | 在线看片无码永久免费视频 | av香港经典三级级 在线 | 欧美丰满少妇xxxx性 | 图片小说视频一区二区 | 欧美性黑人极品hd | 国产va免费精品观看 | 国产精品久久国产精品99 | 熟女体下毛毛黑森林 | 国产口爆吞精在线视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产97人人超碰caoprom | 国产香蕉尹人视频在线 | 亚洲中文字幕成人无码 | 午夜成人1000部免费视频 | 性做久久久久久久久 | 日本免费一区二区三区最新 | 国产无遮挡又黄又爽免费视频 | 亚洲精品国产第一综合99久久 | 亚洲欧美日韩综合久久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 日本又色又爽又黄的a片18禁 | 成人亚洲精品久久久久软件 | 在线精品亚洲一区二区 | 亚洲人交乣女bbw | 亚洲国产日韩a在线播放 | 55夜色66夜色国产精品视频 | 国产人妻精品一区二区三区不卡 | 131美女爱做视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品国产精品久久一区免费式 | 久久午夜无码鲁丝片秋霞 | 强辱丰满人妻hd中文字幕 | 久久人人97超碰a片精品 | 少妇久久久久久人妻无码 | 色婷婷综合激情综在线播放 | 曰本女人与公拘交酡免费视频 | 成人欧美一区二区三区黑人免费 | 国产在线精品一区二区高清不卡 | 日韩人妻无码一区二区三区久久99 | 樱花草在线播放免费中文 | 国产午夜福利亚洲第一 | 久久99精品国产.久久久久 | 国产尤物精品视频 | 国产 浪潮av性色四虎 | 无码午夜成人1000部免费视频 | 国产av久久久久精东av | 久久精品国产一区二区三区肥胖 | 麻豆人妻少妇精品无码专区 | 国产亚洲欧美日韩亚洲中文色 | 国产成人一区二区三区在线观看 | 国产农村乱对白刺激视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 蜜桃无码一区二区三区 | 超碰97人人做人人爱少妇 | 亚洲狠狠婷婷综合久久 | 国产午夜无码视频在线观看 | 无码成人精品区在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 97久久超碰中文字幕 | 国产精品久久久一区二区三区 | 亚洲一区二区三区播放 | 久久天天躁狠狠躁夜夜免费观看 | 狠狠噜狠狠狠狠丁香五月 | 熟妇女人妻丰满少妇中文字幕 | 久久精品中文字幕一区 | 天天综合网天天综合色 | 亚洲乱码日产精品bd | 亚洲色成人中文字幕网站 | 97夜夜澡人人爽人人喊中国片 | 精品人人妻人人澡人人爽人人 | av在线亚洲欧洲日产一区二区 | 999久久久国产精品消防器材 | 日本va欧美va欧美va精品 | 国产人妻人伦精品 | 无码人妻丰满熟妇区五十路百度 | 人妻人人添人妻人人爱 | 无码人妻久久一区二区三区不卡 | 波多野结衣av一区二区全免费观看 | 国产超碰人人爽人人做人人添 | 夜夜高潮次次欢爽av女 | 国产亚洲人成a在线v网站 | 日韩人妻少妇一区二区三区 | 伊人久久大香线蕉午夜 | 欧美老人巨大xxxx做受 | 成人欧美一区二区三区黑人免费 | 无码人妻av免费一区二区三区 | 人妻尝试又大又粗久久 | 国产综合色产在线精品 | 日本饥渴人妻欲求不满 | 欧美成人午夜精品久久久 | 国产免费无码一区二区视频 | 一区二区三区高清视频一 | 乌克兰少妇性做爰 | 亚洲啪av永久无码精品放毛片 | 久久精品99久久香蕉国产色戒 | 色综合久久久久综合一本到桃花网 | 亚洲gv猛男gv无码男同 | 国产超级va在线观看视频 | 国产在线无码精品电影网 | 精品无码国产一区二区三区av | 少妇激情av一区二区 | 日日天干夜夜狠狠爱 | 未满成年国产在线观看 | 激情爆乳一区二区三区 | 国产av无码专区亚洲awww | 又紧又大又爽精品一区二区 | 国产精品自产拍在线观看 | 午夜无码人妻av大片色欲 | 久久久国产精品无码免费专区 | 女人和拘做爰正片视频 | 欧美性猛交内射兽交老熟妇 | 一个人免费观看的www视频 | 亚洲小说春色综合另类 | 又紧又大又爽精品一区二区 | 成人无码影片精品久久久 | 精品亚洲韩国一区二区三区 | 无码福利日韩神码福利片 | 久久久久av无码免费网 | 伊人久久大香线焦av综合影院 | 亚洲日本va中文字幕 | 亚洲高清偷拍一区二区三区 | 国产乱人偷精品人妻a片 | 强奷人妻日本中文字幕 | 中文字幕无码乱人伦 | 美女黄网站人色视频免费国产 | 久久久久亚洲精品中文字幕 | 国产成人无码a区在线观看视频app | 三上悠亚人妻中文字幕在线 | 狠狠色噜噜狠狠狠狠7777米奇 | 人妻少妇被猛烈进入中文字幕 | 国内少妇偷人精品视频 | 国产精品99爱免费视频 | 欧美一区二区三区视频在线观看 | 理论片87福利理论电影 | 国产农村乱对白刺激视频 | 国产电影无码午夜在线播放 | 俺去俺来也在线www色官网 | 日本精品人妻无码77777 天堂一区人妻无码 | 色五月五月丁香亚洲综合网 | 国内精品人妻无码久久久影院蜜桃 | 欧美人与牲动交xxxx | 久热国产vs视频在线观看 | 精品国产成人一区二区三区 | 欧美 亚洲 国产 另类 | 无码人妻av免费一区二区三区 | 成人无码精品1区2区3区免费看 | 夜精品a片一区二区三区无码白浆 | 精品欧洲av无码一区二区三区 | 欧美怡红院免费全部视频 | 国产人妻精品一区二区三区不卡 | 久久精品国产精品国产精品污 | 久久久久99精品成人片 | 5858s亚洲色大成网站www | 国产激情综合五月久久 | 性色欲网站人妻丰满中文久久不卡 | 99视频精品全部免费免费观看 | 中文精品无码中文字幕无码专区 | 中文字幕色婷婷在线视频 | 麻豆果冻传媒2021精品传媒一区下载 | 男人的天堂2018无码 | 亚洲成av人影院在线观看 | 熟女俱乐部五十路六十路av | 免费观看激色视频网站 | 欧美猛少妇色xxxxx | 久久午夜夜伦鲁鲁片无码免费 | 国内揄拍国内精品少妇国语 | 日本大乳高潮视频在线观看 | 久久国产精品精品国产色婷婷 | 久久综合色之久久综合 | 国产精品va在线观看无码 | 强辱丰满人妻hd中文字幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 又粗又大又硬毛片免费看 | 欧美35页视频在线观看 | 人人爽人人澡人人高潮 | 国产精品亚洲综合色区韩国 | 全黄性性激高免费视频 | 丰满少妇人妻久久久久久 | 国产成人无码一二三区视频 | 强奷人妻日本中文字幕 | 亚洲区欧美区综合区自拍区 | 丰腴饱满的极品熟妇 | 国产综合久久久久鬼色 | 精品人妻中文字幕有码在线 | 福利一区二区三区视频在线观看 | 国产偷国产偷精品高清尤物 | 国产性生交xxxxx无码 | 成人免费视频一区二区 | 免费人成在线观看网站 | 女人被爽到呻吟gif动态图视看 | 99久久婷婷国产综合精品青草免费 | 欧美人与动性行为视频 | 国产亚洲欧美在线专区 | 久久久久免费看成人影片 | 亚洲精品久久久久中文第一幕 | 国产极品美女高潮无套在线观看 | 99久久婷婷国产综合精品青草免费 | 麻豆av传媒蜜桃天美传媒 | 无码精品人妻一区二区三区av | 国产激情艳情在线看视频 | 亚洲精品美女久久久久久久 | 国产无遮挡又黄又爽又色 | 亚洲国产av精品一区二区蜜芽 | 又紧又大又爽精品一区二区 | 亚洲aⅴ无码成人网站国产app | 未满小14洗澡无码视频网站 | a国产一区二区免费入口 | 小鲜肉自慰网站xnxx | 午夜福利一区二区三区在线观看 | 中文字幕 亚洲精品 第1页 | 麻豆成人精品国产免费 | 国产精品久久国产精品99 | 四虎国产精品一区二区 | 乱码午夜-极国产极内射 | 国产又爽又黄又刺激的视频 | 久久精品国产99久久6动漫 | 欧美肥老太牲交大战 | 午夜肉伦伦影院 | 狠狠亚洲超碰狼人久久 | 97人妻精品一区二区三区 | 亚洲国产av美女网站 | 国产艳妇av在线观看果冻传媒 | 狂野欧美性猛xxxx乱大交 | 国产一区二区三区影院 | 啦啦啦www在线观看免费视频 | 日日碰狠狠躁久久躁蜜桃 | 国产9 9在线 | 中文 | 国产午夜无码视频在线观看 | 国产精品99久久精品爆乳 | 无码人妻少妇伦在线电影 | 国产一区二区三区影院 | 99精品无人区乱码1区2区3区 | 亚洲国产精品一区二区第一页 | 国产精品久久福利网站 | 97久久国产亚洲精品超碰热 | 精品成在人线av无码免费看 | 老司机亚洲精品影院 | 亚洲の无码国产の无码影院 | √天堂资源地址中文在线 | 秋霞特色aa大片 | 樱花草在线播放免费中文 | 国产精品亚洲一区二区三区喷水 | 精品少妇爆乳无码av无码专区 | 日韩精品乱码av一区二区 | 秋霞成人午夜鲁丝一区二区三区 | 中文字幕乱码人妻二区三区 | 国产成人av免费观看 | 无码福利日韩神码福利片 | 国产激情精品一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 97久久国产亚洲精品超碰热 | 日日摸日日碰夜夜爽av | 欧美精品无码一区二区三区 | 色五月五月丁香亚洲综合网 | 精品少妇爆乳无码av无码专区 | 国产色在线 | 国产 | 久久成人a毛片免费观看网站 | 国精品人妻无码一区二区三区蜜柚 | 成人免费视频一区二区 | 亚洲精品国产精品乱码不卡 | 香港三级日本三级妇三级 | 国产激情精品一区二区三区 | 色窝窝无码一区二区三区色欲 | 国产乱人伦偷精品视频 | a片在线免费观看 | 亚洲中文无码av永久不收费 | 久久精品成人欧美大片 | 无码人妻精品一区二区三区不卡 | 国产免费无码一区二区视频 | 色欲人妻aaaaaaa无码 | 成人影院yy111111在线观看 | 久久国产精品精品国产色婷婷 | 久久久国产精品无码免费专区 | 国产精品视频免费播放 | 免费无码av一区二区 | 老熟妇仑乱视频一区二区 | 免费观看又污又黄的网站 | 久久国产精品精品国产色婷婷 | 九九久久精品国产免费看小说 | 国产亚洲日韩欧美另类第八页 | 久久亚洲国产成人精品性色 | 在线观看国产一区二区三区 | 国产精品人妻一区二区三区四 | 波多野结衣 黑人 | 久久精品中文字幕大胸 | 亚洲国产精品一区二区美利坚 | 亚洲中文字幕无码一久久区 | 麻豆国产丝袜白领秘书在线观看 | 性色av无码免费一区二区三区 | 免费人成在线视频无码 | 国产亚洲精品久久久久久 | 性欧美牲交在线视频 | 久久综合九色综合欧美狠狠 | 少女韩国电视剧在线观看完整 | 国产xxx69麻豆国语对白 | 久久国产精品_国产精品 | 伊人久久婷婷五月综合97色 | 夜夜影院未满十八勿进 | 真人与拘做受免费视频一 | 在线观看国产一区二区三区 | 97久久国产亚洲精品超碰热 | 色婷婷久久一区二区三区麻豆 | 欧美xxxxx精品 | 亚洲精品中文字幕乱码 | аⅴ资源天堂资源库在线 | 丝袜 中出 制服 人妻 美腿 | 亚洲欧美日韩国产精品一区二区 | 一本久道久久综合婷婷五月 | www国产亚洲精品久久网站 | 日韩成人一区二区三区在线观看 | 夜夜影院未满十八勿进 | 少妇被黑人到高潮喷出白浆 | 99精品无人区乱码1区2区3区 | 亚洲无人区午夜福利码高清完整版 | 国产香蕉尹人视频在线 | 少妇性荡欲午夜性开放视频剧场 | 午夜成人1000部免费视频 | 国产情侣作爱视频免费观看 | 欧美怡红院免费全部视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产成人综合在线女婷五月99播放 | 色婷婷综合激情综在线播放 | 亚洲小说图区综合在线 | 鲁大师影院在线观看 | 国产精品亚洲а∨无码播放麻豆 | 丁香啪啪综合成人亚洲 | 天天拍夜夜添久久精品 | 精品无码国产一区二区三区av | 天堂亚洲2017在线观看 | 成在人线av无码免费 | 鲁一鲁av2019在线 | 天堂在线观看www | 一区二区三区高清视频一 | 精品无码国产一区二区三区av | 亚洲一区二区三区播放 | 桃花色综合影院 | 国产无套粉嫩白浆在线 | 狠狠色色综合网站 | 国产精品无码mv在线观看 | 激情综合激情五月俺也去 | 久久99精品久久久久久动态图 | 日本精品少妇一区二区三区 | 99精品无人区乱码1区2区3区 | 国产精品福利视频导航 | 日韩欧美中文字幕在线三区 | 97se亚洲精品一区 | 日韩亚洲欧美中文高清在线 | 国产精品美女久久久久av爽李琼 | 女人被男人爽到呻吟的视频 | 国产黄在线观看免费观看不卡 | 欧美亚洲国产一区二区三区 | 麻豆国产人妻欲求不满谁演的 | 无码人妻精品一区二区三区不卡 | 国产精品毛片一区二区 | 男女下面进入的视频免费午夜 | 亚洲精品久久久久avwww潮水 | 99久久久无码国产精品免费 | 狂野欧美性猛xxxx乱大交 | 欧美老熟妇乱xxxxx | 精品无码国产一区二区三区av | 影音先锋中文字幕无码 | 少妇人妻偷人精品无码视频 | 国产高潮视频在线观看 | 大色综合色综合网站 | 熟妇人妻中文av无码 | 黑森林福利视频导航 | 日韩精品无码一本二本三本色 | 99久久精品无码一区二区毛片 | 亚洲理论电影在线观看 | 无码任你躁久久久久久久 | 无码av岛国片在线播放 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久国产精品二国产精品 | 精品国产精品久久一区免费式 | 久久熟妇人妻午夜寂寞影院 | 亚洲小说图区综合在线 | 夜夜影院未满十八勿进 | 亚洲精品一区二区三区婷婷月 | 天堂а√在线中文在线 | 精品久久久无码人妻字幂 | 日本大香伊一区二区三区 | 俺去俺来也www色官网 | 青青青爽视频在线观看 | 国产人妻精品午夜福利免费 | 国产精品毛多多水多 | 国产熟妇另类久久久久 | 中文字幕av日韩精品一区二区 | 色综合久久久久综合一本到桃花网 | 久久久久免费看成人影片 | 日日鲁鲁鲁夜夜爽爽狠狠 | 中文字幕无码av波多野吉衣 | 欧美人妻一区二区三区 | 无码国产色欲xxxxx视频 | 无码吃奶揉捏奶头高潮视频 | 亚洲一区二区三区无码久久 | 天下第一社区视频www日本 | 中文字幕中文有码在线 | 无码乱肉视频免费大全合集 | 久久综合给合久久狠狠狠97色 | 国产偷国产偷精品高清尤物 | 狠狠色欧美亚洲狠狠色www | 波多野结衣av一区二区全免费观看 | 欧洲熟妇精品视频 | 欧美成人午夜精品久久久 | 国内揄拍国内精品少妇国语 | 老熟妇乱子伦牲交视频 | 99在线 | 亚洲 | 欧美熟妇另类久久久久久多毛 | 女人高潮内射99精品 | 亚洲一区二区三区国产精华液 | 亚洲日韩一区二区 | 女人色极品影院 | 三级4级全黄60分钟 | 欧美野外疯狂做受xxxx高潮 | 一本一道久久综合久久 | 精品无码一区二区三区的天堂 | 性生交大片免费看女人按摩摩 | 国产无av码在线观看 | 国产成人综合在线女婷五月99播放 | 亚洲啪av永久无码精品放毛片 | 亚洲无人区一区二区三区 | 色欲久久久天天天综合网精品 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产尤物精品视频 | 久久综合九色综合欧美狠狠 | 乌克兰少妇xxxx做受 | 中文字幕乱妇无码av在线 | 国产农村妇女高潮大叫 | 高清无码午夜福利视频 | 蜜桃无码一区二区三区 | 国产精品va在线播放 | 领导边摸边吃奶边做爽在线观看 | 亚洲精品一区二区三区大桥未久 | 国产人妻久久精品二区三区老狼 | 日韩精品无码一区二区中文字幕 | 国产成人精品一区二区在线小狼 | 精品一区二区三区无码免费视频 | 亚洲一区二区三区含羞草 | 荫蒂被男人添的好舒服爽免费视频 | 极品尤物被啪到呻吟喷水 | 久久综合九色综合欧美狠狠 | 亚洲va欧美va天堂v国产综合 | 99国产欧美久久久精品 | 中文无码成人免费视频在线观看 | 久久亚洲精品中文字幕无男同 | 国产九九九九九九九a片 | 午夜无码区在线观看 | 天堂无码人妻精品一区二区三区 | 日日天干夜夜狠狠爱 | 亚洲男人av香蕉爽爽爽爽 | 永久免费观看国产裸体美女 | 人人妻人人澡人人爽人人精品 | 少妇被黑人到高潮喷出白浆 | 97精品国产97久久久久久免费 | 老头边吃奶边弄进去呻吟 | 精品无码国产自产拍在线观看蜜 | 人妻aⅴ无码一区二区三区 | 欧美国产亚洲日韩在线二区 | 日韩少妇内射免费播放 | 亚洲综合伊人久久大杳蕉 | 亚洲小说春色综合另类 | 亚洲熟妇色xxxxx欧美老妇y | 高清国产亚洲精品自在久久 | 色情久久久av熟女人妻网站 | 成人一在线视频日韩国产 | 玩弄人妻少妇500系列视频 | 三级4级全黄60分钟 | 男女爱爱好爽视频免费看 | 中文字幕日产无线码一区 | 欧美性猛交xxxx富婆 | 亚洲综合无码久久精品综合 | 永久免费观看美女裸体的网站 | 娇妻被黑人粗大高潮白浆 | 亚洲国产成人av在线观看 | 日本护士xxxxhd少妇 | 亚洲gv猛男gv无码男同 | 成年美女黄网站色大免费全看 | 日韩精品久久久肉伦网站 | 女高中生第一次破苞av | 曰韩无码二三区中文字幕 | 中文精品久久久久人妻不卡 | 日韩无码专区 | 无码中文字幕色专区 | 两性色午夜免费视频 | 色欲人妻aaaaaaa无码 | 国内精品人妻无码久久久影院蜜桃 | 亚洲色欲久久久综合网东京热 | 国产无遮挡又黄又爽又色 | 99在线 | 亚洲 | 国产综合色产在线精品 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产乱人伦av在线无码 | 成人无码视频在线观看网站 | 男人的天堂av网站 | 中文字幕av无码一区二区三区电影 | 欧美成人高清在线播放 | a在线亚洲男人的天堂 | 无码毛片视频一区二区本码 | 亲嘴扒胸摸屁股激烈网站 | 天海翼激烈高潮到腰振不止 | 人人妻人人澡人人爽欧美一区 | 麻豆md0077饥渴少妇 | 国产莉萝无码av在线播放 | 少妇的肉体aa片免费 | 精品一区二区不卡无码av | 欧美阿v高清资源不卡在线播放 | 国产午夜视频在线观看 | 精品国产一区二区三区av 性色 | 亚洲狠狠色丁香婷婷综合 | 77777熟女视频在线观看 а天堂中文在线官网 | 熟女俱乐部五十路六十路av | 国产精品高潮呻吟av久久4虎 | 亚洲色成人中文字幕网站 | 中文字幕无码视频专区 | 国产情侣作爱视频免费观看 | 亚洲国产精品美女久久久久 | 久久精品一区二区三区四区 | 美女张开腿让人桶 | 天堂无码人妻精品一区二区三区 | 2020最新国产自产精品 | 无码人妻av免费一区二区三区 | 99riav国产精品视频 | 无码人妻丰满熟妇区五十路百度 | 未满成年国产在线观看 | 又大又黄又粗又爽的免费视频 | 国产精品久久久久久久9999 | 国产免费久久精品国产传媒 | 欧美老妇交乱视频在线观看 | 丰满人妻翻云覆雨呻吟视频 | 夜夜高潮次次欢爽av女 | 精品无人区无码乱码毛片国产 | 国产特级毛片aaaaaaa高清 | 高潮毛片无遮挡高清免费视频 | 少妇的肉体aa片免费 | 国产精品无码一区二区三区不卡 | 人妻有码中文字幕在线 | 国产精品亚洲一区二区三区喷水 | 亚洲成a人一区二区三区 | 男女下面进入的视频免费午夜 | 丝袜 中出 制服 人妻 美腿 | 国产明星裸体无码xxxx视频 | 未满小14洗澡无码视频网站 | 99久久99久久免费精品蜜桃 | 国产激情综合五月久久 | 人人妻在人人 | 国产网红无码精品视频 | 人人爽人人澡人人人妻 | 亚洲国产午夜精品理论片 | 日韩精品一区二区av在线 | 台湾无码一区二区 | 88国产精品欧美一区二区三区 |