主頁 > 軟體設計 > 計算機網路協議復習 —— TCP/IP。。。

計算機網路協議復習 —— TCP/IP。。。

2021-07-25 07:22:32 軟體設計

計算機網路基礎

  • 網路協議
    • 1.OSI七層模型
    • 2.TCP/IP四層模型
    • 3.傳輸層
        • 埠號
        • TCP協議
          • 1.確認應答ACK機制(保障TCP穩定的核心機制)
          • 2.超時重傳
          • 3.連接管理
          • 4.滑動視窗
          • 5.流量控制
          • 6.擁塞控制
          • 7.延遲應答
          • 8.捎帶應答
          • 9.面向位元組流
          • 10.沾包/半包問題
          • TCP例外情況
        • TCP小結
        • UDP協議
        • 二者區別
    • 4.網路層
      • IP協議
        • IP協議格式引數說明
        • IP網段劃分
    • 5.資料鏈路層
      • 以太網
      • MAC地址
      • ARP協議
    • 6.網路傳輸流程
    • 7.瀏覽器中輸入一個url后會經歷什么?
    • 8.計算機網路試題

網路協議

協議:協議就是一種約定,就好比網友見面,彼此協商胸口插枝玫瑰花見面,這就是一種提前的約定,也可以稱之為協議,
舉例:
計算機生產商有很多,作業系統也有很多,計算機網路硬體設備也有很多,那么如何讓不同廠商生產的計算機之間能夠相互順暢通信呢?就需要一個標準去約定,這個標準就是網路協議

1.OSI七層模型

  • OSI(Open System Interconnection,開放系統互連)七層網路模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范,
    在這里插入圖片描述

2.TCP/IP四層模型

TCP/IP通訊協議采用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求,四層分別是:

  • 應用層:負責應用程式之間的溝通,如簡單電子郵件傳輸SMTP、檔案傳輸協議FTP、網路遠程訪問協議Telnet等,網路編程指的就是針對應用層的編程,
  • 傳輸層:負責兩臺主機的資料傳輸,如傳輸控制協議TCP,能夠保證資料可靠地從源主機發送到目標主機,
  • 網路層:負責地址管理和路由選擇,例如在IP協議中,通過IP地址標識一臺主機,并通過路由表地方式規劃出兩臺主機之間的資料傳輸的線路(路由),能夠確保資料可靠的從源主機發送到目標主機,
  • 資料鏈路層:負責設備之間的資料幀的傳送和識別,例如網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、資料差錯校驗等作業;有以太網、令牌環網,無線LAN標準,路由器作業在網路層,

3.傳輸層

埠號

埠號:找到應用程式,比如一臺主機QQ給另外一臺QQ發訊息,因為埠號標識一個應用程度,所以利用埠號標識目的主機QQ才收到了訊息,

埠號范圍:0-65535

埠號分類:
1.知名埠號:0-1023,比如FTP(21)、SSH(22)、Telnet(23)、HTTP(80)、HTTPS(443)
此外還有一些著名的埠號,如MySQL(3306)、Tomcat(8080)
2.動態埠號:1024-65535

問題:一個埠號可以被多個程式使用嗎?不可以一個程式可以擁有多個埠號嗎?可以 兩者的關系就像人和電話號碼的關系

TCP協議

TCP編程:需要兩個物件分別是客戶端物件和服務器端物件,服務器端ServerSocket,客戶端Socket;客戶端通過new Socket(IP, Port)就可以連接到服務器端,服務器端呼叫accept()方法就可以得到客戶端Socket物件,

TCP協議:傳輸控制協議(Transmission Control Protocal),其協議格式可以表現為:
在這里插入圖片描述
16位源埠號:表示資料從哪個行程中來
16位目的埠號:表示資料到哪個行程中去
32位序列號、32位確認序列號:為了滿足全雙工的安全機制而存在的,
4位的首部長度:表示TCP頭部有多少個32位bit,即多少個位元組,因而TCP頭部最大長度為15*4=60
6個標志位:

  • ①URG:緊急標志位,緊急指標是否有效
  • ②ACK:確認號標志位,確認號是否有效
  • ③PSH:推送標志位,提示接收端應用程式立刻從TCP緩沖區將資料讀走
  • ④RST:請求標志位,對方要求重新建立連接,把攜帶RST標識的稱為復位報文段
  • ⑤SYN:請求建立連接,把攜帶SYN標識的稱為同步報文段
  • ⑥FIN:通知對方本端要關閉連接了,我們把攜帶FIN標識的稱為結束報文段

