【計算機網絡】計算機網絡 面試高頻考點總結

🎈一、概括

⛳ 網絡分層有什麼好處?

分層可以將每個層的工作都獨立起來,即使某一層出現了問題也不會影響到整個系統。而且分層使得整個系統更加易於擴展,也更便於單獨實現每個分層的協議

⛳ OSI分層模型以及每一層的功能?

OSI參考模型分爲七層,從上到下分別是:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層

分層名稱 功能
應用層 應用程序之間的通信
表示層 把設備的固有數據格式轉化成網絡標準格式
會話層 通信管理,負責建立和斷開連接
傳輸層 端到端之間的數據傳輸
網絡層 地址管理與路由選擇
數據鏈路層 互聯設備之間傳送識別數據幀
物理層 以‘0’‘1’代表電壓高低

⛳ TCP/IP五層模型以及各層都有那些協議?

TCP/IP五層模型從上到下有:應用層、傳輸層、網絡層、數據鏈路層、物理層。

分層 協議
應用層 HTTP,SMTP,POP3,TELNET,SSL/TLS,HTML,DNS
傳輸層 TCP、UDP
網絡層 ARP,IPV4,IPV6,ICMP
數據鏈路層/物理層 以太網、無線LAN

⛳輸入一個網址後發生了什麼?

  1. 瀏覽器通過查詢DNS,查找這個URL的IP地址
  2. 得到目標服務器的IP地址及端口號(http 80端口,https 443端口),會調用系統庫函數socket,請求一個TCP流套接字。客戶端向服務器發送HTTP請求報文
    應用層:客戶端發送HTTP請求報文。
    傳輸層:(加入源端口、目的端口)建立連接。實際發送數據之前,三次握手客戶端和服務器建立起一個TCP連接。
    網絡層:(加入IP頭)路由尋址。
    數據鏈路層:(加入frame頭)傳輸數據。
    物理層:物理傳輸bit。
  3. 服務器端經過物理層→數據鏈路層→網絡層→傳輸層→應用層,解析請求報文,發送HTTP響應報文。
  4. 關閉連接,TCP四次揮手。
  5. 客戶端解析HTTP響應報文,瀏覽器開始顯示HTML

⛳IP與MAC地址的區別是什麼?

  • 最大的區別就是IP是網絡層的協議,用於網絡層尋址。而MAC是數據鏈路層的協議,用於鏈路層尋址
  • IP地址的長度是32位,MAC地址長度是48位
  • IP地址是可變的,MAC地址是不可變
  • IP的分配是基於網絡的拓撲學,MAC的分配是基於製造商

🎈二、應用層

⛳說說HTTP的報文格式?

  • Http協議有兩種報文,分別是請求報文和響應報文,每種報文有三個部分
  • 請求報文分爲:請求行(請求方法、URL、版本號)、請求報頭、實體
  • 響應報文分爲:響應行(版本號、狀態碼、具體信息)、響應報頭、實體

⛳HTTP請求頭有哪些主要字段?

  • Host:接受請求的服務器地址,可以是IP或者是域名
  • User-Agent:發送請求的應用名稱
  • Connection:指定與連接相關的屬性,例如(Keep_Alive,長連接)
  • Accept-Charset:通知服務器端可以發送的編碼格式
  • Accept-Encoding:通知服務器端可以發送的數據壓縮格式
  • Accept-Language:通知服務器端可以發送的語言

⛳HTTP響應頭有哪些主要字段?

  • Server:服務器應用軟件的名稱和版本
  • Content-Type:響應正文的類型
  • Content-Length:響應正文的長度
  • Content-Charset:響應正文所使用的編碼
  • Content-Encoding:響應正文使用的數據壓縮格式
  • Content-Language:響應正文使用的語言

⛳HTTP有哪些請求方法?

  • GET:獲取資源,使用URL訪問時就會使用GET方法
  • POST:傳輸實體,使用表單提交時會使用POST方法,實體中存放用戶上傳的信息
  • HEAD:獲取報文首部,和GET方法相似但不會返回實體,用於URL的有效性以及資源更新的日期
  • PUT:提交上傳給服務器對象
  • DELETE:刪除服務器對象

