面試計算機網絡八股文五問五答第二期
作者:程序員小白條,個人博客
相信看了本文后,對你的面試是有一定幫助的!
?點贊?收藏?不迷路!?
1.OSI七層協議?
2. TCP和UDP傳輸協議的區別?
- TCP是可靠的傳輸協議,你知道它怎么實現的一些擁塞控制,或者說對于數據發送量的合理限制?
TCP(傳輸控制協議)通過擁塞控制和流量控制來實現可靠的數據傳輸。其中,擁塞控制是TCP用來控制網絡擁塞和避免網絡超載的機制,而流量控制是用來控制數據發送方與接收方之間的數據流量的機制。
擁塞控制主要通過以下幾個算法來實現:
- 慢啟動(Slow Start):在建立連接時,TCP發送方初始將擁塞窗口設置為一個較小的值,然后每收到一個確認,擁塞窗口指數式增加,以適應網絡的容量。
- 擁塞避免(Congestion Avoidance):一旦擁塞窗口達到一個閾值(擁塞窗口大小的一半),TCP發送方就采用線性增加的方式增加擁塞窗口,以更穩定地發送數據。
- 快速重傳(Fast Retransmit):如果TCP發送方連續接受到3個重復的確認(ACK),即表明網絡中有一段丟失的數據,TCP發送方將立即重傳這些數據,而不必等待超時。
- 快速恢復(Fast Recovery):在進行快速重傳后,TCP發送方將擁塞窗口減半,并且進入快速恢復狀態。在此狀態下,每收到一個確認,擁塞窗口仍然線性增加,但增加的速度較慢。
對于數據發送量的合理限制,TCP使用了流量控制機制來確保接收方能夠跟上發送方的發送速度。流量控制通過使用滑動窗口(Sliding Window)來限制發送方的數據發送量,確保不會使接收方無法處理大量數據。
滑動窗口的大小由接收方動態調整。每次接收方收到一定數量的數據后,會向發送方發送一個確認,確認中包含了接收方的可用窗口大小。發送方根據接收方返回的可用窗口大小來動態調整發送的數據量,以保持發送方和接收方的數據傳輸速度的平衡。
通過擁塞控制和流量控制的機制,TCP能夠根據網絡的狀況和接收方的處理能力來合理地限制數據發送量,同時保證網絡的穩定和可靠性。
3. 擁塞控制、超時重傳的具體原理?
擁塞控制:
擁塞控制的目的是避免網絡中的擁塞,保證網絡的穩定性。TCP使用擁塞窗口(Congestion Window)來控制發送方的數據發送速率。
慢啟動:當TCP建立連接時,發送方將初始擁塞窗口設置為一個比較小的值(一般為一個報文段的大小),然后隨著收到的確認報文的增加,指數級地增加擁塞窗口的大小。這樣做的目的是保守地探測當前網絡的容量,避免一開始就發送大量數據造成網絡擁塞。
擁塞避免:一旦擁塞窗口達到一個閾值(擁塞窗口大小的一半),TCP發送方采用線性增加的方式增加擁塞窗口,以更穩定地發送數據。即擁塞窗口的增加速率由指數增長變成線性增長,減緩擁塞窗口增長的速度。
快速重傳:當接收方收到的重復確認(ACK)達到一定數量時,表示發送的數據部分被丟失,TCP發送方會立即重傳對應的丟失部分數據,而不必等待超時。
快速恢復:在進行快速重傳后,TCP發送方將擁塞窗口減半,并進入快速恢復狀態。在這個狀態下,擁塞窗口仍然線性增加,但增加速度降低。
超時重傳:
當數據發送后,TCP發送方會啟動一個定時器,等待接收方發送確認報文。如果在定時器時間內沒有收到確認,則認為數據丟失,TCP發送方會立即重傳該數據。
超時時間的選擇是有一定策略的,一般會根據網絡環境動態調整。如果確認報文的返回時間很短,則認為網絡較好,可以采用較短的超時時間。反之,若返回時間較長,則認為網絡擁塞或延遲較高,需要設置較長的超時時間。
超時重傳主要用于檢測丟失的數據,并盡快重新發送以保證數據的可靠傳輸。但超時重傳容易造成網絡擁塞,因此擁塞控制機制與超時重傳機制相互配合,對網絡擁塞進行控制與避免。
4.Http 2.0 相比 1.0做了哪些更新?
- 二進制傳輸:HTTP/2.0 使用二進制格式來傳輸數據,而 HTTP/1.1 使用文本格式。二進制格式更加緊湊和高效,減少了傳輸的開銷,使數據傳輸更快。
- 多路復用(Multiplexing):HTTP/2.0 允許多個請求和響應同時在單個連接上傳輸,而不需要像 HTTP/1.1 那樣在多個連接上傳輸。這提高了性能,減少了延遲,特別對于加載網頁中的多個資源文件非常有益。
- 頭部壓縮:HTTP/2.0 使用 HPACK 算法對 HTTP 頭部進行壓縮,減小了頭部信息的傳輸開銷。在 HTTP/1.1 中,每次請求和響應都會包含重復的頭部信息,而 HTTP/2.0 可以顯著減小這種冗余。
- 服務器推送(Server Push):HTTP/2.0 允許服務器主動向客戶端推送資源,而不需要客戶端顯式請求。這有助于加速頁面加載,減少了客戶端發起請求的次數。
- 優化流量控制:HTTP/2.0 提供了更好的流量控制機制,允許客戶端和服務器更好地管理數據流量,避免了擁塞。
- 安全性:雖然 HTTP/2.0 不要求使用加密,但現實中,幾乎所有的 HTTP/2.0 連接都使用了加密,通常使用 TLS/SSL,以提高安全性和隱私。
- 適應性:HTTP/2.0 可以更好地適應不穩定的網絡條件,如高延遲或丟包率高的情況,提供更好的性能。
5.TCP 有哪些字段?
傳輸控制協議(Transmission Control Protocol,TCP)是一種傳輸層協議。TCP使數據包從源到目的地的傳輸更加順暢。它是一種面向連接的端到端協議。每個數據包由TCP包裹在一個報頭中,該報頭由10個強制字段共20個字節和一個0到40 字節的可選數據字段組成
? 1.源端口號(Source Port):16bits,該字段標識發送方應用程序的端口號。
? 2.目標端口號(Destination Port):16bits,該字段標識接收方應用程序的端口號。
? 3.序列號(Sequence Number):32bits,在連接建立(三次握手)后,該字段包含一個32位隨機初始序列號/起始數據位,隨后增加傳輸的字節數。
? 4.確認應答號(Acknowledgement Number):32bits,接收方使用這個32位參數來請求下一個TCP段。它是下一個預測的TCP段的序列號。
? 5.報頭長度(Header Length):4bits,該字段表示TCP報頭的大小,但是是按比例縮小的版本。
? 6.保留位(Reserved):6bits,該字段的位設置為零。這些位保留供以后使用。
? 7.標志位(Flags bits):6bits,一組六個字段,每個字段長一位。TCP標志用于指示TCP會話期間的特定狀態,可用于故障排除或控制特定連接的處理方式。每個標志位值為1,表示特定標志為”設置”。