日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

计算机网络面试问题总结

發布時間:2024/3/26 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络面试问题总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計算機網絡

  • I/O復用
    • 12.五種IO復用
    • 13.Reactor和Proactor
    • 14.epoll如何判斷數據已經讀取完成
    • 1.select poll 和epoll的原理以及最大區別
    • 2.什么是IO復用
    • 3.阻塞 I/O 和非阻塞 I/O,具體是怎么樣的
      • 1.阻塞I/O
      • 2.非阻塞IO模型
    • 5.epoll為什么ctrl和wait分開
    • 6.公網和私網IP如何轉換
    • 7.epoll反應堆模型
    • 8.ping命令的原理
    • 9.socket的阻塞模式與非阻塞模式
    • 10.ET模式與LT模式
    • 11.htonl函數
  • TCP/IP協議
    • 4.鍵入www.baidu.com后發生的全過程
    • 5.2MSL
    • 6.TCP三次握手四次揮手流程
      • 1.三次握手建立連接流程
      • 2.四次揮手流程
    • 7.TCP十種狀態
    • 8.TCP各個標志位的意義
    • 9.三次握手必要性
    • 10.三次握手出錯的處理方法
    • 11.四次揮手必要性
    • 12.TCP長連接,短連接
    • 13.TCP如何重連接
    • 14.TCP如何保證可靠傳輸
    • 15.TCP為什么會有多個CLOSE_WAIT狀態
    • 16.TCP有大量TIME_WAIT的原因
    • 17.OSI七層協議及其作用
    • 18.TCP/IP協議
    • 19.TCP/IP四層網絡模型
    • 21.TCP的沾包問題
    • 22.MTU
    • 23.socket編寫TCP協議的流程
    • 24.ARP協議原理
    • 25.DNS解析過程
    • 26.1 TCP與UDP的優缺點
    • 26.TCP/UDP的區別
    • 26.UDP如何保證可靠傳輸
    • UDP改進網絡---UDT
    • 27.TCP協議:reset
    • 28.如何通過局域網獲得另一臺電腦的一個文件
    • 29.ARQ協議
    • 30.TCP的滑動窗口
    • 31. TCP的保活機制
    • 32.socket編程中TCP三次握手
    • 33.UDP如何實現一對多
    • 34.TCP/IP模型各層的網絡攻擊
    • 35.TIME_WAIT過多
    • 36.TIME_WAIT過多如何排查
    • 37.CLOSE_WAIT產生的原因及解決
    • 38.數據包從一個主機發送到另一個主機
    • 39.IPV6和IPV4
    • 40.TCP超時重傳的次數限制
  • HTTP
    • 1.HTTP/HTTPS
    • 1.HTTP詳解
    • 2.對稱加密和非對稱加密
    • 3.HTTPS的握手方式
    • 4.XSS攻擊:
    • 5.GET方法與POST方法的區別
    • 9.云計算
    • 10.https如何保證公鑰可信性
    • 11.HTTP2.0
    • 12.HTTP1.1和HTTP2.0的區別
    • 13.HTTP狀態碼301 與 302的區別
    • 14. HTTP狀態?Cookie 和 Session

I/O復用

12.五種IO復用

參考>>

13.Reactor和Proactor

參考>>

Reactor模型

mainReactor負責監聽server socket,用來處理新連接的建立,將建立的socketChannel指定注冊給subReactor。
subReactor維護自己的selector, 基于mainReactor 注冊的socketChannel多路分離IO讀寫事件,讀寫網 絡數據,對業務處理的功能,另其扔給worker線程池來完成。
我們可以看到,mainReactor 主要是用來處理網絡IO 連接建立操作,通常一個線程就可以處理,而subReactor主要做和建立起來的socket做數據交互和事件業務處理操作,它的個數上一般是和CPU個數等同,每個subReactor一個縣城來處理。
[參考文章>>>>>>>>>>>>>>>>>>>>>>>>]
兩者的區別:
在Reactor模式中,事件分離者等待某個事件或者可應用或個操作的狀態發生(比如文件描述符可讀寫,或者是socket可讀寫),事件分離器就把這個事件傳給事先注冊的處理器(事件處理函數或者回調函數),由后者來做實際的讀寫操作。
在Proactor模式中,事件處理者(或者代由事件分離者發起)直接發起一個異步讀寫操作(相當于請求),而實際的工作是由操作系統來完成的。發起時,需要提供的參數包括用于存放讀到數據的緩存區,讀的數據大小,或者用于存放外發數據的緩存區,以及這個請求完后的回調函數等信息。事件分離者得知了這個請求,它默默等待這個請求的完成,然后轉發完成事件給相應的事件處理者或者回調。
可以看出兩者的區別:Reactor是在事件發生時就通知事先注冊的事件(讀寫由處理函數完成);Proactor是在事件發生時進行異步I/O(讀寫由OS完成),待IO完成事件分離器才調度處理器來處理。

14.epoll如何判斷數據已經讀取完成

=====>
只有在使用epoll ET(Edge Trigger)模式的時候,才需要關注數據是否讀取完畢了。使用select或者epoll的LT模式,其實根本不用關注數據是否讀完了,select/epoll檢測到有數據可讀去讀就OK了。
兩種做法:
1、針對TCP,調用recv方法,根據recv的返回值。如果返回值小于我們設定的recv buff的大小,那么就認為接收完畢。
2、TCP、UDP都適用,將socket設為NOBLOCK狀態(使用fcntl函數),然后select該socket可讀的時候,使用read/recv函數讀取數據。當返回值為-1,并且errno是EAGAIN或EWOULDBLOCK的時候,表示數據讀取完畢。

1.select poll 和epoll的原理以及最大區別

參考文章>>
select原理:,需要一個fd_set 集合來記錄每個連接的文件描述符,該集合使用位圖的方式,每一位都表示一個文件描述符,1表示已連接,0表示為連接,將fd_set 拷貝一份后傳入內核,由內核對fd_set 內進行輪詢檢測,將fd_set 中已連接但未就緒的文件描述符置為0,返回文件描述符集合,然后在用戶態中對fd_set 中的連接進行通信。用戶態下還需要對fd_set集合進行輪詢。
poll原理:也需要進行由用戶態到內核態下數據的拷貝,與select不同,poll直接將要檢測的文件描述符的信息封裝到結構體struct pollfd中,用戶態和內核態下都可直接讀寫結構體變量。結構體中存儲著文件描述符,委托內核檢測的事件,以及該文件描述符實際發生的事件。內核檢測到事件后改寫這個事件,如何沒檢測到任何事件,則將這個結構體的文件描述符置為-1。
epoll原理:首先通過epoll_create()。同時會創建一個event_poll結構體,結構體中存儲著一顆紅黑樹的根節點,每次有連接,通過epoll_ctrl()函數就會將連接的文件描述符放入紅紅黑樹中,該紅黑樹一直維護在內核中,這是因為紅黑樹查找插入刪除的效率都比較高。同時該結構體中還存儲一個雙向鏈表,當某個文件描述符有事件發生時,會調用自身的回調函數,將該節點的信息存儲在鏈表中,該鏈表存儲著已經準備就緒的文件描述符信息。當用戶態下調用epoll_wait()函數時,內核直接檢測該雙向鏈表中是否有元素存在,有元素就將發生的事件拷貝到用戶態。
epoll會為每個連接創建一個epoll_event結構體

struct epoll_event {uint32_t events; /* Epoll events */epoll_data_t data; /* User data variable */ };

epoll_event中有一個聯合體,通常用該聯合體的int類型的fd,還有一個數據表示事件類型,調用epoll_wait后,內核會幫助檢測每個連接的是否就緒,是否就緒事件是被用戶委托檢測的事件,然后將合適的連接同樣保存到epoll_event evs結構體數組中,供用戶態使用。

struct eventpoll{..../*紅黑樹的根節點,這顆樹中存儲著所有添加到epoll中的需要監控的事件*/struct rb_root rbr;/*雙鏈表中則存放著將要通過epoll_wait返回給用戶的滿足條件的事件*/struct list_head rdlist;.... };

區別

  • 1.是否跨平臺:
    select可以跨平臺,poll和epoll不可以
  • 2.是否有最大連接數限制
    select最大1024,poll和epoll沒有
  • 3.如何查詢描述符狀態
    select和poll采用遍歷輪詢,epoll不輪詢,采用回調機制,事件驅動。
  • 4.是否在用戶態和內核態之間拷貝檢測集合
    select和poll每次調用都會拷貝文件描述符集合,epoll中每個文件描述符只在注冊時拷貝一次。注:select往內核拷貝檢測集合的副本,poll往內核拷貝檢測集合原集合。
    最大區別:
    1.查詢文件描述符的狀態,select和poll采用輪詢;epoll采用回調機制,是事件驅動的,就緒的設備會自動將文件描述符添加到就緒鏈表中。
    2.select/poll 低效的原因之一是將 “添加 / 維護待檢測任務” 和 “阻塞進程 / 線程” 兩個步驟合二為一。每次調用 select 都需要這兩步操作,然而大多數應用場景中,需要監視的 socket 個數相對固定,并不需要每次都修改。epoll 將這兩個操作分開,先用 epoll_ctl() 維護等待隊列,再調用 epoll_wait() 阻塞進程(解耦)。
    參考文章>>

形象的參考文章>>

2.什么是IO復用

形象參考文章>>
概念1 :什么是文件
實際上所有的I/O設備都被抽象為了文件這個概念,一切皆文件,Everything is File,磁盤、網絡數據、終端,甚至進程間通信工具管道pipe等都被當做文件對待。
概念2:什么是文件描述符
在Linux世界要想使用文件,我們也需要借助一個號碼,這個號碼就、被稱為了文件描述符,file descriptors。文件描述僅僅就是一個數字而已,但是通過這個數字我們可以操作一個打開的文件。
有了文件描述符,進程可以對文件一無所知,比如文件在磁盤的什么位置、加載到內存中又是怎樣管理的等等,這些信息統統交由操作系統打理,進程無需關心,操作系統只需要給進程一個文件描述符就足夠了。
關于IO復用:
在網絡編程中,當連接個數比較少時,借助accept即可獲得一個文件描述符,但是當出現大量連接時,我們不能每次只獲取一個連接然后進行通信,需要將已就緒的文件描述符全部獲取然后通信,這時候就需要IO復用,即一次可以處理多路IO。
I/O多路復用,I/O multiplexing,multiplexing一詞其實多用于通信領域,為了充分利用通信線路,希望在一個信道中傳輸多路信號,要想在一個信道中傳輸多路信號就需要把這多路信號結合為一路,將多路信號組合成一個信號的設備被稱為multiplexer,顯然接收方接收到這一路組合后的信號后要恢復原先的多路信號,這個設備被稱為demultiplexer,如圖所示:

