計算機網路面試常考知識點整理
有那麼一些零碎的小知識點,偶爾很迷惑,偶爾被忽略,偶然卻發現它們很重要,也是各大筆試和麵試高頻出現考點。這段時間正好在溫習這些,就整理在這裡,一起學習一起提高!後面還會繼續補充。
——前言
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.0 到 126.0.0.0 。可用的 A 類網路有126 個,每個網路能容納 1 億多個主機。
2 . B 類 IP 地址:一個 B 類 IP 地址由 2 個位元組的網路地址和 2 個位元組的主機地址組成,網路地址的最高位必須是“ 10 ”,地址範圍從 128.0.0.0 到 191.255.255.255 。可用的 B 類網路有 16382 個,每個網路能容納 6 萬多個主機 。
3 . C 類 IP 地址:一個 C 類 IP 地址由 3 位元組的網路地址和 1 位元組的主機地址組成,網路地址的最高位必須是“ 110 ”。範圍從 192.0.0.0 到 223.255.255.255 。 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服務。
參考資料:
——————————————————————————我是分割線————————————————————————
計算機網路系列的暫時整理到這裡吧,如果讀者發現還有哪些這方面的經典常考知識點也請指出,待續~
轉載請註明出處,謝謝!