那些不能遺忘的知識點回顧——計算機網絡系列(筆試面試高頻題)

有那麼一些零碎的小知識點,偶爾很迷惑,偶爾被忽略,偶然卻發現它們很重要,也是各大筆試和麪試高頻出現考點。這段時間正好在溫習這些,就整理在這裏,一塊兒學習一塊兒提升!後面還會繼續補充。面試

——前言算法

1.TCP的三次握手四次揮手瀏覽器

  第一次握手:Client將標誌位SYN置爲1,隨機產生一個值seq=J,並將該數據包發送給ServerClient進入SYN_SENT狀態,等待Server確認。安全

  第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求創建鏈接,Server將標誌位SYNACK都置爲1ack=J+1,隨機產生一個值seq=K,並將該數據包發送給Client以確認鏈接請求,Server進入SYN_RCVD狀態。服務器

  第三次握手:Client收到確認後,檢查ack是否爲J+1ACK是否爲1,若是正確則將標誌位ACK置爲1ack=K+1,並將該數據包發送給ServerServer檢查ack是否爲K+1ACK是否爲1,若是正確則鏈接創建成功,ClientServer進入ESTABLISHED狀態,完成三次握手,隨後ClientServer之間能夠開始傳輸數據了。網絡

  第一次揮手:Client發送一個FIN,用來關閉ClientServer的數據傳送,Client進入FIN_WAIT_1狀態。
  第二次揮手:Server收到FIN後,發送一個ACKClient,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
  第三次揮手:Server發送一個FIN,用來關閉ServerClient的數據傳送,Server進入LAST_ACK狀態。
  第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACKServer,確認序號爲收到序號+1Server進入CLOSED狀態,完成四次揮手。學習

 

實際中還會出現同時發起主動關閉的狀況,即同時揮手,示意圖以下:spa

 

  TIME_WAIT狀態後需等待2MSL(最大報文段生存時間)才能返回到CLOSE狀態,由於咱們必須假想網絡是不可靠的,有能夠最後一個ACK丟失。因此TIME_WAIT狀態就是用來重發可能丟失的ACK報文。計算機網絡

 

2.TCP的滑動窗口,流量控制和擁塞控制,快重傳和快恢復,超時重傳3d

  TCP協議做爲一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動窗口協議保證,而擁塞控制則由控制窗口結合一系列的控制算法實現。

  滑動窗口協議:1. 「窗口」對應的是一段能夠被髮送者發送的字節序列,其連續的範圍稱之爲「窗口」;2. 「滑動」則是指這段「容許發送的範圍」是能夠隨着發送的過程而變化的,方式就是按順序「滑動」。

  流量控制,主要是接收方傳遞信息給發送方,使其不要發送數據太快,是一種端到端的控制。主要的方式就是返回的ACK中會包含本身的接收窗口的大小,而且利用大小來控制發送方的數據發送。

  擁塞控制就是防止過多的數據注入到網絡中,這樣可使網絡中的路由器或鏈路不致過載。經常使用的方法就是:(1)慢開始、擁塞控制(2)快重傳、快恢復。

  數據在傳輸時不只一個窗口協議,還有一個擁塞窗口來控制數據的流量,使得數據不會一會兒都跑到網路中引發「擁塞」。擁塞窗口最初使用指數增加的速度來增長自身的窗口,直到發生超時重傳,再利用擁塞避免算法和慢啓動門限進行一次微調。

  擁塞避免算法就是:每通過一個往返時間RTT就把發送方的擁塞窗口+1,即讓擁塞窗口緩慢地增大,按照線性規律增加;當出現網絡擁塞,好比丟包時,將慢開始門限設爲原先的一半,而後將cwnd設爲1,執行慢啓動算法(較低的起點,指數級增加);

  慢啓動門限就是說,當擁塞窗口超過門限時,就使用擁塞避免算法,而在門限之內就採用慢啓動算法。一般擁塞窗口記作cwnd,慢啓動門限記作ssthresh

  慢開始和擁塞控制算法經常做爲一個總體使用,而快重傳和快恢復則是爲了減小由於擁塞致使的數據包丟失帶來的重傳時間,從而避免傳遞無用的數據到網絡。

  快重傳的機制是:

  1.接收方若是發現一個包丟失,則對後續的包繼續發送針對該包的重傳請求;

  2. 一旦發送方接收到三個同樣的確認,就知道該包以後出現了錯誤,馬上重傳該包;

  3. 此時發送方開始執行「快恢復」算法:

    *1. 慢開始門限減半;

    *2. cwnd設爲慢開始門限減半後的數值;

    *3. 執行擁塞避免算法(高起點,線性增加);

  超時重傳是TCP協議保證數據可靠性的另外一個重要機制,其原理是在發送某一個數據之後就開啓一個計時器,在必定時間內若是沒有獲得發送的數據報的ACK報文,那麼就從新發送數據,直到發送成功爲止。

 

3.TCP/IP結構及協議

  網絡接口層:Wi-FiATM GPRSEVDOHSPAPPP 幀中繼

  網際層:IPICMPPing的時候用到)、IGMP ARPRARP(這兩個有爭議,通常說TCP/IP中是網絡層協議,在OSI模型中劃分爲數據鏈路層協議)

  傳輸層:TCPUDPTLS

  應用層:FTPTELNETDNSSMTP(郵件傳輸)、DHCPHTTPHTTPSPOP3SSH等。

  ARP(Address Resolution Protocol,地址解析協議)ARP協議的基本功能就是經過目標設備的IP地址,查詢目標設備的MAC地址,以保證通訊的順利進行。

 