TCP十大特性:

1.確認應答ACK機制(保障TCP穩定的核心機制)

在這里插入圖片描述
TCP將每個位元組的資料都進行了編號. 即為序列號:在這里插入圖片描述
因為TCP會出現后發先制的情況,也就是說后面的訊息比之前的訊息先回應,訊息之間的應答是不匹配的,

舉例:A和B之間對話,A問有沒有時間一起吃飯?要不要通個宵?B說不可能,好啊沒問題,這個程序中B對A的回應或許出現了后發先制,B的意思可能是吃飯可以,通宵不可能,如何解決這個問題呢?
B可以針對A的問題加以標識,比如通宵不可能,吃飯沒問題,但是這樣會導致一個問題,在資訊傳遞程序中占有太多的帶寬,
所以有另外的一種解決方案:A在發送訊息時攜帶同步序列號作為標志,B在回應訊息時加上ACK(ACK為1)和確認序列號給A;我們知道TCP面向資料流,不是每個訊息一個編號,而是每個字符一個編號,TCP對位元組進行編號就成為了序列號,發送的時候是一個區間序列號,回應時的確認序列號是發送的最大序列號加1,表示可以繼續發送下一段了,這樣就解決了上面的問題,

確認應答可能帶來的問題:
1.發送的資料報丟失
在這里插入圖片描述
當發送資料丟失時,會一直對該資料進行重發,直到收到ACK為止,
2.確認應答丟失
在這里插入圖片描述
當ACK丟失時,接識訓沖區不再寫入重復資料!這是內核實作的去重

2.超時重傳

超時重傳的原因:主機A向主機B發送資料時候因為網路堵塞丟失,資料丟失了;主機A未收到主機B的確認應答,ACK可能丟失了,出于這兩種情況,主機A都會繼續向主機B發送資料,直到獲得主機B的ACK回應,存在的問題是,以相同的時間頻率發送,必然是占用大量帶寬的,

那么超時重傳的時間如何確定呢?

  • 策略1:不以固定的頻率發送,策略1采取的是悲觀的策略,如果第一次發送訊息沒有得到回應,大概率第二次也會發送失敗,因此TCP以指數級時間頻率發送訊息,
    第一超時重發時間間隔為500ms
    第二次500ms2
    第三次500
    2*2
    ,,,
  • 策略2:經歷了一定的超時重傳次數后,如果訊息還沒得到應答,TCP認為網路或對端主機出現例外,強制關閉連接,
3.連接管理

TCP連接管理包含:

  • 建立連接(3次握手)
  • 關閉連接(4次揮手)

三次握手:

由于TCP是全雙工通訊,在TCP通訊之前,首先要驗證發送段與接收端的收發能力,如何驗證呢?依賴的就是三次握手機制
舉個例子兩個人打電話:A:hi咱們聊天吧,B:好的,你能聽到嗎,A:可以聽到,開始吧,,,可以看出經過這三步就驗證了兩方的收發能力,此時就建立了TCP連接,
第一次連接:不能驗證客戶端與服務器端的收發能力
第二次連接:可以驗證客戶端的發送能力與服務器端的接收能力,但不能驗證客戶端的接收能力與服務器端的發送能力
第三次連接:可以驗證驗證客戶端的接收能力與服務器端的發送能力
至此三次握手結束,TCP建立了連接,可以正常進行資料傳輸
在這里插入圖片描述
二次握手建立連接行嗎?
不可以!!!兩次握手不能驗證客戶端的接收能力和服務器端的發送能力,因此這是不行的哦,
四次握手可以嗎?
可以!!但是沒必要,三次握手已經驗證了二者的收發能力,

四次揮手:
當客戶端與服務器端斷開連接時,需要經歷四次握手,舉個例子:放學后,A:分手吧,B:好的,我收拾東西,B:我收拾好了,可以分手了,A:好的,分~可以看出經過這四步A和B就分開了,

