面試計算機網絡八股文五問五答第二期

面試計算機網絡八股文五問五答第二期

作者:程序員小白條,個人博客

相信看了本文后,對你的面試是有一定幫助的!

?點贊?收藏?不迷路!?

1.OSI七層協議?

2. TCP和UDP傳輸協議的區別?

  1. TCP是可靠的傳輸協議,你知道它怎么實現的一些擁塞控制,或者說對于數據發送量的合理限制?

TCP(傳輸控制協議)通過擁塞控制和流量控制來實現可靠的數據傳輸。其中,擁塞控制是TCP用來控制網絡擁塞和避免網絡超載的機制,而流量控制是用來控制數據發送方與接收方之間的數據流量的機制。

擁塞控制主要通過以下幾個算法來實現:

  1. 慢啟動(Slow Start):在建立連接時,TCP發送方初始將擁塞窗口設置為一個較小的值,然后每收到一個確認,擁塞窗口指數式增加,以適應網絡的容量。
  2. 擁塞避免(Congestion Avoidance):一旦擁塞窗口達到一個閾值(擁塞窗口大小的一半),TCP發送方就采用線性增加的方式增加擁塞窗口,以更穩定地發送數據。
  3. 快速重傳(Fast Retransmit):如果TCP發送方連續接受到3個重復的確認(ACK),即表明網絡中有一段丟失的數據,TCP發送方將立即重傳這些數據,而不必等待超時。
  4. 快速恢復(Fast Recovery):在進行快速重傳后,TCP發送方將擁塞窗口減半,并且進入快速恢復狀態。在此狀態下,每收到一個確認,擁塞窗口仍然線性增加,但增加的速度較慢。

對于數據發送量的合理限制,TCP使用了流量控制機制來確保接收方能夠跟上發送方的發送速度。流量控制通過使用滑動窗口(Sliding Window)來限制發送方的數據發送量,確保不會使接收方無法處理大量數據。

滑動窗口的大小由接收方動態調整。每次接收方收到一定數量的數據后,會向發送方發送一個確認,確認中包含了接收方的可用窗口大小。發送方根據接收方返回的可用窗口大小來動態調整發送的數據量,以保持發送方和接收方的數據傳輸速度的平衡。

通過擁塞控制和流量控制的機制,TCP能夠根據網絡的狀況和接收方的處理能力來合理地限制數據發送量,同時保證網絡的穩定和可靠性。

img

3. 擁塞控制、超時重傳的具體原理?

擁塞控制:

擁塞控制的目的是避免網絡中的擁塞,保證網絡的穩定性。TCP使用擁塞窗口(Congestion Window)來控制發送方的數據發送速率。

慢啟動:當TCP建立連接時,發送方將初始擁塞窗口設置為一個比較小的值(一般為一個報文段的大小),然后隨著收到的確認報文的增加,指數級地增加擁塞窗口的大小。這樣做的目的是保守地探測當前網絡的容量,避免一開始就發送大量數據造成網絡擁塞。

擁塞避免:一旦擁塞窗口達到一個閾值(擁塞窗口大小的一半),TCP發送方采用線性增加的方式增加擁塞窗口,以更穩定地發送數據。即擁塞窗口的增加速率由指數增長變成線性增長,減緩擁塞窗口增長的速度。

快速重傳:當接收方收到的重復確認(ACK)達到一定數量時,表示發送的數據部分被丟失,TCP發送方會立即重傳對應的丟失部分數據,而不必等待超時。

快速恢復:在進行快速重傳后,TCP發送方將擁塞窗口減半,并進入快速恢復狀態。在這個狀態下,擁塞窗口仍然線性增加,但增加速度降低。

超時重傳:

當數據發送后,TCP發送方會啟動一個定時器,等待接收方發送確認報文。如果在定時器時間內沒有收到確認,則認為數據丟失,TCP發送方會立即重傳該數據。

超時時間的選擇是有一定策略的,一般會根據網絡環境動態調整。如果確認報文的返回時間很短,則認為網絡較好,可以采用較短的超時時間。反之,若返回時間較長,則認為網絡擁塞或延遲較高,需要設置較長的超時時間。

超時重傳主要用于檢測丟失的數據,并盡快重新發送以保證數據的可靠傳輸。但超時重傳容易造成網絡擁塞,因此擁塞控制機制與超時重傳機制相互配合,對網絡擁塞進行控制與避免。