⛳GET方法和POST方法有什麼區別?

  • GET方法的參數是存放在URL中,POST方法的參數是存放在實體中
  • GET方法相比POST方法更加不安全,不適合傳輸敏感信息
  • GET方法在URL中傳送的參數是有長度限制的,而POST沒有
  • GET方法參數只接受ASCII字符,POST沒有限制
  • GET方法回退是無害的,POST方法會再次提交請求
  • GET方法會被瀏覽器主動cache,而POST不會
  • GET方法不會改變服務器資源,POST可能會對服務器資源進行改變
  • GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留

⛳瞭解哪些HTTP的狀態碼?

  • 1XX:服務器接到請求,目前正常
  • 2XX:操作成功
    200:操作成功
    204:請求成功,但響應報文中無實體部分
    206:表示客戶端進行了範圍請求
  • 3XX:重定向
    301:永久重定向
    302:臨時重定向
    303:和302相同的功能,303明確客戶端應該使用GET方法
    304:所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之後修改的資源
  • 4XX:客戶端錯誤
    400:報文中有語法錯誤
    401:請求需要認證用戶信息
    403:服務器理解請求但拒絕
    404:找不到
  • 5XX:服務器錯誤
    500:服務器內部錯誤
    503:服務器超負荷或停機維護中,無法處理請求

⛳什麼是Cookie?

由於HTTP協議是無狀態的,所以當我們需要來保存狀態信息時就會使用Cookie。Cookie時服務器發送到瀏覽器並保存在本地的一小塊數據,在瀏覽器之後的每一次請求都會被攜帶,用於在服務器區別不同狀態信息。

⛳什麼是Session?

Session與Cookie的作用相同,也是爲了保存用戶的狀態信息。Session保存在服務器中,當瀏覽器第一次訪問服務器時,就會被創建一個Session_ID,在返回響應時就會使用響應報文中的Set-Cookie將Session_ID設置到瀏覽器的Cookie中。此後服務器收到請求後,就通過Cookie值找到相應的Session對應的狀態信息。

⛳Cookie和Session的區別?

  • Cookie保存在瀏覽器,容易被窺視和修改。而Session保存在服務器,較爲安全
  • Cookie只能存儲ASCCII碼字符串。而Session可以存儲任何類型的數據
  • 對於大型網站,Session佔用開銷很大,會過多消費服務器資源,而Cookie不會

⛳HTTP1.0和1.1有什麼區別?

  • HTTP1.0使用短連接,每次發送數據都進行TCP建立連接,效率低。HTTP1.1改用長連接,只需要建立一次連接就可以進行多次傳輸數據。
  • HTTP1.0不支持斷點傳送,每次都會傳送全部的頁面和數據。HTTP1.1支持斷點續傳
  • HTTP1.0認爲每一個計算機只能綁定一個IP,所以請求消息中的URL沒有傳遞主機名。HTTP1.1在一臺服務器上可以存在多個虛擬主機

⛳HTTP2.0有什麼新特性?

  • HTTP2.0爲了解決報文頭過大的問題進行了頭部壓縮
  • HTTP2.0不使用ASCII碼而使用了更加靠近TCP/IP的二進制格式
  • HTTP2.0強化了安全,HTTP2.0一般跑在HTTPS上
  • HTTP2.0每一個請求都是用做連接共享,一個連接上可以有多個請求

⛳爲什麼需要HTTPS?

  • HTTP存在很大的安全問題。首先消息是明文傳輸,內容可能被竊聽;其次無法驗證通信對方的身份,身份可能被僞裝;而且還無法證明報文的完整性,報文就是可竄改的。綜上,需要一個安全的通信方式,就是HTTPS。
  • HTTPS不是一個應用層新的協議,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議代替,再讓SSL/TLS與傳輸層通信。