三次揮手行嗎?
有可能是可以的,比如B沒有什么東西需要收拾,相當于經歷了三次揮手就完成了整個分開的操作,`當接識訓沖區沒有待結束的任務,兩次揮手就可以合并成一次,這里用了TCP的捎帶應答特性,就好比“好的,我知道,我收拾好了”,

三次握手、四次揮手示意圖:
當服務器端new ServerSocket(port)時,服務端由closed狀態變為listen狀態,客戶端new Socket(ip,port)時,客戶端由closed狀態變為syn_sent狀態,
在這里插入圖片描述
為什么TIME_WAIT的時間是2MSL呢?

  • MSL是TCP報文的最大生存時間,2MSL為ACK的最大超時時間1MSL加上對方發送給他訊息的一個最大等待時間1MSL
  • 同時也是在理論上保證最后一個報文可靠到達(假設最后一個ACK丟失, 那么服務器會再重發一個FIN. 這時雖然客戶端的行程不在了,
    但是TCP連接還在, 仍然可以重發LAST_ACK
  • 也就是說,客戶端害怕自己的訊息服務端沒有收到,也害怕服務端發送的訊息自己沒有收到,因此2MSL保證在兩個傳輸方向上的尚未被接識訓遲到的報文段都已經消失(否則服務器立刻重啟,可能會收到來自上一個行程的遲到的資料, 但是這種資料很可能是錯誤的)

一般而言,服務器上出現大量的 CLOSE_WAIT 狀態, 原因是什么呢?
在程式中沒有呼叫close()方法主動關閉連接!

4.滑動視窗

對于確認應答特性而言,沒發送一個資料段,都要給一個ACK確認應答,當收到ACK后再發送下一個資料段,這樣做的缺點就是性能比較差,
在這里插入圖片描述
既然一發一收的性能比較低,那么我們可以一次發送多條資料,就可以提高性能,實際上將多個資料段的等待時間重疊在了一起,

  • 滑動視窗大小:無需等待確認可以繼續發送資料的最大值,對于下圖而言滑動視窗大小為4000個位元組(四個段)
  • 發送前四個段時不需要等待ACK,直接發送
  • 收到第一個ACK后,滑動視窗向后移動,繼續發送第五個段資料
  • 作業系統內核為了維護這個滑動視窗,需要開辟發送緩沖區記錄哪些資料還沒有被應答,只有確認應答過的資料才能發送緩沖區刪掉 ,
    在這里插入圖片描述
    特別注意:

ACK=4001含義:告訴主機A已經成功收到了1-4000,而不是收到了3001-4000,
ACK回傳的值是主機B接識訓沖區的下一個最大連續值,這稱為“高速重發控制”或者“快重傳”,

可能存在的兩個問題:
1.訊息已經發送過去,但是ACK丟失了,
①中間的ACK丟失:無關緊要,可以通過后續的ACK進行確認,
②最后一個ACK丟失:發送端重新發送最后一個資料段,接識訓沖區發現該資料已經存在,就將該段資料拋棄,

2.訊息在發送的程序中丟失
比如1001-2000位元組的報文丟失了,發送端會一直收到1001這樣的ACK,就好像接收端在提醒發送端它想要1001,當發送端連續三次收到了1001應答,就會將1001-2000的資料重新發送;此時接收端收到1001之后,再回傳就是最大的連續值了,因為2001之后的資料已經收到了,被放在了接收端作業系統的接識訓沖區中,

5.流量控制

以結果為導向(接識訓沖區的大小)為導向進行資料的傳遞,

  • TCP頭部的16位視窗大小:指的是接識訓沖區的視窗大小,而不是滑動視窗的大小;滑動視窗大小是固定,沒有必要進行傳遞,接識訓沖區視窗大小是動態改變的;視窗大小通過ACK端通知發送端,
  • 當接識訓沖區滿了,16位視窗大小為0,發送端將不會發送訊息給接收端,但是會定期以固定頻率發送視窗探測資料包;
  • 接識訓沖區視窗大小不為0時,訊息就會恢復發送,
  • 16位最大表示65535,那么滑動視窗最大就是65536位元組嗎?答:不是的,TCP首部有一個視窗擴大因子,實際視窗大小是視窗欄位值左移M位,
    在這里插入圖片描述
6.擁塞控制

盡管TCP有了滑動視窗特性,能夠高效發送大量資料,但是如果一開始就發送大量的資料,仍然可能引發問題,比如網路已經很堵塞了,發送大量資料,肯定是有問題的,因此TCP引入了慢啟動機制,
慢啟動機制:先發送少量的資料,摸清當前的網路擁堵狀態,再去決定按照多大的速度傳輸資料,慢啟動只是初始時慢,增長速度還是比較快的,而我們之前說的快重傳指的是ACK回傳的始終是資料連續的最大值,

圖解擁塞控制:

  • 引入一個“擁塞視窗概念”,剛開始定義擁塞視窗大小為1
  • 擁塞控制視窗大小初始值為16,可以動態調整,開始發1個包,接著每次以指數形式增加包的數量,比如2、4、8、16,,,發送包數量大于擁塞視窗大小時,后面每次線性增長比如17、18,,,而不是指數增長了;當出現大量資料包丟失時,立刻將發送的包數量置為1,此外將擁塞視窗初始值設為當前丟包值的一半;然后接著重復執行上面的程序,,,,,,
  • 每次發送資料包時候將擁塞視窗與接收端緩沖區視窗大小做比較,取較小的值作為實際發送的視窗,
    在這里插入圖片描述
    擁塞控制, 歸根結底是TCP協議想盡可能快的把資料傳輸給對方, 但是又要避免給網路造成太大壓力的折中方案.
7.延遲應答
  • 假設接收端緩沖區為1M. 一次收到了500K的資料; 如果立刻應答, 回傳的視窗就是500K;
  • 但實際上可能處理端處理的速度很快, 10ms之內就把500K資料從緩沖區消費掉了;
  • 在這種情況下, 接收端處理還遠沒有達到自己的極限, 即使視窗再放大一些, 也能處理過來;
  • 如果接收端稍微等一會再應答, 比如等待200ms再應答, 那么這個時候回傳的視窗大小就是1M;

延遲應答策略:

  • 時間限制:超過一個固定時間,延遲應答一次
  • 數量限制:每隔N次發送延遲應答一次
  • 需要注意的是:延遲應答時間一定要小于超時重傳時間,通常來講延遲應答是200ms;N一般取2,
8.捎帶應答

捎帶應答是針對于延遲應答的性能優化,

回顧三次揮手為什么具有可能性?
1.當接收端接識訓沖區沒有任務時,可以將ACK與FIN合并成一次,因此可以三次揮手;
2.當接識訓沖區有任務時,利用延遲應答機制,等待接識訓沖區任務結束時,利用捎帶應答機制,將將ACK與FIN合并在一起發送給發送端,實作了三次揮手,

9.面向位元組流

由于TCP面向資料流,所以資料包沒有邊界;因此不知道發送的資料從哪里開始以及從哪里結束,可能會造成沾包半包問題,

10.沾包/半包問題

沾包和半包都是指得到的資料不是預期的資料,

沾包/半包示意圖:
在這里插入圖片描述

沾包解決方案1:以\n作為流的邊界來處理沾包和半包問題;
解決方案2:每次按照固定大小讀取資料包,這樣能確定每個資料邊界,就能正常收發訊息了,

TCP例外情況

行程終止:行程終止會釋放檔案描述符,電腦系統還在運行,后臺守護程式仍然可以發送FIN,和正常關閉沒有什么區別,
機器重啟:和行程終止的情況是相同的,仍然可以發送FIN,
機器掉電、網線斷開:此時接收端認為連接存在,一旦接收端有寫入操作,接收端發現連接已經不在了,就會進行reset;即使沒有寫入操作,TCP內置了一個保活定時器,會定期詢問對方是否存在,如果對方不在就把連接釋放掉,

TCP小結

保證穩定性

  • 確認應答機制
  • 超時重傳機制
  • 連接管理
  • 流量控制
  • 擁塞控制

保證性能

  • 滑動視窗
  • 延遲應答
  • 捎帶應答

UDP協議

基于UDP的應用層協議有那些?
動態主機配置協議(DHCP)
域名決議協議(DNS)

UDP報文格式:在這里插入圖片描述
UDP示意圖:
在這里插入圖片描述
報文資訊決議:
在這里插入圖片描述
16位UDP長度=UDP頭部長度(8個位元組)+ UDP資料長度,因而UDP一個資料報理論上最大長度位2的16次方,共65536=64kb

16位效驗和:驗證傳輸到目的主機的資料是否是正確的,在傳輸程序中是否被篡改過,
如何進行資料效驗呢?原始的資料根據MD5演算法進行計算,會得到一個值,將這個值存盤在16位的效驗和當中;接收端接收到內容之后按照通過的規則加密資料得到一個效驗和,將該效驗和與UDP頭部的16位校驗和對比,如果相等資料就是正確的,

UDP編程時,如果資料大小超過64kb怎么辦?
1.在應用層進行資料報的拆分和組合
2.大于64kb不進行處理,交給IP協議去處理,在網路層進行分包和組包(不用)原因:不穩定,在網路層分包后假如有包丟失,就會全部舍棄,

通信方式:
全雙工:發送端和接收端既能發送訊息又能接收訊息;
半雙工:發送端只能發送訊息,接收端只能接收訊息

怎么用UDP實作可靠的傳輸呢?(面試題)
可以參考TCP保證穩定的特性,比如:
引入序列號,保證資料傳輸的順序;
引入確認應答,確保對端收到了資料;
引入超時重傳,如果隔一段時間沒有應答,就重新發送資料;
,,,,,,

二者區別

1.TCP是有連接的傳輸協議,而UDP是無連接的傳輸協議;
2.TCP傳輸是穩定的,而UDP傳輸是不穩定的;
3.TCP傳輸面向資料流,而UDP傳輸面向資料報;
4.TCP既有發送緩沖區也有接識訓沖區,而UDP只有接識訓沖區,例子:快遞員把快遞放到菜鳥驛站,而不是等一個一個人去取,
TCP與UDP的使用場景是不同的,對穩定性要求比較高時使用TCP,對訊息丟失不敏感且要求性能高時,使用UDP,

4.網路層

網路層的作用就是在復雜的網路環境中確定一個合適的資料傳輸路徑,為傳輸層進行服務,

基本概念:

  • 主機:配有IP地址,但是不進行路由控制的設備
  • 路由器:配有IP地址又能進行路由控制,每個路由器有路由映射表
  • 節點:主機和路由器的統稱

IP協議

IP協議格式:
在這里插入圖片描述

IP協議格式引數說明

8位服務型別: 3位優先權欄位已經棄用,4位TOS欄位,和1位保留欄位(必須設定位0);4位TOS分別表示為:最小延時,最大吞吐量,最高可靠性,最小成本,這四個相互沖突,只能選擇一個,對于ssh/telnet這樣的應用程式來說,最小延時比較重;對于ftp這樣的應用程式來說,最大吞吐量比較重要,
16位標識:表示分組ID
3位標志保留、禁止分片、更多分片;當3位標志位中最后1位設定1時,表示這個資料包是由多個包組成的,
13位片偏移:可能出現后發先制的問題,第2個包先過來然后第1個包才過來,根據偏移量可以知道每個包的順序進行組包,
生存時間SSL:一般等于64,每經過一次路由器的跳轉此值會減1,直到這個值為0,表示這是一個無效的路由地址,直接舍棄掉,舉例:在瀏覽器中隨便輸入一個錯誤的地址,經過64次跳轉后,是無法找到對應的服務器的,
8位協議:表示上層的傳輸層協議
16位首部校驗和:檢驗當前傳輸過來的首部是否是正確的;由于傳輸層已經對資料進行了效驗,因此網路不對資料進行效驗,這樣一來提高效率,
32位源IP地址/32位目的IP地址
IP協議包最小是20位元組!!!

IP網段劃分

目前IP版本有IPV4和IPV6兩個版本
目前最流行的就是IPV4版本,采用點分四組十進制,每一組范圍是[0~255],如:255.255.255.255

IP地址分為兩個部分,網路號與主機號,

  • 網路號:保證互相連接的兩個網段具有不同的標識
  • 在同一網段內,主機之間具有相同的網路號,但是主機號一定不能相同!
  • 不同的子網實際上就是將網路號相同的主機放到了一起
    如果在子網中新增一臺主機,則這臺主機的網路號和這個子網的網路號一致,但是主機號一定不能和子網中的其他主機的主機號重復!

IP地址可以分為五類:ABCDE

A類為:點分四組中的第一組地址范圍為0~127的IP地址,已二進制來看就是“首位為0”
B類:128~191.二進制首位為10
C類:192~223.二進制首位為110
D類:224~239.二進制首位為1110
E類:240~255.二進制首位為1111

網路號:IP地址與子網掩碼按位與得到的就是網路號轉成10進制,這就是子網號
子網地址范圍(內網取值范圍):主機號從全0到全1就是子網的地址范圍
子網地址范圍計算:255 - 子網掩碼最后一組的十進制值 + 網路號開始的值
IP地址和子網掩碼還有一種簡潔的表示方法,比如:140.252.20.68/24,IP地址為140.252.20.68/24,子網掩碼的前24位是1,也就是說子網掩碼為255.255.255.0

特殊的IP地址
1.IP地址中的主機號都為0就成為網路號,代表這個局域網
2.IP地址中的主機地址都為1就成為了廣播地址,用于給同一個鏈路中相互連接的所有主機發送資料包

私有IP和公網IP
10.**前8位是網路號,共16,777,216個地址
172.16.到172.31.,前12位是網路號,共1,048,576個地址
192.168.*,前16位是網路號,共65,536個地址
包含在這個范圍中的, 都成為私有IP, 其余的則稱為全域IP(或公網IP);

在這里插入圖片描述

手動管理子網內的IP是非常麻煩的,因此:

有一種技術叫做DHCP,能夠自動的給子網內新增加的主機節點分配IP地址,,避免手動管理IP不便性;
一般的路由器都帶有DHCP功能,因此路由器也可以看作一個DHCP服務器

5.資料鏈路層

以太網

以太網不是一種具體的網路,而是一種技術標準,既包含了一些資料鏈路層的內容,也包含了一些物理層的內容,例如規定了網路拓撲結構,傳輸速率等;
以太網目前是最廣泛的局域網技術,和以太網并行的還有令牌環網,無線LAN,

以太網幀格式

在這里插入圖片描述
源地址和目的地址是指網卡的硬體地址(也叫MAC地址), 長度是48位,是在網卡出廠時固化的;
幀協議型別欄位有三種值,分別對應IP、ARP、RARP; 幀末尾是CRC校驗碼

資料鏈路層的MTU稱為最大傳輸單元,共1500位元組,他對UDP的影響:
當UDP攜帶的資料超過1500-8(UDP頭部)-20(IP協議頭部)=1472位元組時,就會在網路層分成多個IP資料包,這就是UDP在資料鏈路層的大小限制,

MAC地址

  • MAC地址用來識別資料鏈路層中相連的節點
  • 長度為48位,也就是6個位元組,一般用16進制數字加上冒號形式來表示,比如:08:00:27:03:fb:19
  • 在網卡出廠時就已經確定了,不能修改,MAC地址通常是唯一的(虛擬機中的MAC地址不是真實的MAC地址)

MAC地址和IP地址的區別
IP地址描述的是整個路途的起點和終點,而MAC地址描述的是每一個區間的起點和終點,

ARP協議

ARP協議不是單純的資料鏈路層的協議,而是介于資料鏈路層與網路層之間的協議,

ARP作用:建立主機IP地址和MAC地址之間的映射關系

  • 在網路通訊時,源主機的應用程式知道目的主機的IP地址和埠號,但是不知道目的主機的額硬體MAC地址;
  • 資料包傳輸到對端時,先是被對端網卡接收再去處理上層協議的,如果接收到的資料包的硬體地址與本機不符合,直接拋棄;
  • 因此在通訊之前必須獲得目的主機的硬體地址,

6.網路傳輸流程

封裝、分用示意圖
在這里插入圖片描述

7.瀏覽器中輸入一個url后會經歷什么?

1.瀏覽器會先檢查輸入的url是否正確,檢查是否符合http/https的規范;
2.瀏覽器檢查此url瀏覽器中有沒有快取資訊,如果有快取,就會去拿快取的資訊;認為一般靜態頁面是不變的,可以通過強刷ctrl+r解決或者在url中加上一個引數t表示timestamp去重新訪問;
3.進行DNS域名決議,將url決議為ip地址,根據ip地址進行訪問;
4.在傳輸層進行TCP3次握手(講一下3次握手的內容傳遞以及兩端狀態變化);
5.HTTP協議request物件發送,它包含四部分內容:請求行,請求正文,空行和Body;
6.服務器端接收到請求,并進行相應的業務處理:①得到前端傳遞過來的引數②做引數非空效驗以及相應的業務處理例如查詢資料庫;
7.服務器端把操作的結果回傳給客戶端;
8.瀏覽器拿到后端回傳的結果兵呼叫瀏覽器的內核實作前端頁面的渲染;
9.傳輸層進行TCP4次揮手(內容轉換和狀態變化),關閉TCP連接,

8.計算機網路試題

精心整理的網路習題

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/289834.html

標籤:其他

上一篇:訊息佇列之Kafka系統架構———Zookeeper+Kafka集群部署

下一篇:5分鐘通過水痘事件來認識系統架構

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more