4.Http 2.0 相比 1.0做了哪些更新?

  1. 二進制傳輸:HTTP/2.0 使用二進制格式來傳輸數據,而 HTTP/1.1 使用文本格式。二進制格式更加緊湊和高效,減少了傳輸的開銷,使數據傳輸更快。
  2. 多路復用(Multiplexing):HTTP/2.0 允許多個請求和響應同時在單個連接上傳輸,而不需要像 HTTP/1.1 那樣在多個連接上傳輸。這提高了性能,減少了延遲,特別對于加載網頁中的多個資源文件非常有益。
  3. 頭部壓縮:HTTP/2.0 使用 HPACK 算法對 HTTP 頭部進行壓縮,減小了頭部信息的傳輸開銷。在 HTTP/1.1 中,每次請求和響應都會包含重復的頭部信息,而 HTTP/2.0 可以顯著減小這種冗余。
  4. 服務器推送(Server Push):HTTP/2.0 允許服務器主動向客戶端推送資源,而不需要客戶端顯式請求。這有助于加速頁面加載,減少了客戶端發起請求的次數。
  5. 優化流量控制:HTTP/2.0 提供了更好的流量控制機制,允許客戶端和服務器更好地管理數據流量,避免了擁塞。
  6. 安全性:雖然 HTTP/2.0 不要求使用加密,但現實中,幾乎所有的 HTTP/2.0 連接都使用了加密,通常使用 TLS/SSL,以提高安全性和隱私。
  7. 適應性: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,表示特定標志為”設置”。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211435.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言_常見位操作