⛳對稱加密和非對稱加密分別是什麼?

  • 對稱加密就是加密和解密使用相同密鑰,它的優點是運算速度快,缺點是無法安全的將密鑰傳輸給對方
  • 非對稱加密又稱公開密鑰加密算法,通信雙方各自持有一個公鑰一個私鑰,公鑰可以公開給所有人,私鑰只能自己持有。通常是使用通信對方的公鑰加密,對端使用自己的私鑰進行解密。非對稱加密算法還用來進行簽名,可以進行驗證身份。它的優點就是安全,缺點也就是運算速度慢

⛳HTTPS怎麼進行加密的?

HTTPS結合了對稱加密和非對稱加密的優缺點,採用混合加密機制。先使用非對稱加密算法在建立連接後將之後要使用的密鑰安全的傳輸到對端。接着雙方使用剛剛的密鑰進行對稱加密通信保證效率。

⛳HTTP和HTTPS的區別?

  • HTTP信息是明文傳輸,HTTPS則是具有安全性的ssl加密傳輸協議。
  • HTTPS需要申請CA證書,一般免費的較少,因此需要收費
  • HTTP使用端口爲80,HTTPS使用端口爲443

⛳瞭解DNS協議嗎?

  • DNS就是域名解析系統,它提供了根據網絡主機名或者別名來解析到對應的IP地址的服務。DNS內部實現是一個分佈式數據庫,每個站點只保存自己的那部分數據,它採用了一種查詢回覆的方式。
  • 域名系統的層次結構從上到下依次是:根域名服務器(.)、頂級域名服務器(edu,gov,com,net)、權威域名服務器,另外,大多主機還有自己的本地域名服務器
  • DNS的端口使用53,使用TCP和UDP協議進行傳輸,大多使用UDP。使用TCP的情況有以下兩種:
    (1)返回的響應超過512字節
    (2)進行區域傳送時(主域名服務器向輔域名服務器傳送改變的那部分數據)
  • DNS採用緩存機制,各級域名服務器查詢到對應的IP地址後,就會緩存,每隔一段時間後會失效一次

⛳DNS的查找過程是怎樣的?

  1. 瀏覽器從接收到的url中抽取出域名地址,將域名傳給DNS應用的客戶端
  2. 檢查瀏覽器緩存、本地hosts文件是否有這個網址的映射,如果有,就調用這個IP地址映射
  3. 如果沒有,則查找本地DNS解析器緩存是否有這個網址的映射,如果有,返回映射
  4. 如果沒有,則向DNS服務器提出查詢請求
  5. 服務器接收到查詢時,查詢本地配置區域資源,查到就返回結果
  6. 如果查不到,但服務器緩存了此網址映射關係,返回查找結果
  7. 如果沒有緩存,就繼續間請求轉發至上一級DNS服務器進行查詢。最終將解析結果依次返回本地DNS服務器,本地DNS服務器在返回給客戶端,並把這個映射存到服務器的緩存中

⛳瞭解FTP協議嗎?

  • FTP是一個遠程傳輸文件的協議,是一個運行在TCP上的協議。
  • FTP使用了兩個並行的TCP連接來傳輸文件,一個是控制連接(21端口),一個是數據連接(20端口)。如果要進行文件傳輸,首先打開21端口建立連接後,纔可建立數據傳輸連接進行傳輸數據。
  • 根據數據連接是否是服務器端主動建立,FTP 有主動和被動兩種模式:主動模式是服務器主動建立連接,端口號爲20,客戶端端口隨機,這種方式會降低客戶端的安全性。被動模式是客戶端主動建立連接,端口號爲20,服務端端口號隨機,這種方式會降低服務端的安全性

⛳瞭解DHCP協議嗎?

  • DHCP是一個動態主機配置協議,採用了即插即用的方式,用戶不需要手動配置IP信息。DHCP不僅配置了IP地址,也會同時配置相應的子網掩碼、默認網關。
  • 它的工作流程爲:首先等待分配IP的客戶端使用UDP將請求報文廣播到同一個子網中,DHCP服務器收到報文後,就爲其分配相應的IP地址,然後廣播出去,此時可能同時有多個DHCP服務器進行相應發送了多個信息,客戶端收到某個服務器提高的信息後,就發送 Request 報文給該 DHCP 服務器。最後DHCP 服務器發送 Ack 報文,表示客戶端此時可以使用提供給它的信息。

