面試常見問題——計算機網絡(一)
目錄:
- TCP/IP四層模型和OSI七層模型的區別與聯繫
- 電路交換、報文交換、分組交換
- 數據報和虛電路的比較
- 路由器的工作原理
- DHCP協議
- ARP協議工作流程
- HTTP協議的請求類型
- 路由器和交換機的區別
- 端口號作用,以及常用的端口號
- TCP和UDP的區別以及分別的使用場景
計算機網絡定義:以能夠相互共享資源的方式互聯起來的自治計算機系統的集合。
1、TCP/IP四層模型和OSI七層模型的區別與聯繫
(1)TCP/IP四層模型(見OSI七層模型描述)
- 網絡接口層(物理層+數據鏈路層)
- 網際層
- 傳輸層
- 應用層(會話層+表示層+應用層)
(2)OSI七層模型
- 通信子網(低三層)
- 物理層(Physical Link Layer)
- 傳輸單位:比特(bit)
- 主要功能:
- 爲上層協議提供了一個傳輸數據的物理媒體,實現比特流的透明傳輸
- 定義數據終端設備和數據通信設備的物理與邏輯連接方法
- 規定通信端點之間的機械特性、電氣特性、功能特性、過程特性
- 常見的物理媒體:
- 有線:
- 雙絞線
- 同軸電纜
- 光纖
- 無線:
- 無線電波
- 微波
- 紅外線
- 激光
- 有線:
- 典型協議:
- EIA-232C
- CCITT的X.21協議
- 物理層設備(不能隔離衝突域和廣播域):
- 中繼器:信號整形放大再轉發,消除信號的失真及衰減問題,具有5-4-3規則
- 5-4-3規則:10BASE5以太網規範中,互相串聯的中繼器的個數不能超過4個,用4箇中繼器串聯的5段通信介質中只有3段可以掛接計算機,其餘兩段只能用作擴展通信範圍的鏈路段。
- 集線器(多端口的中繼器)
- 中繼器:信號整形放大再轉發,消除信號的失真及衰減問題,具有5-4-3規則
- 數據鏈路層(Data Link Layer):點到點通信(主機到主機)
- 傳輸單位:幀(frame)
- 主要功能:
- 組裝成幀:將網絡層傳來的IP數據報組裝成幀(加首部,加尾部)
- 常用方法:
- 字符計數法:在幀頭部使用一個計數字段來標明幀內字符數
- 首尾定界法:使用特定字符或者比特模式定界幀的開始和結束
- 字符填充:在數據中的特殊字符前面用轉移字符填充
- 比特填充:遇到5個1填充一個0
- 違規編碼法:信號傳輸過程中採用違規的編碼來表示幀的起始和終止
- 常用方法:
- 差錯控制:
- 採取奇偶校驗碼、循環冗餘校驗(CRC)方式發現位錯,通過自動重傳請求(Automatic Repeat reQuest,ARQ)來重傳出錯的幀
- 糾錯編碼:海明碼
- 採取定時器和編號機制,保證每一幀最終都能有且僅有一次正確地交付給目的結點
- 流量控制:協調結點A的發送速率和結點B的接收速率
- 停止-等待協議(發送窗口 = 1,接收窗口 = 1):
- 發送方每發送一幀都要等待接收方的應答信號才能發送下一幀
- 後退N幀協議(GBN)(發送窗口 > 1,接收窗口 = 1):
- 發送方一次可以發送N幀,按序接收,重傳最後一個確認開始
- 選擇重傳協議(SR)(發送窗口 > 1,接收窗口 > 1):
- 發送方一次可以發送N幀,可以不按序接收,重傳沒有確認的幀
- 停止-等待協議(發送窗口 = 1,接收窗口 = 1):
- 介質訪問
- 隨機訪問
- ALOHA協議:
- 純ALOHA協議:不檢測直接發送,若無確認則等待重發
- 時隙ALOHA協議:將時間劃分爲若干等長時隙,按時發送
- CSMA協議(Carrier Sense Multiple Access,載波偵聽多路訪問):
- 1-堅持:閒則等待,忙則繼續監聽
- p-堅持:閒則以概率p發送,概率1-p等待下一個時隙,忙則等待一個隨機時間監聽
- 非堅持:閒則發送,忙則等待一個隨機時間監聽
- CSMA/CD協議(Carrier Sense Multiple Access with Collision Detection,載波監聽多路訪問/碰撞檢測)
- 先聽後發,邊聽邊發,衝突停發,隨機重發
- 碰撞解決:二進制指數退避算法
- CSMA/CA協議(Carrier Sense Multiple Access with Collision Avoidance,載波監聽多路訪問/碰撞避免):
- 避免碰撞:預約信道、ACK幀、RTS/CTS幀
- 碰撞解決:二進制指數退避算法
- ALOHA協議:
- 信道劃分:
- 頻分複用
- 時分複用
- 波分複用
- 碼分複用
- 輪詢訪問:
- 令牌傳遞協議,只有得到令牌的機器才能發送數據,其他必須等待
- 隨機訪問
- 組裝成幀:將網絡層傳來的IP數據報組裝成幀(加首部,加尾部)
- 子層:
- 介質訪問子層
- 鏈路訪問子層
- 典型協議:
- PPP協議(Point to Point Protocol,點到點協議):面向字節流,採用字節填充方式,支持全雙工鏈路,具有檢錯能力,但不具有糾錯能力,不可靠
- HDLC協議(High-Level Data Link Control,高級數據鏈路控制協議):面向比特,採用0比特插入法,幀分爲信息幀、監督幀和無編號幀,採用CRC幀校驗序列(FCS),可靠性高
- STP協議
- 幀中繼協議
- 鏈路層設備(能隔離衝突域,不能隔離廣播域):
- 網橋:網橋工作在數據鏈路層,可以互聯不同的物理層、不同的MAC 子層及不同速率的以太網
- 交換機:交換機工作在數據鏈路層,相當於一個多端口的網橋,是交換式局域網的核心設備。
- 網絡層(Network Layer):也稱爲網際層、IP層
- 傳輸單位:數據報
- 主要功能:
- 將IP地址翻譯爲MAC地址,並決定如何將數據從發送方路由到接收方
- 網際互聯
- 差錯控制
- 路由選擇
- 擁塞控制:保證通信子網能夠傳送待發送的數據,涉及網路中所有的主機、路由器
- 流量控制:發送端和接收端之間的點對點通信量的控制,抑制發送端的發送速率,以便使接收端來得及接收
- 典型協議:
- IP協議
- ICMP協議:用來給主機或路由器報告差錯和異常情況
- IGMP協議
- RARP協議
- ARP協議(Address Resolution Protocol,地址解析協議):用於映射計算機的物理地址與網絡IP地址。
- RIP協議(Routing Information Protocol,路由信息協議)
- OSPF協議(Open Shortest Path First,開放式最短路徑優先)
- BGP協議(Border Gateway Protocol,邊界網關協議):基於路徑-向量選擇協議,使用TCP,尋找的並非最佳路由
- 網絡層設備(能隔離衝突域和廣播域):
- 路由器
- 物理層(Physical Link Layer)
- 傳輸層承上啓下
- 傳輸層(Transport Layer):端到端通信(進程到進程),端指用戶程序的端口,端口號標識了應用層中不同的進程
- 傳輸單位:報文段(TCP)或用戶數據報(UDP)
- 主要功能:
- 端到端連接提供可靠的傳輸服務
- 三次握手(Three-way Handshake)
- 流量控制(Flow Control)
- 差錯控制
- 傳輸層分用和複用
- 分用:把收到的信息交付給上面應用層中相應的進程
- 複用:多個應用層進程可同時使用下面傳輸層的服務
- 典型協議:
- TCP協議(Transmission Control Protocol,傳輸控制協議)
- UDP協議(User Datagram Protocol,用戶數據報協議)
- 傳輸層(Transport Layer):端到端通信(進程到進程),端指用戶程序的端口,端口號標識了應用層中不同的進程
- 資源子網(高三層)
- 會話層(Session Layer)
- 主要功能:
- 負責管理主機間的會話進程,包括建立、管理和終止進程間的會話
- 提供單工(Simplex)、半雙工(Half Duplex)、全雙工(Full Duplex)三種通信模式的服務
- 會話層可以使用校驗點使通信會話在通信失效時從校驗點繼續恢復通信,實現數據同步
- RPC(Remote Procedure Call,遠程過程調用)、NFS(Network File System,網絡文件系統)工作在此層
- 主要功能:
- 表示層(Presentation Layer)
- 主要功能:
- 負責數據的編碼以及轉化,確保應用層能夠正常工作
- 界面與二進制代碼間互相轉化的地方
- 負責數據壓縮和解壓、加密和解密
- 可以根據不同的應用目的將數據處理爲不同的格式,表現出來就是各種各樣的文件擴展名
- 主要功能:
- 應用層(Application Layer)
- 主要功能:
- 負責明確通信對象,並確保有足夠的資源用於通信
- 典型協議:
- FTP(File Transfer Protocol,文件傳輸協議)
- SMTP(Simple Mail Transfer Protocol,電子郵件協議)
- HTTP(Hyper Text Transfer Protocol,超文本傳輸協議),HTTP協議用於從Web服務器傳輸超文本到本地瀏覽器的傳送協議,由請求和響應構成。
- 特點:
- 無連接、無狀態(但可用cookie、session等對客戶端瀏覽器做標記)
- 支持客戶/服務器模式
- 靈活,允許傳輸任意類型的數據對象,由Content-Type加以標記
- HTTP狀態碼:
-
狀態碼 描述 已定義範圍 分類 1XX 信息性狀態碼 100-101 信息提示 2XX 成功狀態碼 200-206 成功 3XX 重定向狀態碼 300-305 重定向 4XX 客戶端錯誤狀態碼 400-415 客戶端錯誤 5XX 服務器錯誤狀態碼 500-505 服務器錯誤
-
- 特點:
- HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,安全套接層):SSL是爲網絡通信提供安全及數據完整性的一種安全協議
- DNS(Domain Name System,域名系統):將域名解析爲IP地址
- DNS劫持:在劫持的網絡範圍內攔截域名解析的請求,分析請求的域名,把審查範圍以外的請求放行,審查範圍以內的請求返回假的IP地址,或者什麼都不做使請求失去響應,可以輕鬆獲取各種明文傳輸的密碼,比如各種網站的賬號信息都一覽無餘。
- SNMP(Simple Network Management Protocol,簡單網絡管理協議)
- 主要功能:
- 會話層(Session Layer)
(3)區別:
- OSI參考模型精確定義了三個概念:服務、協議和接口;TCP/IP模型沒有,不符合軟件工程思想
- 服務:下層爲緊鄰的上層提供的功能調用,是垂直的。對等實體在協議的控制下,使得本層可以爲上一層提供服務,但要實現本層協議還需要下一層所提供的服務
- 協議:由語法、語義、同步三部分組成,是控制兩個或多個對等實體進行通信的規則的集合,是水平的。
- 接口:同一結點內相鄰兩層間交換信息的連接點,是一個系統內部的規定。SAP(Service Access Point,服務訪問點)是一個邏輯接口,服務是通過SAP提供給上層使用的
- TCP/IP模型是事實上的國際標準
- OSI參考模型在網絡層支持無連接和面向連接的通信,在傳輸層僅有面向連接的通信。而TCP/IP模型在網際層僅有無連接的通信,傳輸層有面向連接和無連接的通信
(4)聯繫:
- 二者都採取分層的體系結構,分層的功能也大體相似
- 二者都基於獨立的協議棧的概念進行分層
- 二者都可以解決異構網絡的互聯,實現世界上不同廠家生產的計算機之間的通信
2、電路交換、報文交換、分組交換
- 電路交換:
- 兩個結點之間事先建立專用物理通信路徑,這一路徑在整個數據傳輸期間一直被獨佔,直到通信結束後才釋放
- 靈活性差,通路中任意一點出現故障,需要重新撥號建立新的連接
- 線路獨佔,信道利用率低
- 適用場景:數據量很大且傳送時間遠大於呼叫時間,如傳統電話網絡
- 報文交換(早期使用,現在用分組交換):
- 單位:報文
- 將整個報文轉發到相鄰節點,全部存儲下來,查找轉發表,轉發到下一個節點。
- 無須建立連接,在交換結點採取存儲轉發的傳輸方式
- 提高線路可靠性,提高線路利用率
- 對報文的大小無限制,要求網絡結點有較大的緩存空間
- 分組交換:
- 分組交換限制了每次傳送數據塊大小的上限,再加上源地址、目的地址、分組編號信息等控制信息,構成分組。
- 需要額外的信息量,流水線傳輸(後一個分組的存儲操作和前一個分組的轉發操作並行,減少報文的傳輸時間)
- 適用場景:端到端的通路由多段鏈路組成
3、數據報和虛電路的比較
- 分組交換可以分爲面向連接的虛電路和無連接的數據報方式。
4、路由器的工作原理
- 定義:具有多個輸入/輸出端口的專用計算機,其任務是連接異構網絡並完成路由選擇和分組轉發
- 工作原理:
- 路由器根據特定的路由選擇協議構造出路由表,同時定期的和相鄰路由器交換路由信息而不斷地更新和維護路由表。路由表包括:目的IP地址、子網掩碼、下一跳IP地址、接口等
- 路由選擇協議:
- RIP協議:基於距離向量路由選擇協議,使用UDP協議,與相鄰路由器交換整個路由表
- OSPF協議:基於鏈路狀態路由算法,使用IP協議,與全部路由器交換相鄰結點鏈路狀態
- 路由選擇協議:
- 路由器執行分組轉發算法:
- 從數據報的首部提取目的主機IP地址,得出目的網絡地址
- 若目的網絡地址與此路由器直接相連,則把數據報直接交付給目的主機,即直接交付
- 間接交付分爲三種:
- 若路由表中有目的地址的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器
- 若路由表中有到達目的網絡的路由,則把數據報傳送給路由表中所指明的下一跳路由器
- 若路由表中有一個默認路由,則把數據報傳送給路由表中指明的默認路由器
- 否則,報告分組轉發出錯
- 路由器根據特定的路由選擇協議構造出路由表,同時定期的和相鄰路由器交換路由信息而不斷地更新和維護路由表。路由表包括:目的IP地址、子網掩碼、下一跳IP地址、接口等
5、DHCP協議
- 定義:DHCP(Dynamic Host Configuration Protocol,動態主機配置協議):一個應用層協議,允許一臺計算機加入新的網絡和獲取IP地址不用手工參與。基於UDP協議工作
- DHCP服務器分配給DHCP客戶的IP地址是臨時的,因此DHCP客戶只能在一段有限的時間內(租用期)使用這個分配到的IP地址
- 主要功能:
- 給內部網絡自動分配IP地址
- 給用戶或內部網絡管理員作爲對所有計算機作中央管理的手段
- 出於方便,讓不會配置網絡參數的普通用戶通過網絡系統自動配置,自動分配IP地址及設置DNS等
- 僞裝的DHCP服務器:
- 用戶申請IP地址時,發廣播,內網中所有用戶都能聽到。如果存在多個DHCP服務器,則分別予以回覆,客戶機選擇最先收到的,如果黑客在內網裏也開啓了DHCP服務,用戶收到的回覆包則很可能就是黑客發出的。
6、ARP協議工作流程
- ARP協議(Address Resolution Protocol,地址解析協議):完成IP地址到MAC地址的映射。
- 工作流程:
- 每臺主機會在自己的ARP緩衝區中建立一個ARP列表,用於存儲IP地址和MAC地址的對應關係
- 當源主機需要將一個數據包發送到目標主機時,會首先檢查自己的ARP列表中是否存在該IP地址對應的MAC地址
- 如果存在,則直接將數據包發送到該MAC地址
- 如果不存在,想向本地網段發起一個ARP請求的廣播包,用於查詢目標主機對應的MAC地址,此ARP請求數據包裏包括源主機的IP地址、MAC地址以及目標主機的IP地址等
- 網絡中的所有主機收到這個ARP請求之後,會檢查數據包中的目的IP是否與自己的IP地址一致,
- 如果不同,則忽略此數據包
- 如果相同,該主機會將發送端的MAC地址與IP地址添加到自己的ARP列表中,如果ARP裏列表中已經存在該IP地址的相關信息,則將其覆蓋掉,然後給源主機單播一個ARP響應包,告訴對方自己是它需要查找的MAC地址
- 源主機收到這個ARP響應包後猛將得到的目的主機IP地址和MAC地址添加到自己的ARP列表中,並利用此信息開始數據的傳輸,如果源主機一直沒有收到ARP響應包,則表示ARP查詢失敗
7、HTTP協議的請求類型
- GET:
- 從服務器獲取信息,GET傳送的數據量小,不能大於2KB
- 具有冪等性,即對於同一URL的多個請求應該返回同樣的結果
- GET請求的數據會放在HTTP協議頭中,附在URL之後,問號分割URL和傳輸數據,用與符號連接不同參數,如果是中文,轉換爲加號,如果是中文/非數字字母,直接把字符串用BASE64加密,得到%XX的形式(XX爲以十六進制表示的ASCII)
- 通過GET提交數據,用戶名和密碼會明文出現在URL上
- GET能緩存
- GET編碼類型:application/x-www-form-url
- POST:
- 向服務器傳送信息,會修改服務器中的資源,POST傳送的數據量較大,一般默認爲不受限制
- POST請求的數據放在HTTP協議體中
- POST不能緩存
- POST編碼類型:encodedapplication/x-www-form-urlencoded 或 multipart/form-data。爲二進制數據使用多重編碼。
- PUT:
- 在給定的URL下存儲一個文檔
- DELETE:
- 刪除給定的URL所標誌的資源
8、路由器和交換機的區別
- 交換機工作在數據鏈路層,交換機根據MAC地址轉發數據幀,路由器工作在網絡層,根據IP地址轉發IP數據報
- 交換機是一根網線上網,但是大家上網是分別撥號,各自使用自己的寬帶,大家上網沒有影響。而路由器比交換機多了一個虛擬撥號功能,通過同一臺路由器上網的電腦是共用一個寬帶賬號,大家上網會相互影響。
- 交換機可以把很多主機連接起來,這些主機對外各有各的IP,路由器可以把一個IP分配給很多個主機使用,這些主機對外只表現出一個IP
- 交換機主要用於組建局域網,路由器主要負責讓主機連接外網
- 交換機只能隔離衝突域,不能隔離廣播域;路由器可以隔離衝突域和廣播域
9、端口號作用,以及常用的端口號
- 端口分爲TCP端口和UDP端口,端口號用於區分服務類別,爲端到端的連接提供了可能。
- 按端口號分類:
- 公認端口(Well-Known Ports):從0到1023,緊密綁定(binding)於一些服務
- 註冊端口(Registered Ports):從1024到49151,鬆散地綁定於一些服務
- 動態和/或私有端口(Dynamic and/or Private Ports):從49152到65535。理論上,不應爲服務分配這些端口
- 常用端口號:
- 21 FTP文件控制連接服務
- 23 TELNET終端仿真服務
- 25 SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議),提供簡單郵件服務傳輸服務,向郵件服務器主動發送電子郵件
- UDP 53 DNS域名解析服務
- 80 HTTP超文本傳輸服務
- 110 POP3(Post Office Protocol,郵局協議),“郵局協議版本3”使用的端口:向郵件服務器要求接收電子郵件
- UDP 161 SNMP簡單網絡管理協議使用的端口
- 443 HTTPS加密的超文本傳輸服務
- 520 RIP路由信息協議的端口
10、TCP和UDP的區別以及分別的使用場景
- 二者區別:
- 連接方式不同。TCP是面向連接的,基於字節流,UDP是無連接的,面向報文。
- 分組首部開銷不同。TCP首部開銷20字節,UDP首部開銷8字節
- 可靠性不同。TCP提供可靠交付,在連接時會進行三次握手,在傳輸數據時,有確認、重傳、擁塞控制等機制,UDP不保證提供可靠交付,沒有擁塞控制,不進行確認,只能提供“盡最大努力交付”,可能會出現分組丟失、重複、亂序,應用程序需要負責傳輸可靠性方面的所有工作
- 對系統資源的要求不同。TCP較多,UDP較少
- 通信方式不同。每個TCP連接是點到點的,UDP支持一對一,多對一,一對多,多對多的交互通信
- 適用場景:
- TCP:傳輸大量數據或需要接收數據許可的應用程序,如文件傳輸、遠程登陸、接收郵件等
- UDP:即時傳輸少量數據的應用程序,如IP電話、視頻會議、QQ聊天等
參考文獻:
[1]王道論壇. 2020計算機網絡考研複習指導. [M]北京:電子工業出版社,2019.1;
[2]猿媛之家. JAVA程序員面試筆試真題與解析. [M]北京:機械工業出版社,2017.01;