4.IP網絡地址分佈

  IP地址根據網絡ID的不一樣分爲5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。 

  1AIP地址:一個AIP地址由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是「0」,地址範圍從1.0.0.1 126.255.255.254。可用的A類網絡有126個,每一個網絡能容納1億多個主機。 

  2BIP地址:一個BIP地址由2個字節的網絡地址和2個字節的主機地址組成,網絡地址的最高位必須是「10」,地址範圍從128.0.0.1191.255.255.254。可用的B類網絡有16382個,每一個網絡能容納6萬多個主機 。 

  3CIP地址:一個CIP地址由3字節的網絡地址和1字節的主機地址組成,網絡地址的最高位必須是「110」。範圍從192.0.0.1223.255.255.254C類網絡可達209萬餘個,每一個網絡能容納254個主機。 

  4D類地址用於多點廣播:DIP地址第一個字節以「lll0」開始,它是一個專門保留的地址。它並不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。 

  5EIP地址:以「llll0」開始,爲未來使用保留。 

  在IP地址3種主要類型裏,各保留了3個區域做爲私有地址,其地址範圍以下: 

  A類地址中的保留地址:10.0.0.010.255.255.255 

  B類地址中的保留地址:172.16.0.0172.31.255.255

  C類地址中的保留地址:192.168.0.0192.168.255.255

  另外IPv6地址長度爲128位。

 

5.子網劃分-主機數

  一個網絡號192.168.5.0/24,子網掩碼是255.255.255.248,能夠構建的最大子網數和每一個子網最多可容納多少臺機器?

  題目給出的IP地址空間基於CIDR劃分,前24位是網絡號,後8位是主機號。子網掩碼最後是 2481111 1000)。至關於主機號又被分紅兩部分5位是子網號3位是主機號,因此子網個數是 2^5, 主機個數爲 2^3. 另外,主機號全 表明本地主機全 表示廣播共 個有效的.

 

6.網絡設備做用及所屬層

  1)物理層

  轉發器(repeater):有源轉發器將信號解調後再生放大,再調製後傳輸。

  集線器(hub):實現星形拓撲的以太網,簡單轉發比特。 

  網線、中繼器、網關。

  (2)數據鏈路層

  適配器(網卡):又稱網絡接口卡,用於計算機和局域網的通訊。

  網橋(bridge):用於在數據鏈路層擴展以太網,根據MAC幀的目的地址對收到的幀進行轉發和過濾。含有轉發表。它隔離了衝突域,但不隔離廣播域。

   第二層交換機(layer2 switch):多接口的網橋,又稱以太網交換機或第二層交換機。可實現虛擬局域網VLAN(Virtual LAN) 

  (3)網絡層

  第三層交換機(layer3 switch):能進行路由的交換機,具備一部分路由器功能。

  路由器(router):鏈接因特網中各局域網、廣域網的設備。擁有路由選擇處理機、交換結構、一組輸入端口和一組輸出端口。

 

7.主機字節序與網絡字節序

  主機字節序通常分爲大端和小端兩種,在X86平臺上通常採用小端模式。

  「小端」和「大端」表示多字節值的哪一端(小端或大端)存儲在該值的起始地址。小端存在起始地址,便是小端字節序;大端存在起始地址,便是大端字節序。

  1.小端法(Little-Endian)就是低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端。 

  2.大端法(Big-Endian)就是高位字節排放在內存的低地址端即該值的起始地址,低位字節排放在內存的高地址端。

 

  網絡字節序:網絡上的數據流是字節流,對於一個多字節數值,在進行網絡傳輸的時候,收到的第一個字節被看成高位看待,這就要求發送端發送的第一個字節應當是高位。而在發送端發送數據時,發送的第一個字節是該數字在內存中起始地址對應的字節。可見多字節數值在發送前,在內存中數值應該以大端法存放。網絡字節序說是大端字節序。

 

8.TCP和UDP的區別?

  TCP提供面向鏈接的、可靠的數據流傳輸,而UDP提供的是非面向鏈接的、不可靠的數據流傳輸。

  TCP傳輸單位稱爲TCP報文段,UDP傳輸單位稱爲用戶數據報。

  TCP注重數據安全性,UDP數據傳輸快,由於不須要鏈接等待,少了許多操做,可是其安全性卻通常。

  附:TCP對應的協議和UDP對應的協議

  TCP對應的協議:

  (1) FTP:定義了文件傳輸協議,使用21端口。

  (2) Telnet:一種用於遠程登錄的端口,使用23端口,用戶能夠以本身的身份遠程鏈接到計算機上,可提供基於DOS模式下的通訊服務。

  (3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。

  (4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。

  (5)HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。

  UDP對應的協議:

  (1) DNS:用於域名解析服務,將域名地址轉換爲IP地址。DNS用的是53號端口。

  (2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。因爲網絡設備不少,無鏈接的服務就體現出其優點。

  (3) TFTP(Trival File Tran敏感詞er Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。

 

參考資料:

計算機網絡之面試常考

《計算機網絡(第五版)》謝希仁

 


 

計算機網絡系列的暫時整理到這裏吧,若是讀者發現還有哪些這方面的經典常考知識點也請指出,待續~

轉載請註明出處,謝謝!

相關文章
相關標籤/搜索