⛳瞭解電子郵件相關協議嗎?

電子郵件協議包含發送協議和接收協議,發送協議常有:SMTP,接受協議常有:POP3和IMAP
在這裏插入圖片描述
SMTP協議:是郵件應用的核心,採用了命令響應的格式,默認端口使用25。它不使用中間郵件服務器發送郵件,而是直接到達接收方的郵件服務器。SMTP協議只能發送ASCII碼。
POP3協議:它的作用就是將接收方的郵件服務器的郵件傳送到代理機上。POP3 的特點是隻要用戶從服務器上讀取了郵件,就把該郵件刪除。但最新版本的 POP3 可以不刪除郵件。
IMAP協議:IMAP 協議中客戶端和服務器上的郵件保持同步,如果不手動刪除郵件,那麼服務器上的郵件也不會被刪除。IMAP 這種做法可以讓用戶隨時隨地去訪問服務器上的郵件。

🎈三、傳輸層

⛳瞭解UDP協議嗎?

UDP是一個無連接的,儘可能交付的傳輸層協議,它僅僅實現了多路複用分用和基礎的校驗和機制而沒有實現擁塞控制和流量控制機制,同時支持一對一、一對多、多對多的通信。UDP協議的首部只有8個字節大,包含了源端口、目的端口、首部長度、校驗和這四部分。

⛳有了TCP爲什麼還需要UDP?在什麼場景下使用?

UDP獨有的特點就是:

  • 無需建立連接,這樣就免去了建立連接所花費的時間和資源,即時性強
  • 無連接的狀態,無連接狀態就無需保存連接中的狀態,佔用資源小能支持更多活躍用戶
  • 首部開銷小,TCP協議首部佔用20個字節,而UDP只佔用8個字節,更輕便
  • 應用層可以靈活的決定發送的數據,使用UDP也就增加了應用層的可操作性和靈活性

UDP的引用場景主要有:

  • DNS協議(使用UDP速度快)
  • RIP路由選擇表的更新(路由表迭代快)
  • 流式多媒體(屏幕廣播)
  • 英特網電話(語音、視頻)
  • DHCP請求報文會分行封裝到UDP 動態主機配置協議

⛳瞭解TCP協議嗎?

TCP協議是一個面向連接雙全工傳輸層協議,它實現了報文段的可靠傳輸,保證應用層收到的數據不重複不錯位不丟失。除此之外,TCP協議還實現了流量控制和擁塞控制,並且在每次建立和斷開連接時需要進行三次握手和四次揮手的操作。

⛳TCP協議的使用場景?

TCP協議用在需要確保正確可靠的情況下:

  • SMTP 電子郵件協議
  • Telnet 遠程終端訪問協議
  • Http Web協議
  • FTP 文件傳輸協議

⛳說說TCP協議怎麼實現的可靠傳輸?

TCP通過實現:確認重傳機制數據流編號流量控制擁塞控制機制來實現可靠傳輸。

  • 確認重傳機制實現了建立連接、發送數據報時會回發確認包的機制,實現了丟包延時重傳機制
  • 通過對數據流的編號來實現數據分包,保證數據都是按序傳輸 ,也實現了累計確認的機制
  • 流量控制實現了對接收端的接受能力的檢驗,以便更好的調整發送能力,使用了滑動窗口和計時器
  • 擁塞控制是對於整個網絡情況的一個適應的機制,它通過慢啓動、擁塞避免、快速恢復來實現