C語言_常見位操作 文章目錄 C語言_常見位操作一、位操作函數二、代碼示例 一、位操作函數 設置某位為1或者對某位清0、獲取某位的值、對某位取反 /*對某位置1*/ unsigned Setbit(unsigned x,int n) {return x | 1 << n; }/*對某位清0*/ unsigned Resetbit(unsigned x,…

為什么要用向量檢索

之前寫過一篇文章&#xff0c;是我個人到目前階段的認知&#xff0c;所做的判斷。我個人是做萬億級數據的搜索優化工作的。一直在關注任何和搜索相關的內容。 下一代搜索引擎會什么&#xff1f;-CSDN博客 這篇文章再來講講為什么要使用向量搜索。 在閱讀這篇文章之前呢&#xf…

【網絡安全】網絡設備可能面臨哪些攻擊?

網絡設備通常是網絡基礎設施的核心&#xff0c;并控制著整個網絡的通信和安全&#xff0c;同樣面臨著各種各樣的攻擊威脅。 對網絡設備的攻擊一旦成功&#xff0c;并進行暴力破壞&#xff0c;將會導致網絡服務不可用&#xff0c;且可以對網絡流量進行控制&#xff0c;利用被攻陷…

【JavaEE】線程池

作者主頁&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感謝你閱讀本文&#xff0c;歡迎一建三連哦。 本文于《JavaEE》專欄&#xff0c;本專欄是針對于大學生&#xff0c;編程小白精心打造的。筆者用重金(時間和精力)打造&…

springcloud分布式事務

文章目錄 一.為什么引入分布式事務?二.理論基礎1.CAP定理2.BASE理論 三.Seata1.微服務集成Seata2.XA模式(掌握)3.AT模式(重點)4.TCC模式(重點)5.Saga模式(了解) 四.四種模式對比五.Seata高可用 一.為什么引入分布式事務? 事務的ACID原則 在大型的微服務項目中,每一個微服務都…

案例課4——智齒客服

1.公司介紹 智齒科技&#xff0c;一體化客戶聯絡中心解決方案提供商。提供基于「客戶聯絡中心」場景的一體化解決方案&#xff0c;包括公域私域、營銷服務、軟件BPO的三維一體化。 智齒科技不斷整合前沿的人工智能及大數據技術&#xff0c;已構建形成呼叫中心、機器人「在線語音…

Python中函數的遞歸調用

函數調用自己的編程方式被稱為函數的遞歸調用。遞歸通常能夠將一個大型的復雜問題的遞歸條件&#xff0c;一層一層的回溯到終止條件&#xff0c;然后再根據終止條件的運算結果&#xff0c;一層一層的遞進運算到滿足全部的遞歸條件。它能夠使用少量程序描述出解題過程中的重復運…

主機訪問Android模擬器網絡服務方法

0x00 背景 因為公司的一個手機app的開發需求&#xff0c;要嘗試鏈接手機開啟的web服務。于是在Android Studio的Android模擬器上嘗試連接&#xff0c;發現谷歌給模擬器做了網絡限制&#xff0c;不能直接連接。當然這個限制似乎從很久以前就存在了。一直沒有注意到。 0x01 And…

分銷電商結算設計

概述 分銷電商中涉及支付與結算&#xff1b;支付職責是收錢&#xff0c;結算則是出錢給各利益方&#xff1b; 結算核心圍繞業務模式涉及哪些費用&#xff0c;以及這些費用什么時候通過什么出資渠道&#xff0c;由誰給到收方利益方&#xff1b; 結算要素組成費用項結算周期出…

區塊鏈的可拓展性研究【03】擴容整理

為什么擴容&#xff1a;在layer1上&#xff0c;交易速度慢&#xff0c;燃料價格高 擴容的目的&#xff1a;在保證去中心化和安全性的前提下&#xff0c;提升交易速度&#xff0c;更快確定交易&#xff0c;提升交易吞吐量&#xff08;提升每秒交易量&#xff09; 目前方案有&…

詳解進程管理(銀行家算法、死鎖詳解)

處理機是計算機系統的核心資源。操作系統的功能之一就是處理機管理。隨著計算機的迅速發展&#xff0c;處理機管理顯得更為重要&#xff0c;這主要由于計算機的速度越來越快&#xff0c;處理機的充分利用有利于系統效率的大大提高&#xff1b;處理機管理是整個操作系統的重心所…

前后端聯調神器《OpenAPI-Codegen》

在后端開發完接口之后&#xff0c;前端如果再去寫一遍接口來聯調的話&#xff0c;會很浪費時間&#xff0c;這個時候使用OpenAPI接口文檔來生成Axios接口代碼的話&#xff0c;會大大提高我們的開發效率。 Axios引入 Axios是一個基于Promise的HTTP客戶端&#xff0c;用于瀏覽器…

Go壓測工具

前言 在做Go的性能分析調研的時候也使用到了一些壓測方面的工具&#xff0c;go本身也給我們提供了BenchMark性能測試用例&#xff0c;可以很好的去測試我們的單個程序性能&#xff0c;比如測試某個函數&#xff0c;另外還有第三方包go-wrk也可以幫助我們做http接口的性能壓測&…

C# 任務并行類庫Parallel調用示例

寫在前面 Task Parallel Library 是微軟.NET框架基礎類庫&#xff08;BCL&#xff09;中的一個&#xff0c;主要目的是為了簡化并行編程&#xff0c;可以實現在不同的處理器上并行處理不同任務&#xff0c;以提升運行效率。Parallel常用的方法有For/ForEach/Invoke三個靜態方法…

Element-UI定制化Tree 樹形控件

1.復制 說明&#xff1a;復制Tree樹形控件。 <script> export default {data() {return {data: [{label: 一級 1,children: [{label: 二級 1-1,children: [{label: 三級 1-1-1}]}]}, {label: 一級 2,children: [{label: 二級 2-1,children: [{label: 三級 2-1-1}]}, {l…

Linux:進程優先級與命令行參數

目錄 1.進程優先級 1.1 基本概念 1.2 查看系統進程 1.3 修改進程優先級的命令 2.進程間切換 2.1 相關概念 2.2 Linux2.6內核進程調度隊列&#xff08;了解即可&#xff09; 3.命令行參數 1.進程優先級 1.1 基本概念 cpu資源分配的先后順序&#xff0c;就是指進程的優…

【C++】在類外部定義成員函數時,不應該再次指定默認參數值

2023年12月10日&#xff0c;周日下午 錯誤的代碼 #include<iostream>class A { public:void fun(int a10); };void A::fun(int a10) //<----在這里報錯 {}int main() {} 正確的代碼 代碼目前有一個問題&#xff0c;主要是在類外部定義成員函數時&#xff0c;不應該…

解密QQ號——C語言

題目&#xff1a; 有一串已加密的數字“6 3 1 7 5 8 9 2 4”解密規則&#xff1a;首先將第1個數字刪除&#xff0c;緊接著將第2個數字放到這串數字的末尾&#xff0c;再將第3個數字刪除并將第4個數字放到這串數字的末尾&#xff0c;再將第5個數刪除 代碼實現&#xff1a; #inc…

利用Node.js和cpolar實現遠程訪問,無需公網IP和路由器設置的完美解決方案

文章目錄 前言1.安裝Node.js環境2.創建node.js服務3. 訪問node.js 服務4.內網穿透4.1 安裝配置cpolar內網穿透4.2 創建隧道映射本地端口 5.固定公網地址 前言 Node.js 是能夠在服務器端運行 JavaScript 的開放源代碼、跨平臺運行環境。Node.js 由 OpenJS Foundation&#xff0…

ESP32網絡編程-OTA方式升級固件(基于Web瀏覽器)

OTA方式升級固件(基于Web瀏覽器) 文章目錄 OTA方式升級固件(基于Web瀏覽器)1、ESP32的OTA介紹2、OTA升級固件方式3、軟件準備4、硬件準備5、代碼實現6、一種優雅方式實現Web方式OTA升級6.1 基礎OTA代碼6.2 新固件庫代碼在前面的文章中,我們在Arduino IDE的網絡端口中,實現…