天天看點

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

原文位址:http://www.cnblogs.com/webary/p/4830051.html。

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

——前言

1.TCP的三次握手四次揮手

  第一次握手:Client将标志位SYN置為1,随機産生一個值seq=J,并将該資料包發送給Server,Client進入SYN_SENT狀态,等待Server确認。

  第二次握手:Server收到資料包後由标志位SYN=1知道Client請求建立連接配接,Server将标志位SYN和ACK都置為1,ack=J+1,随機産生一個值seq=K,并将該資料包發送給Client以确認連接配接請求,Server進入SYN_RCVD狀态。

  第三次握手:Client收到确認後,檢查ack是否為J+1,ACK是否為1,如果正确則将标志位ACK置為1,ack=K+1,并将該資料包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正确則連接配接建立成功,Client和Server進入ESTABLISHED狀态,完成三次握手,随後Client與Server之間可以開始傳輸資料了。

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

  第一次揮手:Client發送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀态。

  第二次揮手:Server收到FIN後,發送一個ACK給Client,确認序号為收到序号+1(與SYN相同,一個FIN占用一個序号),Server進入CLOSE_WAIT狀态。

  第三次揮手:Server發送一個FIN,用來關閉Server到Client的資料傳送,Server進入LAST_ACK狀态。

  第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀态,接着發送一個ACK給Server,确認序号為收到序号+1,Server進入CLOSED狀态,完成四次揮手。

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

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

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

  TIME_WAIT狀态後需等待2MSL(最大封包段生存時間)才能傳回到CLOSE狀态,因為我們必須假想網絡是不可靠的,有可以最後一個ACK丢失。是以TIME_WAIT狀态就是用來重發可能丢失的ACK封包。

2.TCP的滑動視窗,流量控制和擁塞控制,快重傳和快恢複,逾時重傳

  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-Fi、ATM 、GPRS、EVDO、HSPA、PPP、 幀中繼等

  網際層:IP、ICMP(Ping的時候用到)、IGMP 、ARP、RARP(這兩個有争議,一般說TCP/IP中是網絡層協定,在OSI模型中劃分為資料鍊路層協定)

  傳輸層:TCP、UDP、TLS等

  應用層:FTP、TELNET、DNS、SMTP(郵件傳輸)、DHCP、HTTP、HTTPS、POP3、SSH等。

  ARP(Address Resolution Protocol,位址解析協定)。ARP協定的基本功能就是通過目标裝置的IP位址,查詢目标裝置的MAC位址,以保證通信的順利進行。

4.IP網絡位址分布

  IP位址根據網絡ID的不同分為5種類型,A類位址、B類位址、C類位址、D類位址和E類位址。 

  1.A類IP位址:一個A類IP位址由1位元組的網絡位址和3位元組主機位址組成,網絡位址的最高位必須是“0”,位址範圍從1.0.0.1 到126.255.255.254。可用的A類網絡有126個,每個網絡能容納1億多個主機。 

  2.B類IP位址:一個B類IP位址由2個位元組的網絡位址和2個位元組的主機位址組成,網絡位址的最高位必須是“10”,位址範圍從128.0.0.1到191.255.255.254。可用的B類網絡有16382個,每個網絡能容納6萬多個主機 。 

  3.C類IP位址:一個C類IP位址由3位元組的網絡位址和1位元組的主機位址組成,網絡位址的最高位必須是“110”。範圍從192.0.0.1到223.255.255.254。C類網絡可達209萬餘個,每個網絡能容納254個主機。 

  4.D類位址用于多點廣播:D類IP位址第一個位元組以“lll0”開始,它是一個專門保留的位址。它并不指向特定的網絡,目前這一類位址被用在多點廣播(Multicast)中。多點廣播位址用來一次尋址一組計算機,它辨別共享同一協定的一組計算機。 

  5.E類IP位址:以“llll0”開始,為将來使用保留。 

  在IP位址3種主要類型裡,各保留了3個區域作為私有位址,其位址範圍如下: 

  A類位址中的保留位址:10.0.0.0~10.255.255.255 

  B類位址中的保留位址:172.16.0.0~172.31.255.255

  C類位址中的保留位址:192.168.0.0~192.168.255.255

  另外IPv6位址長度為128位。

5.子網劃分-主機數

  一個網絡号192.168.5.0/24,子網路遮罩是255.255.255.248,可以建構的最大子網數和每個子網最多可容納多少台機器?

  題目給出的IP位址空間基于CIDR劃分,前24位是網絡号,後8位是主機号。子網路遮罩最後是 248(1111 1000)。相當于主機号又被分成兩部分, 前5位是子網号, 後3位是主機号,是以, 子網個數是 2^5, 主機個數為 2^3. 另外,主機号全 0 代表本地主機, 全 1 表示廣播. 共 6 個有效的.

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服務。

參考資料:

計算機網絡之面試常考

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