⛳說說TCP協議的三次握手?

  1. 首先客戶端未開始發起連接時處於 CLOSE 狀態,服務器處於LISTEN 狀態。客戶端發器鏈接時,首先發送一個不含有數據的特殊報文段,被稱爲SYN報文段。這個報文段中,首部標誌位SYN置1表示請求建立連接,並且在首部的序列號中生成自己的傳輸數據的起始序列號:client_isn,一併發送到服務端。發送後,客戶端狀態變爲 SYN_SENT
  2. 當服務器收到客戶端的建立連接的請求時,就開始爲此次連接創建緩存和變量。同時,服務端要向客戶端發送請求連接以及確認應答的報文段,稱之爲SYNACK報文段。在這個報文段中,首部標誌位SYN置1表示請求連接,並且服務端生成自己的發送數據起始序列號:sever_isn,同時要對客戶端發來的SYN報文段進行確認,也就是將自己的ACK確認號設置爲client_isn + 1,一併發回客戶端。發送後,服務端狀態變爲SYN_RCVD
  3. 客戶端收到SYNACK報文段後,也開始爲此次連接創建緩存和變量。同時客戶端要向服務端發送一個確認的ACK包。在這次的數據首部中,SYN就可以置0,ACK確認號就爲sever_isn+1,序列號爲client_isn + 1。同時第三次握手時可以攜帶數據。發送出後,客戶端狀態變爲ESTABLISHED ,表示已經建立連接,服務端收到ACK包後,狀態也變爲ESTABLISHED 。至此,三次握手結束,兩端正式建立連接。

⛳說說TCP協議的四次揮手?

  1. 客戶端發起連接結束,發送一個FIN報文段,這個報文段首部的FIN標誌位置1表示要斷開連接。發送後,客戶端狀態變爲FIN_WAIT1 狀態
  2. 服務端接收到這個報文段後,得知客戶端想斷開連接,首先發送一個ACK報文段表示收到這個請求,發送後服務端狀態變爲CLOSE_WAIT狀態,此時服務端不會立馬斷開連接,而是等待將所有未傳輸完的報文都傳輸給客戶端後,再準備斷開連接。客戶端接收到這個ACK報文段後,狀態變爲FIN_WAIT2
  3. 當服務端準備好斷開連接時,會主動發送一個FIN報文段給客戶端,表示已經可以斷開連接了。發送這個報文段後,服務端的狀態就變爲LAST_ACK
  4. 客戶端收到這個FIN報文段後,就會回發一個ACK包給服務端,表示已經收到了,此時服務端收到後就關閉了連接,而客戶端進入TIME_WAIT,這個階段客戶端會等待一段時間後才關閉連接,以確保服務端確實收到了ACK包,否則如果ACK丟失就會進行重傳。至此四次揮手結束,客戶端服務端正式斷開連接。

⛳說說TCP協議的流量控制機制?

流量控制是爲了控制發送方的速率,保證接收方來得及接收。在TCP的首部中有一個窗口大小的字段,這個字段用來表示接受發送方每次發送的數據包數量。每次接受方都會返回一個自己還可以接受的數據包的數量,發送方就會依據此值來決定發送數量。當接收方緩衝區已滿時,將窗口設置爲0,發送端不發生數據。之後發送方會定時發送一個檢驗報文,以便得到最新的接收端窗口大小。

⛳說說TCP協議的擁塞控制機制?

擁塞控制機制是爲了適應網絡擁堵的情況,當出現網絡擁堵時,應控制發送方的發送數據速率。有三個階段,分別是:慢啓動、擁塞避免、快速恢復。

  • 首先發送方維護一個擁塞窗口(cwnd)的變量。起始時cwnd=1,發送方一次發送一個報文段,如果收到確認包,就將cwnd加倍,呈指數型增長。設置一個慢啓動閾值爲上次出現擁塞時的cwnd/2。接下來只要cwnd大於等於慢啓動閾值就進入擁塞避免。如果出現丟包,cwnd置1重新進入慢啓動
  • 在擁塞避免狀態下,每次收到確認包只將自己的cwnd窗口加一,直到發生三次重複ACK或丟包現象
  • 如果出現三次相同ACK就進入快速恢復,立即發送丟失的報文段,當收到該報文段的確認ACK後修改慢啓動閾值和cwnd爲當前的cwnd的一半後進入擁塞避免狀態

