1. 程式人生 > >面試整理之計網(整理ing)

面試整理之計網(整理ing)

  • OSI參考模型

應用層:針對特定應用的協議,並規定應用程式中通訊相關的細節
表示層:應用處理的資料格式和網路標準資料的【資料轉換】
會話層:負責建立管理刪除會話【通訊管理】
傳輸層:確保兩個【節點】之間的資料傳輸
網路層:地址管理和路由選擇
資料鏈路層:互聯裝置之間傳送和識別資料幀【物理層面上節點之間的通訊傳輸】
物理層:位元流和電子訊號之間的切換

  • MTU 最大傳輸單元

  • TCP通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠傳輸

當傳送端的資料到達接收主機時,接收端主機會返回一個已經收到訊息的ACK。如果有ACK,說明資料已經成功到達對端,如果在一定時間內沒有等到確認應答,傳送端進行重發。

流控制:接收端主機告知傳送端自己可以接收資料的大小【視窗】,於是傳送端會發送不超過這個限度的資料。TCP首部有一個欄位用來通知視窗大小,欄位值越大,說明網路吞吐量越高。

擁塞控制:
慢啟動:隨著包的每次往返,指數增長—超時

  • 127.開頭的ip地址是內部主機迴環地址(loopback),永遠不能出現在主機外部的網路之中

  • localhost
    域名,大多數電腦上的localhost指向127.0.0.1,可以用它來獲取執行在本機上的網路服務

  • 0.0.0.0:
    本網路中的本機,在服務端繫結埠時繫結到0.0.0.0,這樣外界可以通過我多個ip地址(外網和內網)訪問我的服務
    在ipv4中表示一個無效未知不可用的目標;
    在伺服器中表示本機上任意的ipv4地址;
    表示預設路由,即當路由表中沒有找到完全匹配的路由時所對應的路由;
    當一個主機沒有被分配IP地址時用於表示主機本身(DHCP分配IP地址時)

  • 網路連線的建立

三次握手的時候TCP首部寫入MSS(最大訊息長度),告訴對方自己能夠適應的MSS大小,並在兩者選澤一個較小值使用。

每次確認應答不是每個段,而是多個段。

為什麼需要“三次握手”:為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤。
第一個連線請求報文段在某個網路結點長時間滯留了,以致延誤到連線釋放以後某個時間才到達報文段。本來這是一個早已失效的報文段,但server收到此失效的連線請求報文段後,誤以為是client再次發出的一個新的連線請求。於是向client發出確認報文段,同意建立連結,假設不採用“三次握手”,server此時已經建立新的連線了,但client此時沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料,但server以為新的運輸連線已經建立,並一直等待client發來資料。

主要防止失效報文使server一直等待。

只有兩次握手,服務端不知道客戶端是否已經收到自己的同步訊號,如果同步訊號丟失,兩邊的服務端同步訊號無法一致。

為什麼需要“四次揮手”:

tcp是全雙工模式,收到FIN時意味沒有資料再發來,但是還是可以繼續傳送資料。
重發可能丟失的ACK

其中一方,如a提出了釋放請求,b收到後進行報文確認,a到b的連線就釋放了;這個時候b還是可以向a傳送資料,a會直接接收,b傳送完成後再向a請求釋放,a傳送最後一個ack確認後,就會進入TIME_WAIT狀態,再停留2個MSL時間

B沒有收到ACK包,然後B等待ACK包超時,又向A傳送了一個FIN包
a) A是TIME_WAIT重發ACK,B收到這個ACK包進入CLOSED狀態
b) A是CLOSED,認為這是一個錯誤的連線,向B傳送一個RST包,當B收到這個RST包,進入CLOSED狀態
c) B沒有收到A的迴應,會繼續傳送FIN【TCP的重傳機制】直到重傳超時(至於這個時間是多長需要仔細研究),B重置這個連線,進入CLOSED狀態

【三次握手】:同步連線雙方的序列號和確認號並交換tcp視窗大小

  • ACK:確認應答
    RST:TCP出現異常,強制斷開連線
    SYN:希望建立連線
    FIN:今後不會有資料傳送,希望斷開連線

  • FTP:有兩條TCP連線,一條用來控制,一條用於資料(檔案)的傳輸 21
    SSH:加密的遠端登入系統,機密通訊內容 22
    TELNET:實現遠端登入的客戶端 23

  • MSL,Maximum Segment Life,這是TCP 對TCP Segment 生存時間的限制,報文最大生存時間
    TTL, Time to Live, IP對IP Datagram生存時間的限制,255s,MSL一般=TTL=255s
    RTT是客戶到伺服器往返所花時間(round-trip time,簡稱RTT)

  • tcp和udp區別

tcp:面向連線(3次握手、4次揮手),可靠的位元組流傳輸、傳輸慢、tcp擁塞控制(調節傳送速率)

udp:不需連線,只負責程序間交付,差錯檢測(傳輸層最基本的功能)、報文傳輸、傳輸快、udp流量不可調節

  • 埠和對應的服務
    ftp 21 ssh 22 telnet 23 http 80 https 443 mysql 3306

  • IP地址分為哪幾類
    A類:以0開頭,網路號8,主機號24
    B類:以10開頭,網路號16,主機號16
    C類:以110開頭,網路號24,主機號8
    D類:

網路號標識某個網路,主機號表示某個網路中的主機
網路號:子網掩碼和ip地址按位與,主機號:子網掩碼取反再和ip地址按位與

  • PKI(公鑰基礎結構)
    是一種通過可信賴的第三方【CA認證機構】檢查對方是否真實
    數字證書包含使用者身份資訊】使用者公鑰資訊(用於加密)及數字簽名(確保使用者資訊和公鑰資訊的真實合法性)
  • 會話跟蹤常用方法

    • URL重寫
    • 將會話ID新增到html隱藏表單元素中提交到伺服器
    • Cookie
  • CSRF(跨站請求偽造)
    偽造請求,冒充使用者在站內的正常操作。
    防範:
    關鍵操作只接受POST請求
    驗證碼
    檢測 Referer
    Token(不可預測性):保持原有引數不變,新增一個引數Token,隨機值且一次性(請求成功後更新Token),不知道Token而無法構造合法的請求進行攻擊,注意保密性,不放在URL中

  • XSS(跨站指令碼攻擊)
    過濾使用者的輸入,eg.對使用者輸入進行HTML escape

TCP 提供一種面向連線的、可靠的位元組流服務
在一個 TCP 連線中,僅有兩方進行彼此通訊。廣播和多播不能用於 TCP
TCP 使用校驗和,確認和重傳機制來保證可靠傳輸
TCP 給資料分節進行排序,並使用累積確認保證資料的順序不變和非重複
TCP 使用滑動視窗機制來實現流量控制,通過動態改變視窗的大小進行擁塞控制