所以I/O多路復用指的是這樣一個過程:

  • 我們拿到了一堆文件描述符(不管是網絡相關的、還是磁盤文件相關等等,任何文件描述符都可以)
  • 通過調用某個函數告訴內核:“替我監視著這些描述符,當這堆文件描述符中有可以進行I/O讀寫操作的時候你再返回”
  • 當調用的這個函數返回后我們就能知道哪些文件描述符可以進行I/O操作了。
  • 通俗:IO 多路轉接的意思是在一個操作里同時監聽多個輸入輸出源,在其中一個或多個輸入輸出源可用的時候返回,然后對其的進行讀寫操作。
    三大IO復用機制:

    select
    poll
    epoll

    3.阻塞 I/O 和非阻塞 I/O,具體是怎么樣的

    1.阻塞I/O

    進程發起IO系統調用后,進程被阻塞,轉到內核空間處理,整個IO處理完畢后返回進程。操作成功則進程獲取到數據。
    典型應用:
    阻塞socket
    特點:

    • 進程阻塞掛起不消耗CPU資源,及時響應每個操作;

    • 實現難度低、開發應用較容易;

    • 適用并發量小的網絡應用開發;

    • 不適用并發量大的應用:因為一個請求IO會阻塞進程(線程),所以,得為每請求分配一個處理進程(線程)以及時響應,系統開銷大。

    2.非阻塞IO模型


    • 進程發起IO系統調用后,如果內核緩沖區沒有數據,需要到IO設備中讀取,進程返回一個錯誤而不會被阻塞;進程發起IO系統調用后,如果內核緩沖區有數據,內核就會把數據返回進程。
      對于上面的阻塞IO模型來說,內核數據沒準備好需要進程阻塞的時候,就返回一個錯誤,以使得進程不被阻塞。

    典型應用:
    socket是非阻塞的方式(設置為NONBLOCK)

    特點:

    • 進程輪詢(重復)調用,消耗CPU的資源;

    • 實現難度低、開發應用相對阻塞IO模式較難;

    • 適用并發量較小、且不需要及時響應的網絡應用開發;

    5.epoll為什么ctrl和wait分開

    參考文章>>
    select/poll 低效的原因之一是將 “添加 / 維護待檢測任務” 和 “阻塞進程 / 線程” 兩個步驟合二為一。每次調用 select 都需要這兩步操作,然而大多數應用場景中,需要監視的 socket 個數相對固定,并不需要每次都修改。epoll 將這兩個操作分開,先用 epoll_ctl() 維護等待隊列,再調用 epoll_wait() 阻塞進程(解耦)。

    6.公網和私網IP如何轉換

    7.epoll反應堆模型

    參考文章>>
    1.傳統的epoll服務器模型
    監聽可讀事件(ET) ? 數據到來? 觸發讀事件 ?epoll_wait()返回 ?read消息 ? write回射信息 ? 繼續epoll_wait()? 直到程序停止前都是這么循環。

    2.epoll反應堆服務器模型
    監聽可讀事件(ET) ? 數據到來 ? 觸發讀事件?epoll_wait()返回 ?read完數據; 節點下樹; 設置監聽寫事件和對應寫回調函數; 節點上樹(可讀事件回調函數內)? 監聽可寫事件(ET) ? 對方可讀 ? 觸發事件 ?epoll_wait()返回 ?write數據; 節點下樹; 設置監聽讀事件和對應可讀回調函數; 節點上樹(可寫事件回調函數內)? 直到程序停止前一直這么交替循環。

    原因:
    為什么要可讀以后設置可寫?然后一直交替?
    服務器向客戶端write數據,并不一定能write成功,原因有二
    (1) 滑動窗口機制
    服務器向客戶端write數據,假設剛好此時客戶端的接收滑動窗口滿,將導致當前服務器將阻塞在send函數處,導致服務器程序阻塞。
    解決方案:設置可寫事件,當客戶端的接收緩沖區有空閑時,將導致該socket可寫,在可寫回調函數中調用send函數
    (2) SIGPIPE信號
    客戶端send完數據后,突然由于異常停止,這將導致一個FIN發送給服務器。如果服務器不設置可寫事件監聽,那么服務器在read完數據后,直接向沒有讀端的套接字中寫入數據,TCP協議棧將會給服務器發送RST分節+SIGPIPE信號,導致服務器進程終止。

    8.ping命令的原理

    簡單來說,「ping」是用來探測本機與網絡中另一主機之間是否可達的命令,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連接。ping是定位網絡通不通的一個重要手段。
    ping 命令是基于 ICMP 協議來工作的,「 ICMP 」全稱為 Internet 控制報文協議( Internet Control Message Protocol)。ping 命令會發送一份ICMP回顯請求報文給目標主機,并等待目標主機返回ICMP回顯應答。因為ICMP協議會要求目標主機在收到消息之后,必須返回ICMP應答消息給源主機,如果源主機在一定時間內收到了目標主機的應答,則表明兩臺主機之間網絡是可達的。

    9.socket的阻塞模式與非阻塞模式

    參考文章>>

    Windows套接字在阻塞和非阻塞兩種模式下執行I/O操作。在阻塞模式下,在I/O操作完成前,執行的操作函數一直等候而不會立即返回,該函數所在的線程會阻塞在這里。相反,在非阻塞模式下,套接字函數會立即返回,而不管I/O是否完成,該函數所在的線程會繼續運行。
    阻塞模式下:
    bind()、listen()函數時,函數會立即返回。
    recv()、recvfrom()、WSARecv()和WSARecvfrom()函數。以阻塞套接字為參數調用該函數接收數據。如果此時套接字緩沖區內沒有數據可讀,則調用線程在數據到來前一直睡眠。
    send()、sendto()、WSASend()和WSASendto()函數。以阻塞套接字為參數調用該函數發送數據。如果套接字緩沖區沒有可用空間,線程會一直睡眠,直到有空間。
    accept()和WSAAcept()函數。以阻塞套接字為參數調用該函數,等待接受對方的連接請求。如果此時沒有連接請求,線程就會進入睡眠狀態。
    connect()和WSAConnect()函數。對于TCP連接,客戶端以阻塞套接字為參數,調用該函數向服務器發起連接。該函數在收到服務器的應答前,不會返回。這意味著TCP連接總會等待至少到服務器的一次往返時間。
    非阻塞模式下:
    套接字設置為非阻塞模式后,在調用API函數時,調用函數會立即返回。大多數情況下,這些函數調用都會調用“失敗”,并返回錯誤代碼,bind()函數時不會返回錯誤代碼。

    10.ET模式與LT模式

    參考文章>>
    LT 和 ET本質的區別是:
    LT模式狀態時,主線程正在epoll_wait等待事件時,請求到了,epoll_wait返回后沒有去處理請求(recv),那么下次epoll_wait時此請求還是會返回(立刻返回了);而ET模式狀態下,這次沒處理,下次epoll_wait時將不返回(所以我們應該每次一定要處理),可見很大程度降低了epoll的觸發次數(記住這句話先)。

    11.htonl函數

    ====>>>>

    將小端存儲模式轉換為大端存儲模式:
    大端(存儲)模式,是指數據的低位保存在內存的高地址中,而數據的高位保存在內存的低地址中
    小端(存儲)模式,是指數據的低位保存在內存的低地址中,而數據的高位保存在內存的高地址中
    大端(存儲)模式,是指數據的低位保存在內存的高地址中,而數據的高位保存在內存的低地址中
    小端(存儲)模式,是指數據的低位保存在內存的低地址中,而數據的高位保存在內存的高地址中
    存在原因:
    每個地址單元都是以字節為單位,即8位,當所需存儲的數據大于1字節時,就存在一個存儲順序的問題,因此就有了大小端的問題。
    計算機內小端字節序:計算機電路先處理低位字節,效率比較高,因為計算都是從低位開始的,所以,計算機的內部處理都是小端字節序。
    外部使用大端字節序:人類還是習慣讀寫大端字節序,所以,除了計算機的內部處理,其他的場合幾乎都是大端字節序,比如網絡傳輸和文件儲存。

    總結:大端模式就是數據從高字節到低字節在內存中排列,小端模式就是數據從低字節到高字節在內存中排列,數據本身字節是高字節在左,低字節在右。(如二進制8421)。
    大小端檢測方法:
    原理:由于數據對齊的原因,地址的增長方向是由小變大,c是1字節,i是四字節,聯合體公用一塊內存。在這里就是共用4字節的內存。c放在最開始的第一個字節,如果數據時小端存儲,則1應該在c的位置,如果是大端存儲,則c的位置上放的是0。

    #include <iostream> #include <stdio.h> int check() {union UN{char c;int i;}un;un.i = 1;return un.c; }int main(void) {if(check()==1)printf("小端模式存儲!\n");elseprintf("大端模式存儲!\n");return 0; }

    htonl、ntohl、htons、ntohs函數實現

    TCP/IP協議

    4.鍵入www.baidu.com后發生的全過程

    參考文章>>
    參考文章>>

    1.DNS將域名解析為IP地址:DNS解析過程
    2.瀏覽器與目標服務器建立TCP連接:三次握手過程,第三次握手時發送請求
    3.瀏覽器通過http協議發送請求
    4.服務器處理請求
    5.服務器發出一個HTML響應
    6.釋放TCP連接
    7.瀏覽器顯示頁面

    5.2MSL

    參考文章>>
    原因一:客戶端進行第四次揮手ACK后,啟動2MSL計時,ACK+seq+ack最多在1MSL就能到達服務端,如果在1MSL沒到達服務端,服務端會再次重傳FIN+seq+ack+ACK,到達客戶端最多耗時1MSL,客戶端收到重傳的FIN,會再次發送ACK,并啟動2MSL計時器。
    原因二:如果不等待這個2MSL而是立即關閉,服務端端口自由,與新的客戶端發生了新的連接,如果服務端沒有收到上個客戶端的第四次揮手的ACK,或者由于網絡中的路由器重復發送FIN報文,會導致剛產生的新連接被關閉,產生誤關閉;或者FIN并沒被重發,而是重復發了其他數據,會導致新連接數據錯亂。所有2MSL可以使本次連接持續的時間內所產生的所有報文段都從網絡中消失。

    6.TCP三次握手四次揮手流程

    三次握手四次揮手問題匯總:參考文章>>

    1.三次握手建立連接流程


    三次握手流程:
    (1)第一次握手:建立連接時,客戶端A發送SYN包(seq=j,SYN標志位=1)到服務器B,并進入SYN_SEND狀態,等待服務器B確認。

    (2)第二次握手:服務器B收到SYN包,必須確認客戶A的SYN(ack=j+1及ACK應答),同時自己也發送一個SYN包(seq=k,SYN標志位 = 1),即SYN+ACK包,此時服務器B進入SYN_RECV狀態。

    (3)第三次握手:客戶端A收到服務器B的SYN+ACK包,向服務器B發送確認包ACK(seq= j+1,ack=k+1,ACK 應答),此包發送完畢,客戶端A和服務器B進入ESTABLISHED狀態,完成三次握手。

    2.四次揮手流程

    流程:
    (1)第一次揮手:客戶端主動發送FIN釋放連接請求、seq = u序號到服務器,請求停止發送數據,進入FIN_WAIT_1(終止等待1),處于一種半關閉狀態。
    (2)第二次揮手:服務端發送ACK應答及ack =u+1 ,以及seq = v,B進入CLOS_WAIT(等待關閉),客戶端到服務端這個方向的連接就關閉了。但客戶端還可以接收。客戶端收到來自服務端的確認ACK,進入FIN_WAIT_2(終止等待2),等待服務端發送釋放連接報文。
    (3)服務端發送FIN釋放連接請求,ACK應答,seq = w(中間又有數據傳輸),ack= u+1,服務端進入LAST_ACK(最后確認狀態)。
    (4)客戶端發送ACK應答,seq=u+1,ack=w+1到服務端,進入FIN_WAIT(最終等待),等待2MSL后關閉。

    客戶端:主動連接,主動關閉:
    主動發起連接請求—>另一端響應請求————>建立連接狀態————>傳輸數據—————>發起關閉請求————>半連接狀態——>另一端響應請求—>另一端發起關閉請求————>本端響應請求———>等待2MSL————>關閉狀態。
    服務端:被動連接,被動關閉:
    被動接受連接請求————>建立連接狀態————>傳輸數據————>被動接受關閉請求————>等待關閉狀態(等待剩余數據發送完成)————>發起關閉請求————>接收到對方ACK——>關閉。

    7.TCP十種狀態

    LISTEN - 偵聽來自遠方TCP端口的連接請求; SYN-SENT -在發送連接請求后等待匹配的連接請求; SYN-RECEIVED - 在收到和發送一個連接請求后等待對連接請求的確認; ESTABLISHED- 代表一個打開的連接,數據可以傳送給用戶; FIN-WAIT-1 - 等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認; FIN-WAIT-2 - 從遠程TCP等待連接中斷請求; CLOSE-WAIT - 等待從本地用戶發來的連接中斷請求; CLOSING -等待遠程TCP對連接中斷的確認; LAST-ACK - 等待原來發向遠程TCP的連接中斷請求的確認; TIME-WAIT -等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認; CLOSED - 沒有任何連接狀態;

    8.TCP各個標志位的意義

    位碼即tcp標志位,6種標示:1.SYN(synchronous建立聯機)2.ACK(acknowledgement 確認)3.PSH(push傳送)4.FIN(finish結束)5.RST(reset重置)6.URG(urgent緊急)需要發送的號碼: Sequence number(順序號碼)Acknowledge number(確認號碼)

    9.三次握手必要性

    參考文章>>
    確保能成功連接
    1.假如一次握手
    首先tcp是面向連接,一次握手肯定建立不了連接,因為客戶機給服務器發出請求信息卻沒有得到回應,客戶機是沒法判定是否發送成功然后建立連接的。
    2.假如兩次握手
    假設只有兩次握手,比如圖中的1,2步,當A想要建立連接時發送一個SYN,然后等待ACK,結果這個SYN因為網絡問題沒有及時到達B,所以A在一段時間內沒收到ACK后,再發送第二個SYN,這次B順利收到第二個請求,接著A也收到B發送來的ACK,這時A發送的第一個SYN經過一段時間也到了B,對于B來說這是一個新連接請求,然后B又為這個連接申請資源,返回ACK,然而這個SYN是個無效的請求,A只會承認它最后發的那個SYN的SYN+ACK,A收到B發來的第二個ACK實際是回應A的第一個SYN,所以A并不會理會它,而B卻不知道,B會一直為這個連接維持著資源,造成資源的浪費。
    3.假如三次握手
    兩次握手的問題在于服務器端不知道一個SYN是否是無效的,而三次握手機制因為客戶端會給服務器回復第二次握手,也意味著服務器會等待客戶端的第三次握手,與兩次握手不同的是,服務器可以通過第三次握手來確認第一個連接請求是否有效,如果第三次握手遲遲不來,服務器便會認為這個SYN是無效的,釋放相關資源。但這時有個問題就是客戶端完成第二次握手便認為連接已建立,而第三次握手可能在傳輸中丟失,服務端會認為連接是無效的,這時如果Client端向Server寫數據,Server端將以RST包響應,這時便感知到發生了錯誤。

    10.三次握手出錯的處理方法

  • 第一次握手A發送SYN傳輸失敗,A,B都不會申請資源,連接失敗。如果一段時間內發出多個SYN連接請求,那么A只會接受并回應第一個收到的SYN+ACK,忽略其他回應全部回應,B中多申請的資源也會釋放。
  • 第二次握手B發送SYN+ACK傳輸失敗,A不會申請資源,B申請了資源,但收不到A的ACK,過一段時間釋放資源。如果是收到了多個A的SYN請求,B都會回復SYN+ACK,但A只會進行一次連接。
  • 第三次握手ACK傳輸失敗,B沒有收到ACK,釋放資源,對于后序的A的傳輸數據返回RST。實際上B會因為沒有收到A的ACK會多次發送SYN+ACK,次數是可以設置的,如果最后還是沒有收到A的ACK,則釋放資源,對A的數據傳輸返回RST。
  • 11.四次揮手必要性

    這是因為TCP半關閉造成的。由于一個TCP連接是全雙工的,在兩個方向上都能傳輸數據,因此兩個方向就需要單獨關閉。
    參考文章>>

    12.TCP長連接,短連接

    長連接:在基于tcp的通訊中,一直保持連接,不管當前是否發送或者接收數據。多用于操作頻繁,點對點的通訊,而且連接數不能太多的情況。
    短連接:在有數據傳輸的時候才進行連接,客戶-服務器通信/傳輸數據完畢就關閉連接。
    web網站的http服務一般都用短連接。
    參考文章>>

    在HTTP/1.0中,默認使用的是短連接。也就是說,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接。

    但從 HTTP/1.1起,默認使用長連接,用以保持連接特性。使用長連接的HTTP協議,會在響應頭有加入這行代碼:

    Connection:keep-alive

    在使用長連接的情況下,當一個網頁打開完成后,客戶端和服務器之間用于傳輸HTTP數據的 TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接。Keep-Alive不會永久保持連接,它有一個保持時間,可以在不同的服務器軟件(如Apache)中設定這個時間。實現長連接要客戶端和服務端都支持長連接。

    == HTTP協議的長連接和短連接,實質上是TCP協議的長連接和短連接== 。

    什么時候長連接,什么時候短連接:
    對于操作比較頻繁的,連接數不多的情況下,使用長連接,可以對連接進行復用,節省資源。
    對于操作不是很頻繁情況下,連接數目比較多的情況下,使用短連接會比較好,因為服務器的可用連接數目是有限的,如果在這種情況下每個用戶都占用一個連接的話,服務區早晚會撐不住。

    13.TCP如何重連接

    14.TCP如何保證可靠傳輸

    參考文章>>
    TCP通過七種方式保證可靠傳輸:

    • 1.數據校驗和:接收方對報文經計算后得到的校驗和與發送方發送的校驗和做對比,錯誤則說明傳輸一定有誤,但是正確不一定能保證發送成功。
    • 2.確認應答:接收方每次成功接收到數據后,會發送一個ACK應答,告訴發送方這段數據接收成功。
    • 3.序列號:TCP每次傳輸都對數據進行了編號,這就是序列號,TCP傳輸的過稱中,每次接收到數據后,都會對傳輸方進行ACK確認應答,應答報文中帶有對應的確認序列號,告訴發送方,接收到了哪些數據,下一次的數據從哪里開始發。序列號還有去重復的功能。
    • 4.超時重傳:如果發送方發送的數據由于網絡原因未到接收方,發送方等待一段時間還未接受到ACK應答則重新發送數據;如果發送方發送的數據已經被接收方接收到,但接收方發送的ACK應答丟包,則發送方還是會多次發送數據,接收方終有一次接收到了數據,根據序列號判斷接收的數據已經存在,也直接丟棄報文,并發送ACK應答報文。
      超時重傳的時間:太短會導致報文頻繁重發,太長則導致TCP效率下降。
      方法:對于同一個報文,取一個固定時長如500ms,每重傳一次等待時間指數倍增長,嘗試指定次數還未接收到數據則關閉連接。
    • 5.連接管理:即TCP三次握手四次揮手
    • 6.流量控制:TCP根據接收端對數據的處理能力,決定發送端的發送速度,這個機制就是流量控制。接收端會在發送ACK應答報文的時候,將自己接收緩沖區的剩余大小一并發送給發送端,稱為窗口大小,發送端根據這個數據大小來調整自己每次發送速度。如果接收方緩沖區為0,則發送方停止發送,并每隔一段時間發送窗口探測報文,獲取接收方剩余緩存大小。
    • 7.擁塞控制:為了保證在不知道網絡擁堵程度的情況下,數據能夠正確傳輸,不被丟包,TCP創建了慢啟動機制,即在剛建立連接后發送方的發送速度由慢變快。避免一建立連接就發送大量數據,如果網絡不好則會導致大量數據重傳,嚴重影響效率。同時引入了擁塞窗口的概念,設有閾值,擁塞窗口由1開始以指定速度增加,,遇到超時重傳則回到1,并且改變閾值。每次取接收方發來的窗口大小與擁塞窗口較小的那個作為發送數據的大小,擁塞控制是TCP在傳輸時盡可能快的將數據傳輸,并且避免擁塞造成的一系列問題。是可靠性的保證,同時也是維護了傳輸的高效性。

    擁塞控制具體動作:

    參考文章>>
    1.慢開始:
    假設當前發送方擁塞窗口cwnd的值為1,而發送窗口swnd等于擁塞窗口cwnd,因此發送方當前只能發送一個數據報文段(擁塞窗口cwnd的值是幾,就能發送幾個數據報文段),接收方收到該數據報文段后,給發送方回復一個確認報文段,發送方收到該確認報文后,將擁塞窗口的值變為2。慢開始的窗口值以指數方式增長。當前的擁塞窗口cwnd的值已經等于慢開始門限值,之后改用擁塞避免算法。
    2.擁塞避免:
    也就是每個傳輸輪次,擁塞窗口cwnd只能線性加一,而不是像慢開始算法時,每個傳輸輪次,擁塞窗口cwnd按指數增長。當發生超時重傳時,回到慢開始算法,窗口值恢復為1。
    3.快重傳:
    快重傳是指使發送方盡快進行重傳,而不是等超時重傳計時器超時再重傳。
    要求接收方不要等待自己需要發送數據時才進行捎帶確認,而是要立即發送確認;
    即使收到了失序的報文段也要立即發出對已收到的報文段的重復確認,即通知發送方需要正確發送的報文序號;
    發送方一旦收到3個連續的重復確認,就將相應的報文段立即重傳,而不是在規定時間內收不到對應確認信號,因為超時重傳計時器超時再重傳。
    這樣:對于個別丟失的報文段,發送方不會出現超時重傳,也就不會誤認為出現了擁塞而采用擁塞避免算法,而是使用快恢復算法
    4.快恢復:
    發送方一旦收到3個重復確認,就知道只是丟失了個別報文段,執行快恢復算法。
    發送方將慢開始門限和擁塞窗口的值設為當前窗口值的一半,即快恢復算法。

    15.TCP為什么會有多個CLOSE_WAIT狀態

    參考文章>>
    參考文章>>
    客戶端發送FIN+seq釋放連接請求后,服務端發送ACK+ack+seq應答后進入CLOSE_WAIT狀態,如果大量存在CLOSE_WAIT狀態,說明服務端沒有發送FIN+seq+ACK+ack,可能正在忙于讀。
    對于socket編程,有以下解決方案:
    1.使用完socket調用close方法
    2.read()讀取到的長度為0時,立即close
    3.read返回-1,檢查error返回碼,如果不是AGAIN(現在沒數據稍后重新讀),則立即關閉
    4.read設置超時,超時未讀到數據則關閉。

    16.TCP有大量TIME_WAIT的原因

    • 高并發讓服務器在短時間范圍內同時占用大量端口,而端口只0~65535的范圍,有限
    • 短連接表示“業務處理+傳輸數據的時間 遠遠小于 TIMEWAIT超時的時間”的連接。

    17.OSI七層協議及其作用

    參考文章>>
    參考文章>>
    七層模型:

    數據封裝:不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報(datagram),在鏈路層叫做幀(frame)加上MAC頭,加完后再加上一個FCS校驗組成數據幀,就封裝完成了,然后在物理層通過Bit來傳輸。發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部,最后將應用層數據交給應用程序處理。

    1.應用層:
    直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。
    2.表示層:
    表示層(Presentation Layer)是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,并按照一定的格式傳送給會話層。其主要功能是“處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密”等。
    3.會話層:
    會話層的任務就是組織和協調兩個會話進程之間的通信,并對數據交換進行管理。
    主要任務
    會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,并支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,并管理會話中的發送順序,以及會話所占用時間的長短。
    會話流量控制:提供會話流量控制和交叉會話功能。
    尋址:使用遠程地址建立會話連接。
    出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,并負責糾正錯誤。會話控制和遠程過程調用均屬于這一層的功能。但應注意,此層檢查的錯誤不是通信介質的錯誤,而是磁盤空間、打印機缺紙等類型的高級錯誤。
    4.傳輸層:
    主要任務:
    向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸
    傳輸層的作用是向高層屏蔽下層數據通信的細節,即向用戶透明地傳送報文。該層常見的協議:TCP/IP中的TCP協議。
    傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上為高層提供“面向連接”和“面向無接連”的兩種服務。
    處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。
    5.網絡層:
    主要任務:
    數據鏈路層的數據在這一層被轉換為數據包,然后通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備
    一般地,數據鏈路層是解決同一網絡內節點之間的通信,而網絡層主要解決不同子網間的通信。例如在廣域網之間通信時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。

    尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,為了識別和找到網絡中的設備,每一子網中的設備都會被分配一個唯一的地址。由于各子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址),需要網絡層來找到指定IP地址。
    路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡為數據分組選擇最佳路徑,并將信息從最合適的路徑由發送端傳送到接收端。
    連接服務:與數據鏈路層流量控制不同的是,前者控制的是網絡相鄰節點間的流量,后者控制的是從源節點到目的節點間的流量。其目的在于防止阻塞,并進行差錯檢測。
    6.數據鏈路層:
    主要任務:
    負責建立和管理節點間的鏈路。該層的主要功能是:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。在物理層提供的比特流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理線路變為無差錯的數據鏈路,即提供可靠的通過物理介質傳輸數據的方法。
    該層通常又被分為介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。
    MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制;
    LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制

    具體工作:接收來自物理層的位流形式的數據,并封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層;并且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。
    7.物理層:
    主要功能:
    利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸。
    物理層的作用是實現相鄰計算機節點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸介質和物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什么。“透明傳送比特流”表示經實際電路傳送后的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。

    18.TCP/IP協議

    參考文章>>

    19.TCP/IP四層網絡模型

    參考文章>>
    TCP/IP協議族是一個四層協議系統,自底而上分別是數據鏈路層、網絡層、傳輸層和應用層。每一層完成不同的功能,且通過若干協議來實現,上層協議使用下層協議提供的服務。

    1.應用層:
    直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。
    2.傳輸層:
    傳輸層為兩臺主機上的應用程序提供端到端(end to end)的通信。傳輸層只關心通信的起始端和目的端,而不在乎數據包的中轉過程。
    傳輸層協議:TCP協議、UDP協議。
    TCP協議(Transmission Control Protocol,傳輸控制協議)為應用層提供可靠的、面向連接的和基于流(stream)的服務。TCP協議使用超時重傳、數據確認等方式來確保數據包被正確地發送至目的端,因此TCP服務是可靠的。使用TCP協議通信的雙方必須先建立TCP連接,并在內核中為該連接維持一些必要的數據結構,比如連接的狀態、讀寫緩沖區,以及諸多定時器等。當通信結束時,雙方必須關閉連接以釋放這些內核數據。TCP服務是基于流的。基于流的數據沒有邊界(長度)限制,它源源不斷地從通信的一端流入另一端。發送端可以逐個字節地向數據流中寫入數據,接收端也可以逐個字節地將它們讀出。
    UDP協議(User Datagram Protocol,用戶數據報協議)則與TCP協議完全相反,它為應用層提供不可靠、無連接和基于數據報的服務。“不可靠”意味著UDP協議無法保證數據從發送端正確地傳送到目的端。如果數據在中途丟失,或者目的端通過數據校驗發現數據錯誤而將其丟棄,則UDP協議只是單地通知應用程序發送失敗。因此,使用UDP協議的應用程序通常要自己處理數據確認、超時重傳等邏輯。UDP協議是無連接的,即通信雙方不保持一個長久的聯系,因此應用程序每次發送數據都要明確指定接收端的地址(IP地址等信息)。基于數據報的服務,是相對基于流的服務而言的。每個UDP數據報都有一個長度,接收端必須以該長度為最小單位將其所有內容一次性讀出,否則數據將被截斷。
    3.網絡層:
    網絡層實現數據包的選路和轉發。主要負責從源地址到目的地址的最優路徑選擇。
    網絡層最核心的協議是IP協議(Internet Protocol,因特網協議)。IP協議根據數據包的目的IP地址來決定如何投遞它。如果數據包不能直接發送給目標主機,那么IP協議就為它尋找一個合適的下一跳(next hop)路由器,并將數據包交付給該路由器來轉發。多次重復這一過程,數據包最終到達目標主機,或者由于發送失敗而被丟棄。可見,IP協議使用逐跳(hop by hop)的方式確定通信路徑。
    WAN(Wide Area Network,廣域網)通常使用眾多分級的路由器來連接分散的主機或LAN(Local Area Network,局域網),因此,通信的兩臺主機一般不是直接相連的,而是通過多個中間節點(路由器)連接的。網絡層的任務就是選擇這些中間節點,以確定兩臺主機之間的通信路徑。同時,網絡層對上層協議隱藏了網絡拓撲連接的細節,使得在傳輸層和網絡應用程序看來,通信的雙方是直接相連的。
    ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用
    4.數據鏈路層:
    數據鏈路層實現了網卡接口的網絡驅動程序,以處理數據在物理媒介(比如以太網、令牌環等)上的傳輸。
    數據鏈路層兩個常用的協議是ARP協議(Address Resolve Protocol,地址解析協議)和RARP協議(ReverseAddress Resolve Protocol,逆地址解析協議)。它們實現了IP地址和機器物理地址(通常是MAC地址,以太網、令牌環和802.11無線網絡都使用MAC地址)之間的相互轉換。即通過IP地址找到路由器。

    ARP協議:網絡層使用IP地址尋址一臺機器,而數據鏈路層使用物理地址尋址一臺機器,因此網絡層必須先將目標機器的IP地址轉化成其物理地址,才能使用數據鏈路層提供的服務。

    RARP協議:僅用于網絡上的某些無盤工作站。因為缺乏存儲設備,無盤工作站無法記住自己的IP地址,但它們可以利用網卡上的物理地址來向網絡管理者(服務器或網絡管理軟件)查詢自身的IP地址。運行RARP服務的網絡管理者通常存有該網絡上所有機器的物理地址到IP地址的映射。

    21.TCP的沾包問題

    參考文章1>>
    參考文章2>>

    粘包的原因

    • 產生TCP粘包和拆包問題的主要原因是,操作系統在發送TCP數據的時候,底層會有一個緩沖區,例如1024個字節大小,如果一次請求發送的數據量比較小,沒達到緩沖區大小,TCP則會將多個請求合并為同一個請求進行發送,這就形成了粘包問題;

    拆包原因:

    • 如果一次請求發送的數據量比較大,超過了緩沖區大小,TCP就會將其拆分為多次發送,這就是拆包,也就是將一個大的包拆分為多個小包進行發送。

    粘包和拆包的三種情況

    • A和B兩個包都剛好滿足TCP緩沖區的大小,或者說其等待時間已經達到TCP等待時長,從而還是使用兩個獨立的包進行發送;
    • A和B兩次請求間隔時間內較短,并且數據包較小,因而合并為同一個包發送給服務端;
    • B包比較大,因而將其拆分為兩個包B_1和B_2進行發送,而這里由于拆分后的B_2比較小,其又與A包合并在一起發送。

    解決方案:

    • 使用帶消息頭的協議、消息頭存儲消息開始標識及消息長度信息,服務端獲取消息頭的時候解析出消息長度,然后向后讀取該長度的內容。
    • 設置定長消息,服務端每次讀取既定長度的內容作為一條完整消息。
    • 設置消息邊界,服務端從網絡流中按消息編輯分離出消息內容

    22.MTU

    參考文章>>
    MTU:最大傳輸單元,由不同的數據鏈路層對應物理層產生的(硬件規定),以太網的MTU=1500字節,即數據鏈路層發送的幀中的數據大小不能超過1500,最小46。太大會一直占用傳輸線路,別的數據需要等待,太小會影響效率,需要一直切片,且需要包裝各種頭,導致實際發送數據并不多。
    MSS:最大分節大小,為TCP數據包每次傳輸的最大數據分段大小,MSS的取值受限于MTU。

    23.socket編寫TCP協議的流程

    參考文章>>

    1.服務端創建socket,綁定IP地址和端口號(bind),之后注冊監聽(listen)。
    2.客戶端創建socket,對指定IP和端口號發送鏈接請求(connect)。
    3.服務端socket接收到客戶端socket發來的連接請求,被動打開,調用accept函數接收請求,建立連接
    4.建立連接之后可以write(recv)和send
    5.close關閉socket。
    參考文章>>

    24.ARP協議原理

    參考文章>>
    1、ARP,意思是地址解析協議。每一臺主機在出廠的時候都會有一個唯一標識自己的物理地址,也就是MAC地址。每一臺主機在本地的ARP 報文緩沖區里都會維護一張ARP 列表,里面存放的是IP 地址與MAC 地址的映射關系。

    2、當源主機向目標主機發送數據包時,在數據鏈路層傳輸時需要知道目標主機的MAC 地址。因此,源主機 會首先在本地的ARP 列表中查詢該目標主機IP 地址所對應的MAC 地址。如果存在,則說明查詢成功,于是源主機便向這個MAC 地址發送數據包即可。
    如果不存在,源主機會在本地網段內發起一個ARP 請求的廣播包,用來查詢目標主機IP 地址對應的MAC 地址。
    該ARP 請求包里面包含了“源主機IP 地址、源主機MAC 地址、目標主機IP 地址”。

    3、于是,在本地網段內的所有主機都會收到這個ARP 請求包。當主機收到這個ARP 請求包后,會首先提取出ARP 請求包里面的目標主機IP地址,查看這個IP 是否與自己的IP 一致,如果不一致,則丟棄這個請求包,不予理會。如果一致,則該主機便會將這個請求包里的源主機IP 地址和源主機MAC 地址一 一添加到本地的ARP 列表中(如果已經存在了,便會覆蓋它)。然后,這臺主機便會返回一個包含了本機MAC 地址的ARP 響應數據包給源主機,告訴它自己的MAC 地址。

    4、源主機收到這個ARP 響應數據包后,將目標主機的IP 地址和MAC 地址一 一添加到自己的ARP 列表中。然后,便根據此信息進行數據的傳輸。如果源主機一直得不到ARP 響應數據包,則說明ARP 查詢失敗。

    25.DNS解析過程

    參考文章>>
    參考文章>>

    DNS解析過程:

  • 瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應的ip地址,如果有,解析結束。
  • 如果瀏覽器緩存中沒有(專業點叫還沒命中),瀏覽器會檢查操作系統緩存中有沒有對應的已解析過的結果。
  • 如果至此還沒有命中域名,才會真正的請求本地域名服務器(LDNS)來解析這個域名,這臺服務器一般在你的城市的某個角落,距離你不會很遠,并且這臺服務器的性能都很好,一般都會緩存域名解析結果,大約80%的域名解析到這里就完成了。
  • 如果LDNS仍然沒有命中,就直接跳到Root Server(根DNS服務器) 域名服務器請求解析。
  • 根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com,二級域名服務器)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。
  • LDNS會緩存域名及對應的IP。
  • LDNS把解析的結果返回給用戶,用戶根據緩存到本地系統緩存中,域名解析過程至此結束。
  • - 主機向本地域名服務器的查詢一般都是采用遞歸查詢:
    所謂遞歸查詢就是:如果主機所詢問的本地域名服務器不知道被查詢的域名的IP地址,那么本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續發出查詢請求報文(即替主機繼續查詢),而不是讓主機自己進行下一步查詢。因此,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

    - 本地域名服務器向根域名服務器的查詢的迭代查詢:
    迭代查詢的特點:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要么給出所要查詢的IP地址,要么告訴本地服務器:“你下一步應當向哪一個域名服務器進行查詢”。然后讓本地服務器進行后續的查詢。
    根域名服務器通常是把自己知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求后,要么給出所要查詢的IP地址,要么告訴本地服務器下一步應當向哪一個權限域名服務器進行查詢。最后,知道了所要解析的IP地址或報錯,然后把這個結果返回給發起查詢的主機。

    DNS采用什么協議:
    DNS在區域傳輸的時候使用TCP協議,其他時候使用UDP協議。

    DNS區域傳輸的時候使用TCP協議
    原因1.輔域名服務器會定時(一般3小時)向主域名服務器進行查詢以便了解數據是否有變動。如有變動,會執行一次區域傳送,進行數據同步。區域傳送使用TCP而不是UDP,因為數據同步傳送的數據量比一個請求應答的數據量要多得多。
    原因2.TCP是一種可靠連接,保證了數據的準確性。

    域名解析時使用UDP協議
    客戶端向DNS服務器查詢域名,一般返回的內容都不超過512字節,用UDP傳輸即可。不用經過三次握手,這樣DNS服務器負載更低,響應更快。理論上說,客戶端也可以指定向DNS服務器查詢時用TCP,但事實上,很多DNS服務器進行配置的時候,僅支持UDP查詢包。

    26.1 TCP與UDP的優缺點

    TCP的優點: 可靠,穩定 TCP的可靠體現在TCP在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源。 TCP的缺點: 慢,效率低,占用系統資源高,易被攻擊 TCP在傳遞數據之前,要先建連接,這會消耗時間,而且在數據傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺設備上維護所有的傳輸連接,事實上,每個連接都會占用系統的CPU、內存等硬件資源。 而且,因為TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

    UDP的優點: 快,比TCP稍安全 UDP沒有TCP的握手、確認、窗口、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協議,所以它在傳遞數據時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊…… UDP的缺點: 不可靠,不穩定 因為UDP沒有TCP那些可靠的機制,在數據傳遞時,如果網絡質量不好,就會很容易丟包。 基于上面的優缺點,那么: 什么時候應該使用TCP: 當對網絡通訊質量有要求的時候,比如:整個數據要準確無誤的傳遞給對方,這往往用于一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸文件的協議,POP、SMTP等郵件傳輸的協議。 在日常生活中,常見使用TCP協議的應用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件傳輸 ………… 什么時候應該使用UDP: 當對網絡通訊質量要求不高的時候,要求網絡通訊速度能盡量的快,這時就可以使用UDP。 比如,日常生活中,常見使用UDP協議的應用如下: QQ語音 QQ視頻 TFTP ……

    有些應用場景對可靠性要求不高會用到UPD,比如長視頻,要求速率

    小結TCP與UDP的區別:

    1.基于連接與無連接;
    2.對系統資源的要求(TCP較多,UDP少);
    3.UDP程序結構較簡單;
    4.流模式與數據報模式 ;

    5.TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。

    tcp協議和udp協議的差別
    TCP UDP
    是否連接 面向連接 面向非連接
    傳輸可靠性 可靠 不可靠
    應用場合 傳輸大量數據 少量數據
    速度 慢 快

    TCP與UDP區別總結:

    1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接

    2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付

    3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的

    UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)

    4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信

    5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
    6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道

    26.TCP/UDP的區別

    TCP面向對象的含義:============>
    連接建立:TCP需要三次握手,UDP不需要任何準備就可以傳輸數據。因此UDP更快速。
    連接狀態:TCP需要維護連接狀態,包括發送接收緩存,擁塞控制參數以及序號與確認號參數,UDP不維護連接狀態,也不追蹤這些參數。

    參考文章>>
    TCP與UDP的區別主要表現在以下幾個方面:

    1)TCP是面向連接的傳輸控制協議,而UDP提供的是無連接的數據報服務;

    2)TCP是一種流模式的協議,UDP是一種數據報模式的協議;

    3)TCP具有高可靠性,確保傳輸數據的正確性,不出現丟失或亂序;UDP在傳輸數據前不建立連接,不對數據報進行檢查和修改,無需等待對方的應答,所以會出現分組丟失、重復、亂序,應用程序需要負責傳輸可靠性方面的所有工作;

    4)TCP對系統資源要求較多,UDP要求較少;

    5)UDP具有較好的實時性,工作效率比TCP高;

    6)UDP的包頭結構比TCP的包頭結構簡單,因此網絡開銷也小;

    7)TCP提供流量/擁塞控制,而UDP不提供。

    UDP
    1)UDP無連接,時間上不存在建立連接需要的時延。DNS基于UDP
    2)TCP首部20字節,UDP首部8字節。
    3)UDP沒有擁塞控制和流量控制
    4)UDP是面向報文的,對應用層交下來的報文,添加首部后直接鄉下交付為IP層,既不合并,也不拆分,保留這些報文的邊界。對IP層交上來UDP用戶數據報,在去除首部后就原封不動地交付給上層應用進程,報文不可分割,是UDP數據報處理的最小單位。
    5)UDP常用一次性傳輸比較少量數據的網絡應用,如DNS,SNMP等。

    UDP特點:

    • 每個分組都攜帶完整的目的地址;
    • 發送數據之前不需要建立鏈接;
    • 不對數據包的順序進行檢查,不能保證分組的先后順序;
    • 不進行分組出錯的恢復和重傳;
    • 不保證數據傳輸的可靠性。

    26.UDP如何保證可靠傳輸

    參考文章>>
    1、UDP報文丟失問題:
    ??因為UDP自身的特點,決定了UDP會相對于TCP存在一些難以解決的問題。第一個就是UDP報文缺失問題。在UDP服務器客戶端的例子中,如果客戶端發送的數據丟失,服務器會一直等待,直到客戶端的合法數據過來。如果服務器的響應在中間被路由丟棄,則客戶端會一直阻塞,直到服務器數據過來。
    【問題解決方法】
    使用信號SIGALRM為recvfrom設置超時。首先我們為SIGALARM建立一個信號處理函數,并在每次調用前通過alarm設置一個5秒的超時。如果recvfrom被我們的信號處理函數中斷了,那就超時重發信息;若正常讀到數據了,就關閉報警時鐘并繼續進行下去;
    使用select為recvfrom設置超時。
    2、UDP報文亂序問題:
    所謂亂序就是發送數據的順序和接收數據的順序不一致,例如發送數據的順序為A、B、C,但是接收到的數據順序卻為:A、C、B。產生這個問題的原因在于,每個數據報走的路由并不一樣,有的路由順暢,有的卻擁塞,這導致每個數據報到達目的地的順序就不一樣了。UDP協議并不保證數據報的按序接收。
    【問題解決方法】:發送端在發送數據時加入數據報序號,這樣接收端接收到報文后可以先檢查數據報的序號,并將它們按序排隊,形成有序的數據報。
    3、UDP流量控制問題:
    ??總所周知,TCP有滑動窗口進行流量控制和擁塞控制,反觀UDP因為其特點無法做到。UDP接收數據時直接將數據放進緩沖區內,如果用戶沒有及時將緩沖區的內容復制出來放好的話,后面的到來的數據會接著往緩沖區放,當緩沖區滿時,后來的到的數據就會覆蓋先來的數據而造成數據丟失(因為內核使用的UDP緩沖區是環形緩沖區)。因此,一旦發送方在某個時間點爆發性發送消息,接收方將因為來不及接收而發生信息丟失。
    【問題解決方法】:解決方法一般采用增大UDP緩沖區,使得接收方的接收能力大于發送方的發送能力。

    UDP如何保證可靠傳輸:
    ??由于在傳輸層UDP已經是不可靠的連接,那就要在應用層自己實現一些保障可靠傳輸的機制。簡單來講,要使用UDP來構建可靠的面向連接的數據傳輸,就要實現類似于TCP協議的:
    超時重傳(定時器)【解決報文丟失問題】;
    有序接受 (添加包序號)【解決包亂序問題】;
    應答確認 (Seq/Ack應答機制)【保證可靠性】;
    滑動窗口流量控制等機制 (滑動窗口協議)【解決流量控制問題】。

    UDP改進網絡—UDT

    目前已經有一些實現UDP可靠傳輸的機制,比如UDT(UDP-based Data Transfer Protocol):基于UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。 顧名思義,UDT建于UDP之上,并引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。 由于UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火墻穿透,多媒體數據傳輸等等。

    27.TCP協議:reset

    RST標志位
    RST表示復位,用來異常的關閉連接,在TCP的設計中它是不可或缺的。就像上面說的一樣,發送RST包關閉連接時,不必等緩沖區的包都發出去(不像上面的FIN包),直接就丟棄緩存區的包發送RST包。而接收端收到RST包后,也不必發送ACK包來確認。

    幾種情形:

    • 1,客戶端嘗試與服務器未對外提供服務的端口建立TCP連接,服務器將會直接向客戶端發送reset報文。
    • 2,客戶端和服務器的某一方在交互的過程中發生異常(如程序崩潰等),該方系統將向對端發送TCP reset報文,告之對方釋放相關的TCP連接。
    • 3,接收端收到TCP報文,但是發現該TCP的報文,并不在其已建立的TCP連接列表內,則其直接向對端發送reset報文。
    • 4,在交互的雙方中的某一方長期未收到來自對方的確認報文,則其在超出一定的重傳次數或時間后,會主動向對端發送reset報文釋放該TCP連接。
    • 5,有些應用開發者在設計應用系統時,會利用reset報文快速釋放已經完成數據交互的TCP連接,以提高業務交互的效率。
      參考文章>>
      參考文章>>

    28.如何通過局域網獲得另一臺電腦的一個文件

    參考文章>>

    29.ARQ協議

    參考文章>>
    自動重傳請求(Automatic Repeat-reQuest,ARQ)是OSI模型中數據鏈路層的錯誤糾正協議之一。
    ARQ包括:停止等待ARQ協議、回退ARQ和連續ARQ協議,錯誤檢測(Error Detection)、正面確認(Positive Acknowledgment)、超時重傳(Retransmission after Timeout)和 負面確認及重傳(Negative Acknowledgment and Retransmission)等機制。

    傳統自動重傳請求分成為三種:停等式(stop-and-wait)ARQ,回退n幀(go-back-n)ARQ,以及選擇性重傳(selective repeat)ARQ。后兩種協議是滑動窗口技術與請求重發技術的結合,由于窗口尺寸開到足夠大時,幀在線路上可以連續地流動,因此又稱其為連續ARQ協議。三者的區別在于對于出錯的數據報文的處理機制不同。三種ARQ協議中,復雜性遞增,效率也遞增。除了傳統的ARQ,還有混合ARQ(Hybrid-ARQ)。

    非連續ARQ協議
    1.停等式:
    停止并等待協議的工作原理如下:

    • 發送點對接收點發送數據包,然后等待接收點回復ACK并且開始計時。
    • 在等待過程中,發送點停止發送新的數據包。
    • 當數據包沒有成功被接收點接收時,接收點不會發送ACK. 這樣發送點在等待指定時間后,重新發送數據包。
    • 反復以上步驟直到收到從接收點發送的ACK.

    連續ARQ協議
    1.回退N幀協議:
    在回退n幀的ARQ中,當發送方接收到接收方的狀態報告指示報文出錯后,發送方將重傳過去的n個報文。回退N,發送窗口大于1,接收窗口等于1。允許發送方可以連續發送信息幀,但是,一旦某幀發生錯誤,必須重新發送該幀及其后的n幀。這種方式提高了信道的利用率,但允許已發送有待于確認的幀越多,可能要退回來重發的幀也越多。
    3.選擇重傳協議(Selective Repeat):
    發送點連續發送數據包但對每個數據包都設有個一個計時器。
    當在一定時間內沒有收到某個數據包的ACK時,發送點只重新發送那個沒有ACK的數據包,這個方法的缺點是接收點收到的數據包的順序可能不是發送的數據包順序。因此在數據包里必須含有順序字符來幫助接受點來排序。

    • 接收點丟棄從第一個沒有收到的數據包開始的所有數據包。
    • 發送點收到NACK后,從NACK中指明的數據包開始重新發送

    30.TCP的滑動窗口

    滑動窗口的三個動作:

    • 窗口左邊沿向右邊沿靠近為窗口合攏。這種現象發生在數據被發送和確認時。
    • 當窗口右邊沿向右移動時將允許發送更多的數據,我們稱之為窗口張開。這種現象發生在另一端的接收進程讀取已經確認的數據并釋放了T C P的接收緩存時。
    • 當右邊緣向左移動時,稱之為窗口收縮

    窗口有3種動作:展開(右邊向右),合攏(左邊向右),收縮(右邊向左)這三種動作受接收端的控制。
    合攏:表示已經收到相應字節的確認了
    展開:表示允許緩存發送更多的字節
    收縮(非常不希望出現的,某些實現是禁止的):表示本來可以發送的,現在不能發送;但是如果收縮的是那些已經發出的,就會有問題;為了避免,收端會等待到緩存中有更多緩存空間時才進行通信。
    TCP通過滑動窗口進行流量控制:
    1、流量控制是管理兩端的流量,以免會產生發送過快導致收端溢出,或者因收端處理太快而浪費時間的狀態。用的是:滑動窗口,以字節為單位。
    2.發端窗口的大小取決于收端的窗口大小rwnd(TCP報文的窗口大小字段)和擁塞窗口大小cwnd(見擁塞控制),發端窗口大小 = min{ rwnd , cwnd };

    31. TCP的保活機制

    為什么需要保活機制:
    1.怎么判斷對方是否還在線。這是因為,TCP對于非正常斷開的連接系統并不能偵測到(比如網線斷掉)。
    2.長時間沒有任何數據發送,連接可能會被中斷。這是因為,網絡連接中間可能會經過路由器、防火墻等設備,而這些有可能會對長時間沒有活動的連接斷掉。
    保活機制的實現:
    保活機制是由一個保活計時器實現的。當計時器被激發,連接一段將發送一個保活探測報文,另一端接收報文的同時會發送一個ACK作為響應。

    保活時間:默認7200秒(2小時)
    保活時間間隔:默認75秒
    保活探測數:默認9次

    客戶端一般處于下面四種狀態:
    客戶主機依然正常運行,并從服務器可達。客戶的TCP響應正常,而服務器也知道對方是正常的,服務器在兩小時后將保活定時器復位。
    客戶主機已經崩潰,并且關閉或者正在重新啟動。在任何一種情況下,客戶的TCP都沒有響應。服務端將不能收到對探測的響應,并在75秒后超時。服務器總共發送10個這樣的探測 ,每個間隔75秒。如果服務器沒有收到一個響應,它就認為客戶主機已經關閉并終止連接。
    客戶主機崩潰并已經重新啟動。服務器將收到一個對其保活探測的響應,這個響應是一個復位,使得服務器終止這個連接。
    客戶機正常運行,但是服務器不可達,這種情況與2類似,TCP能發現的就是沒有收到探查的響應。
    保活機制的弊端:
    在出現短暫的網絡錯誤的時候,保活機制會使一個好的連接斷開;
    保活機制會占用不必要的帶寬;
    解決方案:保活功能在默認情況下是關閉的。沒有經過應用層的請求,Linux系統不會提供保活功能。

    32.socket編程中TCP三次握手

    1.基于TCP的socket

    • 客戶端connect函數發起三次握手
    • 服務端listen接受三次握手

    三次握手后服務器端和客戶端成功建立起連接(準確講是成功交換了彼此說話的起始序號),服務器和相應客戶端的連接信息會被放到操作系統的等待隊列中,因為一個服務器可以和多個客戶端建立連接,三次握手成功后需要維護這些客戶端的連接信息,因此這些信息通常是操作系統用隊列來維護的。

    accept函數的作用:,服務器端調用accept函數后會從隊列中取出一個已經成功三次握手的連接數據,此后雙方就可以進行正常通信了。

    accept函數不會影響三次握手,但該函數能否很快返回是和三次握手有關的。只有當三次握手完成后發生了通信的連接,才會被accept取出。

    33.UDP如何實現一對多

    基于UDP(面向對象)的socket編程的服務器端程序如下:
    1、創建套接字(socket)
    2、將套接字綁定到一個本地地址和端口上(bind)
    3、等待接收數據(recvfrom)
    4、關閉套接字

    基于UDP(面向對象)的socket編程的客戶端程序如下:
    1、創建套接字(socket)
    2、填充服務器地址
    3、向服務器發送數據(sendto) 沒有connect環節,無連接狀態,知道服務器IP+端口號就能發送。
    4、關閉套接字

    基于UDP的socket編程:
    服務端:
    建套接字(socket)–>填充本地信息(sockaddr_in)–>把socket與IP地址加端口號綁定在一起(bind)–>接收(recvfrom)和回發(sendto)。
    客戶端:
    創建套接字(socket)–>填充服務器的地址信息(sockaddr_in)–>發送(sendto)和接收回顯(recvfrom)
    源代碼參考>>

    34.TCP/IP模型各層的網絡攻擊

    參考文章>>

    35.TIME_WAIT過多

    從服務器來講,短時間內關閉了大量的Client連接,就會造成服務器上出現大量TIME_WAIT連接,嚴重消耗著服務器的資源,此時部分客戶端就會顯示連接不上。
    從客戶端來講,客戶端TIME_WAIT過多,就會導致端口資源被占用,因為端口就65536個,被占滿就會導致無法創建新的連接。
    解決辦法:

    • 服務器可以設置 SO_REUSEADDR 套接字選項來避免 TIME_WAIT狀態,此套接字選項告訴內核,即使此端口正忙(處于TIME_WAIT狀態),也請繼續并重用它。
    • 調整系統內核參數,修改**/etc/sysctl.conf文件,即修改 net.ipv4.tcp_tw_reusetcp_timestampsnet.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets**重新用于新的TCP連 接,默認為0,表示關閉; net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為 0,表示關閉。
    • 強制關閉,發送 RST 包越過TIME_WAIT狀態,直接進入CLOSED狀態

    36.TIME_WAIT過多如何排查

    1.首先 使用命令netstat -n | awk ,查看當前各種狀態的數量

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 15586 CLOSE_WAIT 343 ESTABLISHED 581

    2.使用 netstat -anp |grep TIME_WAIT | head定位TIME_WAIT的

    netstat -anp |grep TIME_WAIT | head tcp 0 0 127.0.0.1:37545 127.0.0.1:50000 TIME_WAIT - tcp 0 0 127.0.0.1:40285 127.0.0.1:50000 TIME_WAIT - tcp 0 0 127.0.0.1:57127 127.0.0.1:50000 TIME_WAIT - tcp 0 0 127.0.0.1:34796 127.0.0.1:50000 TIME_WAIT -

    37.CLOSE_WAIT產生的原因及解決

    被動關閉的一方未發FIN導致其一直處于CLOSE_WAIT。
    原因:

    • 被動關閉的一方還用數據沒有發完,導致FIN沒發。
    • 被動關閉的一方阻塞在IO處。
    • 服務端沒有調用TCP的close(socket)。

    解決:
    一是對服務端代碼進行改善,查看服務端代碼在處理完畢客戶端請求,并在客戶端數據處理完畢后,有沒有進行使用close(socket)操作.

    二是使用keepalive保活機制來對這種半關閉連接進行檢測

    int keepAlive = 1;//開啟keepalive屬性
    int keepIdle = 60;//如果60秒內沒有任何數據往來,則進行探測
    int keepInterval = 6;//探測時發包的時間間隔為6秒
    int keepCount = 3;//探測嘗試的次數,如果第一次探測包就收到相應,以后的2次就不再發
    //keepalive
    setsockopt(m_iSock,SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(int));
    setsockopt(m_iSock,SOL_TCP,TCP_KEEPIDLE,(void*)&keepIdle, sizeof(int));
    setsockopt(m_iSock,SOL_TCP, TCP_KEEPINTVL,(void*)&keepInterval,sizeof(int));
    setsockopt(m_iSock,SOL_TCP, TCP_KEEPCNT,(void*)&keepCount,sizeof(int));

    38.數據包從一個主機發送到另一個主機

    參考文章>>

    39.IPV6和IPV4

    IPV6 共2的128次方個IP地址
    IPV4 共2的32次方個IP地址

    IPV6的優點:

    • 1.ipv6的地址數量是2的128次方個,完全夠用
    • 2.IPv6具有更高的安全性通過IPv6協議的安全機制,可對網絡層的數據進行加密,對IP報文進行校驗,這提高了數據的安全性。
    • 3.IPV6傳輸速度更快IPv6的地址分配一開始就遵循聚類的原則,這大大減小了路由器中路由表的長度,提高了路由器轉發數據包的速度。
    • 4.IPv6還擁有更好的頭部格式,IPV6使用新的頭部格式,其選項與基本頭部分開,這簡化和加速了路由選擇過程,提高了效率。

    40.TCP超時重傳的次數限制

    參考文章>>

    HTTP

    1.HTTP/HTTPS

    HTTP/HTTPS對比>>
    HTTP是明文傳輸的,傳輸過程中容易被攔截、修改或者偽造請求;HTTPS則是在HTTP基礎上進行進行了一些信息保護,相比HTTP來說更為安全。

    HTTP的缺點:
    使用明文通信,一些重要的內容會被竊聽(密碼)。
    不能驗證對方的身份,可能是偽造的信息。
    無法驗證報文的完整性,有可能已經被修改。

    HTTPS如何解決HTTP的問題:
    HTTPS 只是在 HTTP 的基礎之上增加了加密處理認證機制完整性保護,即 HTTPS = HTTP + 加密 + 認證 + 完整性保護。
    加密:HTTPS 通過對數據加密來使其免受竊聽者對數據的監聽,這就意味著當用戶在瀏覽網站時,沒有人能夠監聽他和網站之間的信息交換,或者跟蹤用戶的活動,訪問記錄等,從而竊取用戶信息。
    數據一致性:數據在傳輸的過程中不會被竊聽者所修改,用戶發送的數據會完整的傳輸到服務端,保證用戶發的是什么,服務器接收的就是什么。
    身份認證:是指確認對方的真實身份,也就是證明你是你(可以比作人臉識別),它可以防止中間人攻擊并建立用戶信任。

    1.HTTP詳解

    詳解文章>>
    請求報文的格式

    響應報文的格式

    2.對稱加密和非對稱加密

    參考文章>>
    非對稱加密指的是:加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。私鑰加密的信息,只有公鑰才能解密。常見的非對稱加密算法:RSA,ECC。
    對稱加密:指的就是加密和解密使用同一個秘鑰,所以叫做對稱加密。對稱加密只有一個秘鑰,作為私鑰。常見的對稱加密算法:DES,AES,3DES等等。
    對稱加密算法相比非對稱加密算法來說,加解密的效率要高得多。但是缺陷在于對于秘鑰的管理上,以及在非安全信道中通訊時,密鑰交換的安全性不能保障。所以在實際的網絡環境中,會將兩者混合使用.

    3.HTTPS的握手方式

    SSL協議:SSL是“Secure Sockets Layer”的縮寫,中文叫做“安全套接層”,其出現就是為了解決HTTP傳輸不安全的問題。
    SSL協議的作用:

    • 認證用戶和服務器,確保數據發送到正確的客戶端和服務器;
    • 加密數據以防止數據中途被竊取;
    • 維護數據的完整性,確保數據在傳輸過程中不被改變。

    流程:

    • 1.客戶端給服務端發送一個報文,報文中包括:客戶端能支持的TLS的最高版本,一個隨機數A,客戶端所能支持的加密算法集合以及壓縮算法集合。

    • 2.服務端收到客戶端的報文后,根據報文中的TLS(SSL)版本,確定一個TLS版本,自己生成個隨機數B,從客戶端傳過來的加密算法集合中挑一個具體的加密算法M(包括:非對稱加密算法用于加密上圖的pre-mastersecret,比如RSA算法、對稱加密算法用于數據傳輸時雙方使用的加密自己的內容解密對方內容的依據、MAC算法用于校驗信息是否被篡改、偽隨機算法用于生成最終通訊時對稱加密算法所需要的密鑰mastersecret),從壓縮算法集合中挑一個具體的壓縮算法N。然后發送一個響應包給客戶端,這個報文就包含剛才提到的:TLS的版本,隨機數B,加密算法M,壓縮算法N。

    • 3.第一步和第二步協商好了握手過程中需要的算法。

    • 4.網站的管理員需要向CA機構進行申請,將自己的公鑰提交給CA機構。CA機構則會使用我們提交的公鑰,再加上一系列其他的信息,如網站域名****、有效時長等,來制作證書。

    • 5.證書制作完成后,CA機構會使用自己的私鑰對其加密,并將加密后的數據返回給我們,我們只需要將獲得的加密數據配置到網站服務器上即可。

    • 6.然后,每當有瀏覽器請求我們的網站時,首先會將這段加密數據返回給瀏覽器,此時瀏覽器會用CA機構的公鑰來對這段數據解密。

    • 7.如果能解密成功,就可以得到CA機構給我們網站頒發的證書了,其中當然也包括了我們網站的公鑰。

    參考文章>>

    4.XSS攻擊:

    XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載并執行攻擊者惡意制造的網頁程序。
    最常見的幾種分類:反射型(非持久型)XSS、存儲型(持久型)XSS、DOM型XSS、通用型XSS、突變型XSS。
    參考文章>>

    5.GET方法與POST方法的區別

    1.GET提交的數據會放在URL之后,也就是請求行里面,以?分割URL和傳輸數據,參數之間以&相連,如EditBook?name=test1&id=123456.(請求頭里面那個content-type做的這種參數形式) POST方法是把提交的數據放在HTTP包的請求體中。
    2.GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.
    3.GET方法用于信息獲取,它是安全的(安全:指非修改信息,如數據庫方面的信息),而POST方法是用于修改服務器上資源的請求;
    4.GET請求的數據會附在URL之后,而POST方法提交的數據則放置在HTTP報文實體的主體里,所以POST方法的安全性比GET方法要高;
    5.GET方法傳輸的數據量一般限制在2KB,其原因在于:GET是通過URL提交數據,而URL本身對于數據沒有限制,但是不同的瀏覽器對于URL是有限制的,比如IE瀏覽器對于URL的限制為2KB,而Chrome,FireFox瀏覽器理論上對于URL是沒有限制的,它真正的限制取決于操作系統本身;POST方法對于數據大小是無限制的,真正影響到數據大小的是服務器處理程序的能力。
    使用上的區別:
    GET使用URL或Cookie傳參,而POST將數據放在BODY中”,這個是因為HTTP協議用法的約定。
    GET方式提交的數據有長度限制,則POST的數據則可以非常大”,這個是因為它們使用的操作系統
    和瀏覽器設置的不同引起的區別。
    POST比GET安全,因為數據在地址欄上不可見”,這個說法沒毛病,但依然不是GET和POST本身的區別。

    本質區別:
    GET和POST最大的區別主要是GET請求是冪等性的,POST請求不是。這個是它們本質區別。
    冪等性是指一次和多次請求某一個資源應該具有同樣的副作用。簡單來說意味著對同一URL的多個請求應該返回同樣的結果。

    9.云計算

    云計算(cloud computing)是分布式計算的一種,指的是通過網絡“云”將巨大的數據計算處理程序分解成無數個小程序,然后,通過多部服務器組成的系統進行處理和分析這些小程序得到結果并返回給用戶。云計算早期,簡單地說,就是簡單的分布式計算,解決任務分發,并進行計算結果的合并。因而,云計算又稱為網格計算。通過這項技術,可以在很短的時間內(幾秒鐘)完成對數以萬計的數據的處理,從而達到強大的網絡服務。
    現階段所說的云服務已經不單單是一種分布式計算,而是分布式計算、效用計算、負載均衡、并行計算、網絡存儲、熱備份冗雜和虛擬化等計算機技術混合演進并躍升的結果。

    10.https如何保證公鑰可信性

    參考文章>>
    CA機構專門用于給各個網站簽發數字證書,從而保證瀏覽器可以安全地獲得各個網站的公鑰。

    • 網站的管理員需要向CA機構進行申請,將自己的公鑰提交給CA機構。CA機構則會使用我們提交的公鑰,再加上一系列其他的信息,如網站域名****、有效時長等,來制作證書。

    • 證書制作完成后,CA機構會使用自己的私鑰對其加密,并將加密后的數據返回給我們,我們只需要將獲得的加密數據配置到網站服務器上即可。

    • 然后,每當有瀏覽器請求我們的網站時,首先會將這段加密數據返回給瀏覽器,此時瀏覽器會用CA機構的公鑰來對這段數據解密。

    • 如果能解密成功,就可以得到CA機構給我們網站頒發的證書了,其中當然也包括了我們網站的公鑰。

    • 如果無法解密成功,則說明此段加密數據并不是由一個合法的CA機構使用私鑰加密而來的,有可能是被篡改了,于是會在瀏覽器上顯示一個著名的異常界面,如下圖所示。

    問題1:有了CA機構之后就真的安全了嗎?我們在瀏覽器端要使用CA機構的公鑰來解密數據,那么又該如何安全地獲取到CA機構的公鑰呢?

    • 這個問題就很好解決了,因為世界上的網站是無限多的,而CA機構總共就那么幾家。任何正版操作系統都會將所有主流CA機構的公鑰內置到操作系統當中,所以我們不用額外獲取,解密時只需遍歷系統中所有內置的CA機構的公鑰,只要有任何一個公鑰能夠正常解密出數據,就說明它是合法的。

    問題2:如果證書被替換怎么辦?

    • 可以看到,由于攻擊者申請的證書也是由正規CA機構制作的,因此這段加密數據當然可以成功被解密。也正是因為這個原因,所有CA機構在制作的證書時除了網站的公鑰外,還要包含許多其他數據,用來輔助進行校驗,比如說網站的域名就是其中一項重要的數據。因為,即使加密數據可以被成功解密,但是最終解密出來的證書中包含的域名和瀏覽器正在請求的域名對不上,那么此時瀏覽器仍然會顯示異常界面。

    11.HTTP2.0

    參考文章>>

    12.HTTP1.1和HTTP2.0的區別

    參考文章>>

    • HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理
    • Connection請求頭的值為Keep-Alive時,客戶端通知服務器返回本次請求結果后保持連接;Connection請求頭的值為close時,客戶端通知服務器返回本次請求結果后關閉連接。HTTP 1.1還提供了與身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭。
    • HTTP 1.1增加host字段,表示請求的服務器的IP地址或域名
    • HTTP/1.1加入了一個新的狀態碼100(Continue),表示接受的請求正在處理

    13.HTTP狀態碼301 與 302的區別

    參考文章>>

    301 表示被請求 url 永久轉移到新的 url;302 表示被請求 url 臨時轉移到新的 url。
    301 搜索引擎會索引新 url 和新 url 頁面的內容;302 搜索引擎可能會索引舊 url 和 新 url 的頁面內容。
    302 的返回碼可能被別人利用,劫持你的網址。因為搜索引擎索引他的網址,他返回 302 跳轉到你的頁面。

    詳細來說,301和302狀態碼都表示重定向,就是說瀏覽器在拿到服務器返回的這個狀態碼后會自動跳轉到一個新的URL地址,這個地址可以從響應的Location首部中獲取(用戶看到的效果就是他輸入的地址A瞬間變成了另一個地址B)——這是它們的共同點。他們的不同在于。301表示舊地址A的資源已經被永久地移除了(這個資源不可訪問了),搜索引擎在抓取新內容的同時也將舊的網址交換為重定向之后的網址;302表示舊地址A的資源還在(仍然可以訪問),這個重定向只是臨時地從舊地址A跳轉到地址B,搜索引擎會抓取新的內容而保存舊的網址。即網址顯示舊網址A,但網頁內容確實B的頁面。

    14. HTTP狀態?Cookie 和 Session

    參考>>
    HTTP是一種無狀態協議,即服務器不保留與客戶交易時的任何狀態。
    也就是說,上一次的請求對這次的請求沒有任何影響,服務端也不會對客戶端上一次的請求進行任何記錄處理。

    HTTP協議的無狀態性帶來的問題:
    用戶登錄后,切換到其他界面,進行操作,服務器端是無法判斷是哪個用戶登錄的。 每次進行頁面跳轉的時候,得重新登錄。

    三、解決方案
    1.Cookie
    Cookie 是客戶端的存儲空間,由瀏覽器來維持。具體來說 cookie 機制采用的是在客戶端保持狀態的方案。

    Cookie,有時也用其復數形式Cookies,指某些網站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。

    Cookie 可以翻譯為“小甜品,小餅干” ,Cookie 在網絡系統中幾乎無處不在,當我們瀏覽以前訪問過的網站時,網頁中可能會出現 :你好 XXX,這會讓我們感覺很親切,就好像吃了一個小甜品一樣。

    Cookie 的實現過程:
    Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息,通知客戶端保存 Cookie,當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入 Cookie 值后發送出去。
    也就是 Cookie 是服務器生成的,但是發送給客戶端,并且由客戶端來保存。每次請求加上 Cookie就行了。服務器端發現客戶端發送過來的 Cookie 后,會去檢查究竟是從哪一個客戶端發來的連接請求,然后對比服務器上的記錄,最后得到之前的狀態信息。

    2.Session
    Session,中文經常翻譯為會話,其本來的含義是指有始有終的一系列動作/消息,比如打電話是從拿起電話撥號到掛斷電話這中間的一系列過程可以稱之為一個 Session。然而當 Session 一詞與網絡協議相關聯時,它又往往隱含了“面向連接”或“保持狀態”這樣兩個含義。

    Session 是另一種記錄客戶狀態的機制,不同的是 Cookie 保存在客戶端瀏覽器中,而 Session 保存在服務器上。

    客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上,這就是 Session。客戶端瀏覽器再次訪問時,只需要從該 Session 中查找該客戶的狀態就可以了。

    雖然 Session 保存在服務器,對客戶端是透明的,它的正常運行仍然需要客戶端瀏覽器的支持。這是因為 Session 需要使用Cookie 作為識別標志。HTTP協議是無狀態的,Session 不能依據HTTP連接來判斷是否為同一客戶,因此服務器向客戶端瀏覽器發送一個名為 JSESSIONID 的 Cookie,它的值為該 Session 的 id(即放在HTTP響應報文頭部信息里的Set-Cookie)。Session依據該 Cookie 來識別是否為同一用戶。

    3.Cookie 和 Session 的區別
    (1)Cookie 數據存放在客戶的瀏覽器上,Session 數據放在服務器上;
    (2)Cookie 不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙,考慮到安全應當使用 Session ;
    (3)Session 會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能。考慮到減輕服務器性能方面,應當使用COOKIE;
    (4)單個Cookie 在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能超過3K;

    Cookie 和 Session 應用場景

    (1)登錄網站,今輸入用戶名密碼登錄了,第二天再打開很多情況下就直接打開了。這個時候用到的一個機制就是cookie。

    (2)session一個場景是購物車,添加了商品之后客戶端處可以知道添加了哪些商品,而服務器端如何判別呢,所以也需要存儲一些信息就用到了session。

    總結

    以上是生活随笔為你收集整理的计算机网络面试问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    青青河边草观看完整版高清 | 99精品视频在线观看播放 | 6699私人影院| 久久精品男人的天堂 | 成年人免费看片网站 | 成人av资源网站 | 国产在线观看免费 | 国产成人精品久久亚洲高清不卡 | 色国产精品一区在线观看 | 91人人爽人人爽人人精88v | 中文综合在线 | 国产黄在线 | 伊人天堂久久 | 免费av的网站 | 日韩在线一二三区 | 2019久久精品 | 一本一道波多野毛片中文在线 | 中文字幕人成人 | 国产激情电影综合在线看 | 免费黄色激情视频 | 亚洲二区精品 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 天堂网一区二区 | 天天干天天操天天搞 | 久久久亚洲麻豆日韩精品一区三区 | 最近能播放的中文字幕 | 亚洲成人资源在线观看 | 玖玖色在线观看 | 国产精品嫩草影院123 | 亚洲最新视频在线播放 | 精品视频一区在线观看 | 深爱开心激情 | 热re99久久精品国产66热 | 人人爽人人av | 久久精品三 | 欧美一级激情 | 成人在线免费观看视视频 | 国产高清日韩 | 日韩欧美在线观看一区二区 | 亚洲精品乱码久久久一二三 | 日韩在线观看你懂得 | 天天综合网 天天 | 麻豆精品视频在线 | 国内精品在线看 | 久草视频免费在线观看 | 久久久久久久久久久久影院 | 精品在线观看一区二区 | 国产视频精品久久 | 伊人久在线 | 九七视频在线观看 | wwwwww黄| 黄色一级动作片 | 亚洲午夜不卡 | 一级做a爱片性色毛片www | 99久久精品免费看国产 | 国产视频二区三区 | 免费一级特黄毛大片 | 国产玖玖在线 | 制服丝袜成人在线 | av天天在线观看 | 国产一级视频在线 | 国产成人精品一区二区在线 | 久久国产精品二国产精品中国洋人 | 夜夜视频 | 波多野结衣视频一区二区三区 | 亚洲美女视频在线观看 | 在线观看免费观看在线91 | 久久成人欧美 | 激情丁香综合 | 天天操天天爽天天干 | 亚洲日本黄色 | 91丨九色丨蝌蚪丨老版 | 久久久久久久久久久国产精品 | 国产无遮挡猛进猛出免费软件 | av成人动漫在线观看 | 国产亚洲精品久 | 久久久久国产a免费观看rela | 国产小视频福利在线 | 欧美日韩国产免费视频 | 99热国产精品 | 99热精品视 | 日韩精品视频免费专区在线播放 | 五月天中文字幕mv在线 | 99久久久成人国产精品 | 精品一区二区在线免费观看 | 最近免费在线观看 | 日韩中文字幕91 | 日韩视频二区 | 人人擦| 久艹视频免费观看 | 国产精品久久久久久久久久白浆 | 亚洲国产中文字幕在线观看 | 久久五月婷婷丁香 | 91插插插网站 | 成人在线一区二区三区 | 亚洲精品国偷拍自产在线观看 | 久草在线网址 | av丁香花| av高清免费在线 | 狠狠干,狠狠操 | 天天躁日日躁狠狠躁av中文 | 在线观看成年人 | 国产精品久久久久久久免费观看 | 网站在线观看日韩 | 青青河边草免费观看 | 不卡的av片| 日韩视频免费观看高清完整版在线 | 国产精品黑丝在线观看 | 国产精品久久久久久久久大全 | 香蕉网站在线观看 | 亚洲开心激情 | 日韩一级黄色大片 | 国产精品久久久久久久毛片 | 不卡中文字幕在线 | 成人午夜精品福利免费 | 日韩电影在线一区二区 | 精品伊人久久久 | 中中文字幕av | 亚洲欧美日韩精品一区二区 | 久久欧美精品 | 不卡精品视频 | av一区二区三区在线播放 | 国产精品久久久久久久av电影 | 亚洲第一中文网 | 国产亚洲无 | 国产精品成人免费精品自在线观看 | 国产精品久久久区三区天天噜 | 亚洲精品美女久久 | 精品久久久久久久久亚洲 | 免费精品视频在线观看 | 色婷av| 欧美中文字幕久久 | 中文字幕在线播放一区二区 | 久久久久欠精品国产毛片国产毛生 | 在线观看不卡视频 | 日本女人在线观看 | 免费视频一二三区 | 视频一区久久 | 在线91视频| 久久香蕉国产精品麻豆粉嫩av | 成年人在线免费看 | 免费观看成年人视频 | 色综合久久天天 | 国产在线理论片 | 久久精品视频在线免费观看 | 午夜视频福利 | 久久一区国产 | 婷婷色网站 | 亚洲国产中文字幕 | 天堂视频中文在线 | 亚洲午夜精品久久久久久久久久久久 | 日韩一三区| 天天操天天色天天射 | 免费视频99| 丰满少妇在线观看网站 | 麻豆国产在线视频 | 欧美日韩免费看 | 粉嫩av一区二区三区免费 | 亚洲精品免费在线视频 | 久99久在线 | 首页国产精品 | 精品久久久久久久久亚洲 | 欧洲精品码一区二区三区免费看 | 天天干人人干 | 欧美精品一区二区三区一线天视频 | 黄色片视频免费 | 日韩免费小视频 | 国产精品一区二区三区久久久 | 超碰97在线人人 | 中文字幕在线观看一区二区 | .国产精品成人自产拍在线观看6 | 久久中文视频 | 国产色 在线 | 久久永久免费 | 香蕉影视app| 高清在线观看av | 成年人在线观看免费视频 | 91在线播放国产 | 五月天婷婷视频 | av黄在线播放| 国产91国语对白在线 | 亚洲国产人午在线一二区 | 在线免费观看黄网站 | 69视频在线播放 | 国产精品二区在线 | 色婷婷av一区二 | 91精品视频播放 | 网站你懂的| 香蕉视频在线看 | 天天色欧美 | 操操日 | 国产视频精品久久 | 最近2019好看的中文字幕免费 | 国产精品第三页 | 国产精品网站一区二区三区 | 久久久久亚洲国产 | 精品国内自产拍在线观看视频 | www.玖玖玖 | 精品一区二区三区在线播放 | 精品国产成人在线 | 欧美一级特黄aaaaaa大片在线观看 | 国产精品黑丝在线观看 | 国产中文欧美日韩在线 | 久久久综合香蕉尹人综合网 | 国产精品午夜免费福利视频 | 国产一区二区不卡在线 | 国产电影一区二区三区四区 | 午夜成人影视 | 久久99精品久久久久久久久久久久 | 91麻豆精品国产91久久久久久 | 国产精品亚洲片夜色在线 | 99国产一区二区三精品乱码 | 激情av网址 | 夜夜视频欧洲 | 国产精品永久免费视频 | 日韩网站免费观看 | 色婷婷激情电影 | 国产成人久久精品 | 欧美在线资源 | 在线观看亚洲成人 | 国产精品欧美 | 狠狠色丁香婷婷综合最新地址 | 亚洲国产精品成人综合 | 国产高清网站 | 日日躁夜夜躁aaaaxxxx | 国产精品一区二区久久 | 久久国产精品影片 | 国产精品福利在线观看 | 国产亚洲精品久久久久久无几年桃 | 国产高清中文字幕 | 毛片激情永久免费 | 午夜精品视频福利 | 成人免费亚洲 | 日韩av中文字幕在线 | 成人午夜精品 | 久久久久久久久久久久av | 五月婷av | 久久久免费精品国产一区二区 | 婷婷国产视频 | 久草剧场 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 日韩中文字幕亚洲一区二区va在线 | 成人av免费电影 | 91精品麻豆 | 夜夜躁日日躁狠狠躁 | 成年免费在线视频 | 亚洲国产中文字幕在线视频综合 | 日本一区二区三区免费观看 | 亚洲一级特黄 | а中文在线天堂 | 国产免费影院 | 99草视频 | 免费视频国产 | 天堂av在线7| 91精品视频免费观看 | 免费看一级黄色大全 | 国产精品美女久久久网av | 免费观看日韩 | 日韩精品一区二区三区在线视频 | 日韩狠狠操 | 国产护士av | 粉嫩av一区二区三区四区在线观看 | 久久国产精品99久久人人澡 | 成人在线黄色 | 91精品久久久久久粉嫩 | 精品久久一区 | 黄色片免费电影 | 日韩视频在线不卡 | 亚洲一级黄色片 | 91精品视频在线免费观看 | 国产一区二区高清不卡 | 欧美爽爽爽 | 午夜久久福利视频 | 国产一区观看 | 亚洲精品免费在线视频 | 天天摸日日操 | 人人插人人射 | 国产高清在线免费视频 | 欧美精品一区二区三区四区在线 | av网站在线观看播放 | 91成人在线观看高潮 | 狠狠干狠狠色 | 伊人国产女| 日韩专区视频 | 免费进去里的视频 | 色在线免费 | 日韩欧美在线一区二区 | 亚洲在线视频播放 | 久久精品xxx | 91久久久久久久一区二区 | 天堂在线视频中文网 | 免费福利在线 | 国产99久久精品一区二区300 | 视频二区在线视频 | 五月香视频在线观看 | 五月天综合网 | 午夜av剧场 | 免费观看性生交 | www.伊人色.com| 国产一区二区在线免费播放 | 久在线 | 91香蕉视频好色先生 | 成人一区在线观看 | 在线观看电影av | 永久免费的av电影 | 精品国产99国产精品 | 成人免费视频播放 | 超碰.com| 免费看污的网站 | 久久精品国产一区二区电影 | 国产精品成人一区二区三区吃奶 | 手机成人在线电影 | av在线免费播放 | 91精品在线麻豆 | av观看网站 | 久草精品视频在线播放 | 亚洲精品久久久久久久不卡四虎 | 国产一线天在线观看 | 亚洲高清色综合 | 久久综合九色综合97婷婷女人 | 伊人五月综合 | 久久久久久久99 | 综合激情网 | 久久精品官网 | 国产午夜精品理论片在线 | 午夜电影一区 | 日韩三级免费 | 男女啪啪免费网站 | 最新av网址大全 | 狠狠躁夜夜a产精品视频 | 99精品国产一区二区三区不卡 | 日韩av二区| 最近在线中文字幕 | 亚洲国产中文字幕在线视频综合 | 玖玖999 | 久久久免费观看 | 欧美一性一交一乱 | 成人av在线看 | 国产玖玖在线 | 人人插人人费 | 久久99精品久久久久蜜臀 | 久久久国产一区 | 国产午夜剧场 | av天天色| 国产麻豆电影在线观看 | 日韩欧美在线影院 | 一区中文字幕 | 久久五月激情 | av成人免费 | 成人av中文字幕在线观看 | 欧美日韩视频观看 | 999热线在线观看 | 欧美成人影音 | 国产精品白丝jk白祙 | 黄色网免费 | 伊人久久国产精品 | 国产成人在线综合 | 色插综合| 天天干 天天摸 天天操 | 欧美午夜久久久 | 91资源在线 | 97精品一区 | 午夜精品一区二区三区四区 | 婷婷六月激情 | 欧美日韩亚洲精品在线 | 亚洲最大免费成人网 | 狠狠色狠狠色综合日日92 | 亚洲乱亚洲乱妇 | 国色综合 | 国产99久久久国产精品成人免费 | 日产乱码一二三区别在线 | 992tv成人免费看片 | 免费看污网站 | 黄色三级av | 手机在线永久免费观看av片 | 色综合天天综合在线视频 | 久久久夜色 | 国产热re99久久6国产精品 | 97超碰超碰久久福利超碰 | 精品国产网址 | 午夜视频不卡 | 亚洲成人在线免费 | 欧美乱码精品一区二区 | 91看片一区二区三区 | 欧美精品乱码久久久久久按摩 | www亚洲精品 | 精品理论片 | 一区二区亚洲精品 | 狠狠狠干 | 日本久久久亚洲精品 | 日韩色综合 | 人人爽人人爽人人片av免 | 手机色在线| 午夜av激情 | 欧美高清视频不卡网 | 青春草免费视频 | 国产精品18久久久久久首页狼 | 亚洲激情视频在线观看 | 精品国产1区二区 | 99中文字幕在线观看 | 国产69精品久久99的直播节目 | 亚洲一区二区视频在线 | 超碰在线公开免费 | 国产亚洲精品美女久久 | 亚洲精品乱码久久久久久蜜桃91 | 免费瑟瑟网站 | 97自拍超碰 | 日韩欧美精品一区二区三区经典 | 色噜噜色噜噜 | 中文字幕人成不卡一区 | 99精品在线免费视频 | 伊人射 | 国产亚洲精品久久 | 亚洲国产激情 | 久久国产露脸精品国产 | 久草亚洲视频 | 欧美一级免费在线 | 黄色毛片观看 | 日韩二区在线 | 婷婷精品| 精品久久久久久久久久久久久久久久久久 | 精品在线播放 | 国产成人精品一区二区三区在线 | 婷婷精品视频 | 91九色蝌蚪国产 | 久热免费在线观看 | 午夜精品一区二区三区在线播放 | 久久九九影视 | 91在线观看视频 | 亚洲一区欧美激情 | 国产精品18久久久久久不卡孕妇 | 69国产盗摄一区二区三区五区 | av在线网站免费观看 | 伊甸园永久入口www 99热 精品在线 | 欧美激情综合五月色丁香 | 欧美精品久久99 | 久久久久久网址 | 深夜福利视频在线观看 | 在线观看中文字幕 | 黄色在线观看网站 | 午夜视频免费在线观看 | 亚洲久草视频 | 国产高清第一页 | 99热官网 | 欧美 亚洲 另类 激情 另类 | 免费在线观看污网站 | 国产精品美女免费 | 黄色a大片 | 色综合欧洲 | 99在线免费视频 | 国产成人一区二区精品非洲 | 国产视频每日更新 | 亚洲欧美综合 | 国产成本人视频在线观看 | 青草视频在线免费 | 日韩在线理论 | 国产精品自在欧美一区 | 久久久一本精品99久久精品 | 欧美人体xx| 欧美一级在线观看视频 | 444av| 人人dvd| 91资源在线 | av中文字幕第一页 | 日韩av免费一区 | 九九热免费在线观看 | 久久精品亚洲一区二区三区观看模式 | 久久福利在线 | 午夜.dj高清免费观看视频 | 精品国产一区二区三区四区vr | 国产高清视频色在线www | 黄色高清视频在线观看 | 亚洲国产一区二区精品专区 | 成人国产精品久久久春色 | 久草视频视频在线播放 | 激情网综合| 日日干综合 | 五月开心色 | 午夜视频一区二区 | 国产精品乱码在线 | 国内精品一区二区 | 日韩在线播放视频 | 国产一卡久久电影永久 | 中文字幕精品www乱入免费视频 | 色91在线视频 | 中文字幕一区二区在线播放 | 狠色在线| 精品免费视频. | 伊人伊成久久人综合网小说 | www夜夜操com| 精品伦理一区二区三区 | 色综合天天色 | 久久精品网站免费观看 | 91九色国产视频 | 亚洲禁18久人片 | 国产在线看一区 | 亚洲伊人网在线观看 | a级免费观看 | 亚洲国产精品成人女人久久 | 免费黄色看片 | 69亚洲精品| 国产精品久久久久久久免费 | 天天干天天干天天射 | 91pony九色丨交换 | 亚洲成a人片77777潘金莲 | 天天干天天干天天干 | 黄色av一区二区三区 | 在线亚洲小视频 | 不卡的av中文字幕 | 日韩成片 | 97超碰人人看| 日日夜夜网站 | 欧美一区二区视频97 | 人人澡人人添人人爽一区二区 | 欧美做受xxx | 综合色狠狠 | 午夜.dj高清免费观看视频 | 一区二区三区在线看 | 久久综合成人 | 日产中文字幕 | 国产精品网红福利 | 一级黄色在线视频 | 在线综合 亚洲 欧美在线视频 | 精品久久精品 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲精品xx | 91久久人澡人人添人人爽欧美 | 日韩美在线 | 国产精品免费观看久久 | 亚洲免费精品视频 | 97色噜噜 | 操操操人人人 | 手机在线看永久av片免费 | 久草精品视频 | 亚洲在线网址 | 狠狠色免费 | 97精产国品一二三产区在线 | 高清av不卡 | 99成人免费视频 | 99福利片| 久久影院中文字幕 | 日韩欧美xx | 久久五月情影视 | 十八岁以下禁止观看的1000个网站 | 日韩a免费 | 日本韩国在线不卡 | 2018亚洲男人天堂 | 久久99久久99精品免费看小说 | 国产在线污 | 国产精品s色 | 久久久91精品国产一区二区精品 | 亚洲精品综合欧美二区变态 | 91麻豆精品国产91 | 高清久久久久久 | 国内丰满少妇猛烈精品播放 | 午夜在线看片 | 在线观看中文字幕网站 | 久久精品亚洲综合专区 | 丁香综合网 | 国产97视频| 日韩久久午夜一级啪啪 | 亚洲色视频 | 99久久久成人国产精品 | 久久精国产 | 国产专区视频在线 | 欧美另类一二三四区 | 黄色在线观看免费网站 | 亚洲理论在线观看 | 九九日韩 | 日韩欧美电影在线观看 | 女人久久久久 | 午夜丁香视频在线观看 | 日韩中文字幕视频在线观看 | 免费网站看v片在线a | 一区二区三区日韩视频在线观看 | 国产成人精品亚洲日本在线观看 | 国产精品久久久久久妇 | 日产中文字幕 | 国产黄色精品在线观看 | 98超碰人人 | 在线免费av网站 | 久久久久免费精品国产小说色大师 | 中文字幕美女免费在线 | 天天操夜夜看 | 国产婷婷精品av在线 | 欧美日韩中文字幕在线视频 | 中文字幕在线中文 | 在线观影网站 | 99视频在线免费 | 国产成本人视频在线观看 | 久草线| 久久综合婷婷国产二区高清 | 久久中文欧美 | 欧美怡红院视频 | 中文字幕在线免费看 | 免费观看性生活大片 | 久操视频在线免费看 | 亚洲三级性片 | 日韩欧美视频 | 在线观看黄色小视频 | 久久九九免费 | 色悠悠久久综合 | 色a在线观看 | 日韩视频免费观看高清完整版在线 | 日本在线观看视频一区 | 国产一区私人高清影院 | 在线黄色国产 | 69av免费视频 | 在线看片中文字幕 | 久久综合九色综合久久久精品综合 | 亚洲 欧洲 国产 日本 综合 | 五月婷婷综合网 | 久久免费看视频 | www亚洲视频 | 一区二区中文字幕在线 | 久久久久久久久久伊人 | 天天夜操| 丁香六月欧美 | 最近最新mv字幕免费观看 | 97影视| 久草视频免费看 | 国产精品剧情 | va视频在线观看 | 成人免费网视频 | 91av官网 | 成人va天堂| 99国产一区 | 久久久久久黄 | 久久久免费精品 | 亚洲国产精品久久久久婷婷884 | 国产成人久久精品77777综合 | 日韩在线视 | 午夜国产福利在线 | 国产成人精品一区二 | 国产香蕉视频在线播放 | 亚洲影视九九影院在线观看 | 91高清免费 | 成人久久精品视频 | 91亚洲精 | av免费观看高清 | 欧美动漫一区二区三区 | 免费日韩av电影 | 久久999久久 | 91精品久久久久久久久久入口 | 亚洲精品玖玖玖av在线看 | 一本大道久久精品懂色aⅴ 五月婷社区 | 久久国产精品小视频 | 亚洲一区视频免费观看 | 国产热re99久久6国产精品 | 日韩h在线观看 | 久久国产精品小视频 | 午夜精品久久久久久久99 | 久久精品黄色 | 国产一区在线视频观看 | aaa免费毛片 | 亚洲综合色丁香婷婷六月图片 | 欧美日韩国产高清视频 | 久久伊人婷婷 | 国色天香永久免费 | 日韩一区二区三免费高清在线观看 | 精品国产91亚洲一区二区三区www | 日日夜精品 | av在线看网站 | 91久久电影| 免费视频一二三 | 久草视频在线观 | av在线免费观看黄 | 99热这里只有精品免费 | 麻豆视频观看 | 黄色毛片在线 | 天天色天天干天天色 | 日韩爱爱网站 | 亚洲午夜久久久久久久久电影网 | 国产免费人成xvideos视频 | 国产精品区免费视频 | 国产精品第一页在线观看 | 久久黄色免费视频 | 欧美综合在线视频 | 91免费视频网站在线观看 | 日狠狠 | 国产理伦在线 | 波多野结衣在线中文字幕 | 日韩av电影国产 | 视频一区二区在线 | 丁香 久久 综合 | 99在线精品观看 | 中国一级片在线 | 久草在线综合网 | 狠狠狠色丁香综合久久天下网 | 亚洲精品日韩av | 中文字幕在线成人 | 97视频网站| 色偷偷88888欧美精品久久久 | 午夜国产一区二区三区四区 | 国产91精品看黄网站在线观看动漫 | 久久久久激情视频 | 亚洲天堂自拍视频 | 狠狠的日日 | 久久国产精品一二三区 | 超碰在97| 免费视频一区 | 中文字幕一区av | 麻豆传媒视频观看 | 久久99精品久久只有精品 | 欧美性黑人 | 日日操日日干 | 最新av观看 | 在线小视频国产 | 91av色 | 婷婷视频在线观看 | 91成人天堂久久成人 | 久久精品国产免费 | 国产不卡在线观看 | 国产亚洲无| 91看片在线播放 | 日批视频国产 | 国产精品丝袜在线 | 国内免费久久久久久久久久久 | 午夜国产福利在线 | 丁香婷婷色| 欧美一二三专区 | 一级特黄av | 日本不卡一区二区 | 国产中文字幕视频 | www.av免费观看 | 国产精品女同一区二区三区久久夜 | 国产999精品视频 | 中文一二区 | 久色 网 | 豆豆色资源网xfplay | 91在线看片 | 亚洲综合在线五月 | 99久久综合国产精品二区 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 91九色自拍 | 国产成人免费 | 一区二区三区免费看 | 久久综合久色欧美综合狠狠 | 91一区一区三区 | 成人av片免费看 | 亚洲精品国产精品国自产观看 | av观看在线观看 | 久影院 | 日日干日日色 | 一级黄色在线视频 | a视频免费看 | 亚洲精品午夜久久久久久久久久久 | 亚洲精品国产精品99久久 | 久久国语露脸国产精品电影 | 最新av电影网站 | 中文字幕在线观看资源 | 狠狠狠干狠狠 | 国产精品资源 | 2019久久精品 | 一区二区三区四区五区在线视频 | 欧美在线久久 | 精品二区视频 | 91高清视频在线 | 国产69精品久久久久9999apgf | 伊人亚洲精品 | www.国产在线视频 | 97国产一区二区 | 欧美 激情在线 | 久草在线手机视频 | 天天骚夜夜操 | 成人高清在线观看 | 91av视频导航 | 黄在线免费观看 | 日韩中文字幕一区 | 97人人视频 | 久久久国内精品 | 久久久久久久久精 | 美女黄久久 | 免费观看91视频大全 | 一区二区三区www | 又紧又大又爽精品一区二区 | 国产麻豆剧果冻传媒视频播放量 | 一区二区三区免费在线观看视频 | 亚洲精选在线 | 天天曰天天射 | 久久久久女教师免费一区 | 99视频导航 | 最新午夜| 懂色av懂色av粉嫩av分享吧 | 国产黄色精品网站 | 中文字幕日本在线观看 | 国产高清专区 | 欧美一性一交一乱 | 国产伦精品一区二区三区… | 国产女人18毛片水真多18精品 | 国产精品美女久久久久久久久 | 国产视频资源 | www.久久99 | 国产福利小视频在线 | av在线网站观看 | 97超碰在线资源 | 深爱激情久久 | 久热免费 | 91精品国产自产在线观看永久 | 77国产精品 | 99久久99视频 | 国产福利91精品一区 | 三级av在线免费观看 | 麻豆免费视频观看 | 欧美热久久 | 粉嫩一区二区三区粉嫩91 | 久久久久女人精品毛片 | 天天干天天操天天射 | 91精品办公室少妇高潮对白 | 91传媒视频在线观看 | 91综合色| 久久综合久久综合这里只有精品 | 1000部国产精品成人观看 | 亚洲一区网 | 日韩综合第一页 | 久久综合成人 | 99热最新地址 | 午夜在线看片 | 色激情五月 | 久久久精品久久 | 亚洲美女在线国产 | 久久se视频 | 国产成人精品av | 亚洲国产免费av | av播放在线 | 国产精品美女久久久网av | 狠狠躁18三区二区一区ai明星 | 99视频免费观看 | 麻豆视频在线观看免费 | 国产精品久久久一区二区 | 久久久91精品国产一区二区精品 | av网站有哪些 | 国产又粗又猛又黄 | 久久久久久国产精品久久 | 日韩三级一区 | 免费日韩精品 | 国产字幕在线观看 | 久久久香蕉视频 | 日韩在线观看中文字幕 | 一区二区精品视频 | 久久欧美视频 | 免费三级骚 | 亚州成人av在线 | 狠狠色综合欧美激情 | 久久精品99国产精品亚洲最刺激 | 韩国av一区二区 | 欧美激情综合五月色丁香 | 国产精品免费观看久久 | 超碰97人人射妻 | 人人草在线视频 | 日韩免费一区二区在线观看 | 99re中文字幕 | 九色琪琪久久综合网天天 | 国产精品精品国产 | 久久久国产精品久久久 | 最新动作电影 | av超碰免费在线 | www狠狠操| 天天操月月操 | 91漂亮少妇露脸在线播放 | 日韩精品中文字幕在线 | 日韩欧美有码在线 | 亚洲 欧美 成人 | 99久久精品国产一区二区三区 | 国产高清视频在线播放 | 日日碰夜夜爽 | 日韩午夜在线 | 成年人黄色在线观看 | av电影中文字幕在线观看 | 精品成人国产 | 国产精品免费视频网站 | avove黑丝| 久久高清片 | 国产裸体bbb视频 | 精品亚洲欧美无人区乱码 | 丁香激情综合久久伊人久久 | 免费视频在线观看网站 | 国产精品久久久久久久久免费看 | 色综合久久88 | 9999精品| 国产永久免费高清在线观看视频 | 中文字幕资源在线 | 免费看色的网站 | 国内久久视频 | 91在线欧美| 国产日韩欧美在线影视 | 九九九在线 | 五月天综合色激情 | 中文高清av | 日本久久久久久久久 | 黄色的网站在线 | 在线视频婷婷 | 中文在线字幕免费观看 | 成人av在线一区二区 | 久久免费中文视频 | 激情综合网婷婷 | 欧美日韩高清一区二区 | 久久国产区 | 国产一级片一区二区三区 | 玖玖视频网 | 国产九色视频在线观看 | 日韩免费在线视频 | 国产 一区二区三区 在线 | 国产精品岛国久久久久久久久红粉 | 免费人人干 | 久久99免费观看 | 一区二区精品视频 | 91精品啪在线观看国产线免费 | 久久精品国产精品 | 97在线精品国自产拍中文 | 国产精品成人自产拍在线观看 | 91九色性视频 | 天天做天天爱夜夜爽 | 日韩欧美一区二区三区在线观看 | 天天视频色版 | 99成人在线视频 | 欧美一级免费 | 天天干天天拍 | 最近中文字幕免费 | 日本精品二区 | 久久久私人影院 | 久黄色| av电影在线观看 | 日韩在线视频一区二区三区 | 国产99中文字幕 | 亚洲在线资源 | 久久综合狠狠狠色97 | av888av.com | 欧美日韩午夜 | 91精品国产99久久久久久久 | 精品亚洲午夜久久久久91 | 色综合久久久久综合体 | 久久99久久精品 | 五月婷激情| 国产999精品久久久久久绿帽 | 亚洲综合最新在线 | 五月天婷亚洲天综合网鲁鲁鲁 | 中文字幕亚洲综合久久五月天色无吗'' | 美女视频黄在线观看 | 特片网久久 | 亚洲最新av网址 | 国产亚洲无 | 中文在线资源 | 午夜精品福利一区二区三区蜜桃 | 美女免费视频网站 | 亚洲一区日韩在线 | 国产精品成人一区二区三区 | 夜夜爽天天爽 | 亚洲精品美女久久久 | 国产.精品.日韩.另类.中文.在线.播放 | 欧美一级乱黄 | 操久久免费视频 | 国产又粗又猛又黄又爽视频 | 黄色av一级片 | 天天色天天射天天操 | 亚洲午夜久久久影院 | 波多野结衣视频一区 | 精品亚洲男同gayvideo网站 | 国产高清成人av | 欧美成人xxx| 亚洲精品女人久久久 | 超碰在线天天 | 久久www免费视频 | 成人a级黄色片 | 成年人黄色免费看 | 日韩专区在线播放 | 91免费试看 | 韩日三级av| 天天操天天综合网 | 成人在线黄色 | 中文字幕在线看视频 | 日韩精品久久中文字幕 | 在线观看va | 亚洲精品午夜aaa久久久 | 欧美成人在线网站 | 成人网在线免费视频 | 日韩欧美高清免费 | 免费福利在线 | 伊人婷婷激情 | 午夜视频在线观看一区二区三区 | 久久av在线| 国产日韩欧美中文 | 日韩大片在线免费观看 | 午夜视频99 | 免费看日韩片 | 久久精品欧美一区二区三区麻豆 | 久久综合99 | 六月天综合网 | 国产手机免费视频 | 久久久久久高清 | 444av| 天天爽天天摸 | 色com网 | 亚洲成人免费在线观看 | 在线小视频你懂的 | 91资源在线播放 | 亚洲涩涩网 | 成 人 黄 色视频免费播放 |