⛳TCP和UDP有什麼區別呢?

  • TCP面向連接,UDP無連接
  • TCP可靠安全,UDP不可靠
  • TCP點對點,UDP可以一對一、一對多、多對多
  • TCP實現了流量控制和擁塞控制,UDP沒有
  • TCP首部開銷大(20字節) ,UDP小(8字節)
  • TCP有接收緩衝區和發送緩衝區,UDP只有接受緩衝區沒有發送
  • TCP面向字節流,可拆分合並數據報,UDP面向數據報,不可拆分合並
  • UDP最大傳輸64k數據,TCP沒有限制

🎈四、網絡層

⛳IP的分類?

  • A類:1字節(8位)網絡號,3字節(24位)主機號。表示範圍是:0.0.0.0-127.255.255.255,默認網絡掩碼爲:255.0.0.0,A類地址分配給規模特別大的網絡使用
  • B類:2字節(16位)網絡號,2字節(16位)主機號。128.0.0.0-191.255.255.255,默認網絡掩碼爲:255.255.0.0,B類地址分配給一般的中型網絡
  • C類:3字節(24位)網絡號,1字節(8位)主機號。192.0.0.0-223.255.255.255,默認網絡掩碼是:255.255.255.0,C類地址分配給小型網絡,如局域網
  • D類地址稱爲廣播地址

⛳IPV4到IPV6的轉換方式?

⛳瞭解ARP協議嗎?

ARP協議是地址解析協議,在數據包傳輸過程中,IP 數據報的源地址和目的地址始終不變,而 MAC 地址隨着鏈路的改變而改變。ARP協議就實現了通過IP地址得到對應的MAC地址。每一個主機中都有一個ARP的告訴緩存,裏面有本局域網上的各主機和路由器的IP地址到MAC地址的映射,如果緩存中找不到,主機就通過廣播的形式發送請求,相對應的主機收到報文就會將自己的MAC地址告知。

⛳瞭解ICMP協議嗎?

  • ICMP是一個控制報文協議,它被主機和路由器用來溝通彼此網絡層的信息,雖然封裝在IP數據報中,但不屬於高層協議。
  • ICMP報文分爲差錯報文和詢問報文,常用的Ping就是一個ICMP的報文,它用來測試兩臺主機之間的連通性。還可以通過時間和成功相應的次數來預估出數據包往返的時間以及丟包率。

⛳瞭解路由選擇協議嗎?

路由選擇協議就是合理的選擇出數據包下次要發送到的路由器位置。可以把路由選擇協議劃分爲兩大類:

  • 自治系統內部的路由選擇:RIP 和 OSPF
  • 自治系統間的路由選擇:BGP

RIP:他是一個自治系統內部的路由選擇協議。基於距離向量的算法進行選擇,最多能經過的路由器數目爲15,超過15就意味着不可達。RIP會按照固定時間間隔和相鄰的路由器交換自己的路由表,經過若干次的交換後,所有路由器都會最終知道到達本自治系統中任何一個網絡的最短距離和下一跳路由地址。RIP實現簡單,開銷小,但最大距離15限制了網絡規模。

OSPF:是一個自治系統內部的路由選擇協議。基於開放最短路徑優先的算法實現的。只有當鏈路狀態發生變化時,路由器纔會發送信息。相比於RIP,它更加安全,且對單播和多播路由選擇總和支持。

**BGP:**是一個邊界網關協議,針對不同的網關進行路由選擇,由於種種限制,它只能找到一條比較好的路徑而不是最佳路徑。

歡迎閱讀我的其它文章:
傳輸層:認識TCP、UDP協議
應用層:HTTP協議總結歸納
Java基礎 面試高頻考點總結
併發篇 面試高頻考點總結
有任何問題歡迎指正,也歡迎點贊收藏!如果想加一波關注那就再好不過了😁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章