408 考研複試【轉載】【總結】

Luke!發表於2024-03-24

------------------------------------------------------------------

資料結構 :http://www.cnblogs.com/yuxiaoba/p/8646169.html
- 陣列和連結串列的區別。
結構上:在記憶體中連續儲存,固定的長度;鏈式儲存結構。
訪問方式:下標索引進行訪問;訪問元素時候只能夠透過線性方式由前到後順序的訪問。


- 簡述快速排序過程。
選擇樞紐元素,透過一次排序,把記錄分為2部分,一部分記錄的元素值均比它小。另一部分記錄的元素值比它大。
此時樞紐元素落地了排好序的最終位置,然後再分別對剩下的兩部分進行排序。直到整個序列有序。

- 快速排序為什麼快,改進?
係數1.39,用到了區域性性原理;
隨機選擇樞紐元素,比如說從首尾中間元素三數取中。


- 各類排序演算法對比。
考察那張表格。插入類的,選擇類的,互動類的。歸併,基數。
O(nlog2n))排序快速排序、堆排序和歸併排序。
穩定性:若待排序的序列中,存在多個具有相同關鍵字的記錄,經過排序,這些記錄的相對次序保持不變,

歸併排序是一個分治思想的典型應用,它將一個陣列分成兩半,分別對這兩半進行排序,然後將它們合併成一個有序的陣列。


- 圖的兩種儲存形式: 鄰接矩陣與鄰接表對比。
鄰接矩陣表示法:在一個一維陣列中儲存所有的點,在一個二維陣列中儲存頂點之間的邊的權值。
鄰接表表示法:圖中頂點用一個一維陣列儲存,圖中每個頂點vi的所有鄰接點構成單連結串列。
區別:無向圖和有向圖的區別;快速判斷兩個頂點之間是否存在邊;節省空間,只儲存實際存在的邊,其缺點是關注頂點的度時,就可能需要遍歷一個連結串列。

- 深度優先遍歷和廣度優先遍歷分別用了什麼資料結構

深度優先遍歷通常使用棧(Stack)作為輔助資料結構。棧是一種後進先出(LIFO)的資料結構,非常適合用於深度優先搜尋。在遍歷過程中,每次訪問一個節點時,會將其壓入棧中,然後訪問其第一個子節點(如果存在)。當沒有子節點可以訪問時,會從棧中彈出一個節點,並訪問其兄弟節點(如果存在)。這個過程會一直進行,直到棧為空,即所有可達的節點都被訪問過。

廣度優先遍歷則通常使用佇列(Queue)作為輔助資料結構。佇列是一種先進先出(FIFO)的資料結構,非常適合用於廣度優先搜尋。在遍歷過程中,首先訪問根節點,並將其子節點(如果存在)全部加入佇列。然後,從佇列中取出一個節點,並訪問其所有子節點(如果存在),將這些子節點加入佇列。這個過程會一直進行,直到佇列為空,即所有可達的節點都被訪問過。


- 合併查詢(並查集)
合併查詢(Union-Find)是一種用於處理集合的資料結構,也稱為並查集。它支援兩個操作:查詢和合並。主要用於解決一些經典問題,比如連通性問題、最小生成樹問題等。


- 解決雜湊衝突的方法。
雜湊表(Hash table,也叫雜湊表),是根據關鍵碼值(Key value)而直接進行訪問的資料結構。
1) 開放地址法
2) 拉鍊法

- KMP演算法。
在一個字串中查詢是否包含目標的匹配字串。對比暴力破解少移動了很多位。
其主要思想是每趟比較過程讓子串先後滑動一個合適的位置。當發生不匹配的情況時,不是右移一位,而是移動(當前匹配的長度– 當前匹配子串的部分匹配值)位。


- B樹和B+樹。
儲存的位置不同,葉子非葉子,索引;結點的關鍵字的數量不同。

關鍵字的數量不同;B+樹中分支結點有m個關鍵字,其葉子結點也有m個,其關鍵字只是起到了一個索引的作用,但是B樹雖然也有m個子結點,但是其只擁有m-1個關鍵字。
儲存的位置不同;B+樹中的資料都儲存在葉子結點上,也就是其所有葉子結點的資料組合起來就是完整的資料,但是B樹的資料儲存在每一個結點中,並不僅僅儲存在葉子結點上。
分支結點的構造不同;B+樹的分支結點僅僅儲存著關鍵字資訊和兒子的指標(這裡的指標指的是磁碟塊的偏移量),也就是說內部結點僅僅包含著索引資訊。
查詢不同;B樹在找到具體的數值以後,則結束,而B+樹則需要透過索引找到葉子結點中的資料才結束,也就是說B+樹的搜尋過程中走了一條從根結點到葉子結點的路徑。


- 最小生成樹的演算法有哪些(普里姆演算法,和克魯斯卡爾演算法),對這兩個演算法做比較,以及這兩個演算法採用的資料結構是哪些

**普里姆(Prim)演算法**

以點為物件。它從任意一個頂點開始,每次選擇與當前生成樹距離最短的頂點加入生成樹,直到所有頂點都加入生成樹為止。

以邊為物件。在實現過程中,需要用到一個輔助陣列來記錄已選入生成樹的頂點,以及一個距離陣列來記錄從當前生成樹到圖中每個頂點的最短距離。

**克魯斯卡爾(Kruskal)演算法**

克魯斯卡爾演算法也是求解加權連通圖最小生成樹的演算法。它的基本思想是按照邊的權值從小到大選擇n-1條邊,並保證這n-1條邊不構成迴路。

克魯斯卡爾演算法通常使用並查集資料結構來輔助實現。並查集能夠高效地判斷兩個頂點是否屬於同一個連通分量,從而避免形成迴路。在實現過程中,需要對邊按照權值進行排序,然後依次選擇邊加入生成樹,並使用並查集來判斷是否形成迴路。

**演算法比較**

1. 時間複雜度:在稀疏圖中,普里姆演算法的時間複雜度為O(n^2),而克魯斯卡爾演算法的時間複雜度為O(eloge),其中e為圖中邊的數量。因此,在稀疏圖中,克魯斯卡爾演算法通常更高效。然而,在稠密圖中,普里姆演算法的時間複雜度可以降低到接近O(n^2),此時兩種演算法的效率相差不大。

2. 適用性:普里姆演算法適用於稠密圖,而克魯斯卡爾演算法更適用於稀疏圖。此外,如果圖中存在負權邊,普里姆演算法仍然適用,但克魯斯卡爾演算法則無法正確處理。

3. 實現難度:普里姆演算法相對容易實現,只需要維護一個距離陣列和一個輔助陣列即可。而克魯斯卡爾演算法則需要使用並查集資料結構,實現起來相對複雜一些。

**資料結構**

普里姆演算法主要使用的資料結構包括鄰接矩陣或鄰接表(用於儲存圖的資訊)、距離陣列(記錄當前生成樹到每個頂點的最短距離)和輔助陣列(記錄頂點是否已加入生成樹)。
克魯斯卡爾演算法主要使用的資料結構包括邊的集合(按權值排序)、並查集(用於判斷頂點是否屬於同一連通分量)。

- 知道紅黑樹嗎,二叉查詢樹,AVL平衡樹,哈夫曼樹,哈夫曼編碼及其應用

AVL(得名於其發明者的名字( Adelson-Velskii 以及 Landis))是一種更嚴格的二叉樹。相對來說旋轉次數較多,所以適用於不那麼需要頻繁旋轉的場景,比如插入刪除較少的場景就可以用,比如查詢。

紅黑樹是一種相對不那麼嚴格的弱平衡二叉樹,自平衡的二叉查詢樹,因為旋轉次數不那麼多,所以對於插入刪除等操作,優於AVL樹。因此對於查詢,插入,刪除操作較多的情況,一般用紅黑樹。 不用保證所有節點的左右子樹高度差的絕對值不超過1。HashMap、TreeMap都用了紅黑樹。

二叉查詢樹(BST)是一種特殊的二叉樹,它滿足以下性質:對於樹中的每個節點,其左子樹中的所有節點的值都小於該節點的值,而右子樹中的所有節點的值都大於該節點的值。這使得二叉查詢樹在查詢、插入和刪除操作中具有較高的效率。然而,當二叉查詢樹退化為連結串列時,其效能會急劇下降。
二叉排序樹可能退化為連結串列,(時間複雜度O(n)。在平均情況下,如果樹是隨機構建的,查詢的時間複雜度大致為O(log n)。

在許多應用中,樹中結點常常被賦予一個表示某種意義的數值,稱為該結點的權。從樹的根中所有葉結點的帶權路徑長度之和稱為該樹的帶權路徑長度。在含有n個帶權葉結點的二叉樹中,其中帶權路徑長度(WPL)最小的二叉樹稱為哈夫曼樹,哈夫曼編碼及其應用——資料壓縮。

### 給你一堆無序的資料,如何才能高效的找到其中間值?

可以使用快速選擇演算法(QuickSelect)來高效地找到無序資料的中位數或第k小的元素。
快速選擇演算法是快速排序演算法的變種,它的基本思路是:選取一個樞軸元素,將所有比樞軸元素小的元素放在左側,所有比樞軸元素大的元素放在右側,再根據樞軸元素所在的位置,將待選範圍縮小一半,遞迴地處理這個範圍,直到找到第k小的元素。
具體來說,我們可以選取一個隨機元素作為樞軸元素,將小於等於它的元素放在左側,大於它的元素放在右側。然後比較樞軸元素的位置和k的大小關係,若相等則找到了第k小的元素,否則根據大小關係遞迴處理左側或右側部分。
快速選擇演算法的時間複雜度為O(n),與快速排序相比,它只需要處理部分資料,因此效率更高。


------------------------------------------------------------------


計算機組成原理:http://www.cnblogs.com/yuxiaoba/p/8646090.html



# 計算機組成原理

馮·諾依曼機,其特點如下:

1) 計算機硬體系統由運算器、儲存器、控制器、輸入裝置和輸出裝置5 大部件組成
2) 指令和資料以同等地位儲存在儲存器中,並可按地址尋訪。
3) 指令和資料均用二進位制程式碼表示。
4) 指令由操作碼和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示運算元在儲存器中的位置。
5) 指令在儲存器內按順序存放。通常,指令是順序執行的,在特定條件下可根據運算結果或根據設定的條件改變執行順序。
6) 早期的馮諾依曼機以運算器為中心,輸入/輸出裝置透過運算器與儲存器傳送資料。現代計算機以儲存器為中心。

計算機的工作過程分為以下三個步驟:
1) 把程式和資料裝入主儲存器。
2) 將源程式轉換成可執行檔案。
3) 從可執行檔案的首地址開始逐條執行指令。


## 什麼是編譯?什麼是解釋?

計算機不能直接理解高階語言,只能直接理解機器語言,所以必須要把高階語言翻譯成機器語言,計算機才能執行高階語言編寫的程式。翻譯的方式有兩種,一個是編譯,一個是解釋。

1) 翻譯的方式有兩種,一個是編譯,一個是解釋。
2) 編譯型語言寫的程式在執行之前,需要一個專門的編譯過程,把程式編譯成為機器語言的檔案,比如exe檔案,如果源程式不變以後要執行的話就不用重新翻譯。
3) 解釋則不同,解釋性語言的程式不需要編譯,在執行程式的時候才翻譯,翻譯一句執行一句,不生成目標程式,這樣解釋性語言每執行一次就要翻譯一次,效率比較低。
4) C語言編譯過程分成四個步驟。

有哪些技術能夠提高CPU訪存速度?
1) 雙埠RAM 是指同一個儲存器有左、右兩個獨立的埠 為空間並行
2) 多模組儲存器 時間並行

### **Cache的基本工作原理**

cache是一種小容量高速緩衝儲存器,暫存器的速度和主存之間存在著太大的差異,在CPU和主存之間設定cache,把主存中被頻繁訪問的活躍程式塊和資料塊複製到cache中。
1) Cache通常採用相聯儲存器。使用Cache改善系統效能的依據是程式的區域性性原理。
2) 替換演算法:當Cache產生了一次訪問未命中之後,相應的資料應同時讀入CPU和Cache。但是當Cache已存滿資料後,新資料必須替換(淘汰)Cache中的某些舊資料。最常用的替換演算法有隨機演算法、先進先出演算法(FIFO)和近期最少使用演算法(LRU)。
3) 寫操作:因為需要保證快取在Cache中的資料與記憶體中的內容一致,Cache的寫操作比較複雜。命中:全寫(同時寫入 cache 和快取,寫緩衝)、回寫(只修改 cache 被換出時寫入主存)。不命中:寫分配、非分配(不調快,搭配全寫)
4) 與主存的對映方式:直接對映:主存資料塊只能裝入Cache中的唯一位置;全相聯對映:可以把主存資料塊裝入Cache 中的任何位置;組相聯對映:將Cache分為若干組,一個資料塊可以裝入一組內的任何一個位置。

儲存器地址的高段透過主存-Cache地址對映判定該地址的儲存單元是否在Cache中,如果在且有效,則Cache命中,按Cache地址訪問Cache.否則,Cache不命中,則需要訪問主存。

**主存地址結構劃分:**

主存和cache是以資料塊為單位進行資料交換的,因此主存塊大小=cache塊大小 資料塊大小64B(26B),以位元組編址,佔 6 位;

| 主存塊號 | 塊內地址 |
| ------------------------------- | ---- |
| 主存字塊標記(19位) + cache行號(3位) = 22位 | 6位 |

**查詢策略:**
假如訪問地址為:0…01000 001110

1. 根據主存塊號後3位確定cache行號
2. 如果主存塊號前19位與cache標記匹配且有效位為1,則cache命中,訪問塊內地址為001110的單元
3. 若cache不命中或有效位為0,則正常訪問記憶體

比較行號/組號、比較cache標記位和有效位、用塊內地址訪問主存的資料副本

* 有效位:(一定有)固定佔 ==**1**== 位,由於cache未裝進資料塊時,主存字塊標記預設為0,所以有效位是為了區分當前cache塊是沒裝資料還是裝了一個主存第0的資料
* 標記位:(一定有)==主存字塊標記位數==,用於標識當前cache行存放的主存哪一行資料,計算方法見上
- 髒位:(特定條件下才有)也叫一致性維護位,只有當cache寫策略採用 ==**寫回法** 時,該位生效並且佔 **1** 位==
- 替換控制位: (特定條件下才有)或叫替換演算法位,用於標記替換cache哪一行會被換出,在cache替換策略中,當採用 ==**LRU和LFU替換演算法**== 時,這個控制位會作為被換出的依據。

**程式訪問的區域性性**

時間區域性性:如果一個儲存項被訪問,則可能該項會很快被再次訪問.
空間區域性性:如果一個儲存項被訪問,則該項及其鄰近的項也可能很快被訪問.


**字長**

機器字長:計算機能直接處理的二進位制位數
指令字長:一個指令字中包含的二進位制程式碼位數
儲存字長:一個儲存單元儲存二進位制程式碼長度
CPI:執行一條指令需要的時鐘週期數

機器字長是指計算機進行一次整數運算(即定點整數運算)所能處理的二進位制資料的位數

指令執行過程?
1) 取指令
2) 分析指令
3) 執行指令

### RISC(**簡單指令集計算機**)、CISC(**複雜指令集計算機**)

CISC和RISC是計算機處理器的兩種指令集架構。CISC代表複雜指令集計算機,而RISC代表精簡指令集計算機。

CISC指令數目多、字長不固定、定址方式多、暫存器數量少、微程式控制;
RISC 少、少、少、多、組合邏輯控制;

8086是Intel公司在1978年推出的一款16位微處理器,也是x86指令集的一種實現。

指令系統是一組用於控制計算機硬體操作的指令集合。


### **指令流水線的基本概念**


流水線技術是一種顯著提高指令執行速度與效率的技術。方法是:指令取指完成後,不等該指令執行完畢即可取下一條指令。如果把一條指令的解釋過程進一步細分,例如分成取指,譯碼,執行,訪存,寫回五個子過程,並用五個子部件分別處理這五個子過程

影響流水線效能的因素

1)結構相關是當多條指令同一時刻爭用同一資源形成衝突

解決方案:(1)暫停一個時鐘週期(2)單獨設定資料儲存器和指令儲存器

2)資料相關是指令在流水線中重疊執行時,當後繼指令需要用到前面指令的執行結果時發生的.

解決方案:(2)暫停一個時鐘週期(2)資料旁路:把前一條指令的ALU計算結果直接輸入到下一條指令

3)控制相關是當流水線遇到分支指令和其他改變PC值的指令時引起的.

解決方案:(1)延遲轉移技術。將轉移指令與其前面的與轉移指令無關的一條或幾條指令對換位置,讓成功轉移總是在緊跟的指令被執行之後發生,從而使預取的指令不作廢。(2)轉移預測技術

### CPU 的功能

中央處理器(CPU) 由運算器和控制器組成。其中,控制器的功能是負責協調並控制計算機各部件執行程式的指令序列,包括取指令、分析指令和執行指令;運算器的功能是對資料進行加工。


### CPU響應中斷的條件是什麼?簡述中斷處理過程

CPU響應中斷必須滿足3個條件:

1.中斷源有中斷請求。
2.CPU允許中斷及開中斷(異常和不可遮蔽中斷不受此限制)。
3.一條指令執行完畢(異常、DMA請求不受此限制),且沒有更緊迫的任務。

異常事件檢測由cpu在執行每一條指令的過程中執行,中斷請求檢測由cpu在每條指令執行結束,取下條指令之前進行。


### 中斷響應優先順序和中斷處理優先順序分別指什麼

中斷優先順序包括響應優先順序和處理優先順序,響應優先順序在硬體線路上是固定的,不便改動。處理優先順序可利用中斷遮蔽技術動態調整,而中斷處理優先順序可以由中斷遮蔽字來改變,反映的是正在處理的中斷是否比新發生的中斷的處理優先順序低(遮蔽位為"0", 對新中斷開放),若是,則中止正在處理的中斷,轉到新中斷去處理,處理完後再回到剛才被中止的中斷繼續處理。

程式中斷是指在計算機執行實現程式的過程中,出現某些急需處理的異常情況或特殊請求,CPU暫時中止現行程式,而轉去這些異常情況或特殊請求進行處理,在處理完畢後CPU又自動返回到現行程式的斷點處,繼續執行原程式。

### **一個完整的中斷過程包括:**

**中斷請求:** 是指中斷源(引起中斷的事件或裝置)向CPU發出的請求中斷的要求。
**中斷判優:** 當有多箇中斷源發出請求時,需要透過適當的辦法決定先處理哪個中斷請求;
**中斷響應:** 指CPU中止現行程式轉至中斷服務程式的過程;
**中斷處理:** 就是指CPU執行中斷服務程式;
**中斷返回:** 執行完中斷服務程式後,返回到被中斷的程式


■外中斷:I/O裝置等來自主機外部裝置的中斷。(通常所說的中斷就是外中斷)
■內中斷:處理器硬體故障或程式出錯引起的中斷。(也叫異常)硬體故障、程式出錯除數為0、trap

CPU對異常和中斷響應過程:

硬體:1.關中斷:CPU響應後,要保護現場的狀態,CPU不應該響應更高階別的中斷,目的是將現場儲存完整,否則在中斷執行結束之後,無法恢復執行當前的程式。
2.儲存斷點:記錄程式的斷點,程式是由一些列的指令構成的,存在一個程式計數器,用於記錄此時程式下一個要執行但由於中斷沒有發生的指令,儲存下來,便於返回這個程式
3.引出中斷服務程式:取出中斷服務程式的入口地址,及使用程式計數器記錄該程式的指令。

4.儲存現場和遮蔽字:在進入中斷程式後,要儲存現場,指一些暫存器的內容,如程式的狀態字暫存器PSWR和某些通用暫存器的內容
5.開中斷:在完成以上的一系列的儲存動作後可以接受更高階別的中斷了
6.執行中斷服務程式
7.關中斷:執行完成後,要恢復現場,此時不能接收新的中斷
8.恢復現場和遮蔽字:將之前儲存的暫存器的內容恢復,對應了第四條
9.開中斷、中斷返回:中斷服務程式的而最後一條指令通常是一條中斷返回指令,返回原來的斷點處,繼續執行原程式。

### 向量中斷、中斷向量、向量地址三個概念是什麼關係

1)中斷向量:每個中斷源都有對應的處理程式,這個處理程式稱為中斷服務程式,其入口地址稱為中斷向量。所有中斷的中斷服務程式入口地址構成一個表,稱為中斷向量表;也有的機器把中斷服務程式入口的跳轉指令構成一張表,稱為中斷向量跳轉表。

2)向量地址:中斷向量表或中斷向量跳轉表中每個表項所在的記憶體地址或表項的索引值,稱為向量地址或中斷型別號。

3)向量中斷:指一種識別中斷源的技術或方式。識別中斷源的目的是找到中斷源對應的中斷服務程式的入口地址的地址,即獲得向量地址。

CPI:執行一條指令需要時鐘週期數

1)程式查詢:CPU要不斷地查詢外圍裝置的工作狀態,一旦外圍裝置“準備好”或“不忙”,即可進行資料的傳送 IO裝置把資料充滿緩衝區的速度高於從緩衝區取資料的速度 不然丟資料

2)程式中斷:當外圍裝置完成資料傳送的準備後,便主動向CPU發出“中斷請求” 訊號。**若CPU允許中斷,則在一條指令執行完後**,響應中斷請求,轉去執行中斷服務子程式,完成資料傳送,通常傳送一個字或一個位元組。傳送完後繼續執行原程式。 中斷請求方式在一定程度上實現了CPU和外圍裝置的並行工作。

3)DMA:在外圍裝置和主存之間開闢直接的資料通路。在正常工作時,所有的工作週期均用於執行CPU的程式。當外圍裝置完成I/O的準備工作後,佔用CPU的工作週期,和主存直接交換資料。完成後,CPU又繼續控制匯流排,執行原程式。 完成這項工作的是系統中增設的DMA控制器。
**DMA控制器**在進行DMA傳送之前,由CPU將每次傳送的主存地址、資料的個數等引數傳送給DMA控制器,然後具體的資料傳送就由DMA控制器實現,無須CPU的參與。

DMA請求:IO裝置向DMA控制器發起請求。
DMA中斷:DMA中斷指的是DMA傳送完成後向CPU的中斷。

**中斷方式是對I/O準備做出改進,它不需要CPU不斷查詢來確認外設狀態,而是引入了中斷機制,在I/O準備好後,透過中斷請求通知CPU,而在外設準備階段,CPU是可以執行原來的主程式,也就是說CPU只參與資料傳送階段。而DMA方式更是將資料傳送階段也給省了,將資料傳送的工作交給DMA控制器,使得CPU更加專注於主程式的執行。**

### 怎麼解決分支指令在流水線裡的控制相關

在流水線中,分支指令會引起控制相關(control hazard),導致流水線暫停等待分支指令的結果。為了解決這個問題,可以使用以下方法:

1. 延遲槽(delay slot):在分支指令後面插入一條指令,即延遲槽,使流水線能夠繼續執行,同時避免分支指令帶來的延遲。延遲槽中的指令應該是不影響程式正確性的,可以是無操作的指令(NOP)或者是分支指令的目標指令。延遲槽的長度需要根據具體的架構來決定。
2. 預測分支指令的結果:在分支指令執行前,預測分支的結果,如果預測正確,則流水線可以繼續執行下去,否則需要清空之前的指令,重新執行分支指令後面的指令。預測分支結果的演算法有很多,常見的有靜態預測和動態預測。靜態預測是根據指令的型別和位置等資訊來進行預測,比如總是預測跳轉不發生,或者總是預測跳轉發生。動態預測則需要執行時的歷史資訊,比如跳轉指令的目標地址是否在最近幾次跳轉中出現過,來進行預測。
3. 分支目標快取(Branch Target Buffer,BTB):分支目標快取是一個小的快取記憶體,用來儲存分支指令的目標地址和預測的結果。如果下次遇到相同的分支指令,可以直接從快取中讀取預測結果,加速分支指令的執行。BTB一般與預測演算法配合使用,可以顯著提高流水線的效率。

13. 通道

在計算機體系結構中,通道(Channel)是一種並行處理資料的方式,它允許多個裝置同時與記憶體進行資料傳輸,而不需要CPU的干預。通道通常由一組特殊的硬體裝置組成,可以獨立地與記憶體進行資料傳輸。
通道的使用可以大大提高系統的吞吐量和效能,因為它允許多個裝置同時進行資料傳輸,而不需要等待CPU的介入。通道可以透過DMA(直接儲存器訪問)引擎實現,它允許裝置直接訪問記憶體,而不需要CPU的干預。
通道在大型計算機、伺服器和高效能運算機中廣泛使用,它們通常具有高頻寬和低延遲,可以同時處理多個資料流。通道通常被用於高速網路介面、儲存器和其他裝置的資料傳輸,以及高效能運算和資料處理任務


14. 原碼,反碼,補碼

在計算機中,正數的原碼、反碼、補碼是相同的,都是它們的二進位制表示。例如,十進位制的 +5,它的二進位制原碼、反碼、補碼都是 00000101。
負數的原碼是將對應正數的最高位(即符號位)改為1,例如-5的原碼是10000101。反碼是在原碼的基礎上,除了符號位之外,其他位按位取反,例如-5的反碼是11111010。補碼是在反碼的基礎上加1,例如-5的補碼是11111011。
使用補碼來表示有符號整數,可以避免在加減法時出現溢位的情況。例如,對於-5和+3的加法操作,可以將它們的補碼相加:11111011 + 00000011 = 00000100。這個結果的補碼錶示是 00000100,對應的十進位制是+4,這是正確的結果。

15. ROM和RAM

ROM和RAM是計算機中常見的兩種儲存器,它們的主要區別在於其資料的可讀寫性質:

1. ROM(只讀儲存器,Read-Only Memory):只能讀取資料,不能寫入資料。ROM儲存器通常用於存放系統啟動程式、韌體等只需在裝置製造或系統初始化時進行寫入的資料。
2. RAM(隨機儲存器,Random Access Memory):可以讀寫資料。RAM儲存器通常用於臨時儲存程式執行時需要讀取或寫入的資料,如系統記憶體、快取等。

16. I/O阻塞和I/O非阻塞的區別

在I/O阻塞模式下,當一個程序發起一個I/O請求後,它將一直等待直到I/O操作完成後才能繼續執行。在這個過程中,程序會被作業系統掛起,等待I/O操作完成。這種模式下,I/O操作可能會佔用大量的CPU時間,從而導致系統效能下降。
相反,在I/O非阻塞模式下,當一個程序發起一個I/O請求後,它將不會等待I/O操作的完成,而是立即返回一個錯誤碼或者一個可讀可寫的標誌。程序可以透過輪詢或者回撥等方式來檢查I/O操作是否完成,如果沒有完成,它可以繼續執行其他操作。這種模式下,I/O操作不會阻塞程序,從而提高了系統的併發性和效能。
總的來說,I/O非阻塞模式比I/O阻塞模式更加靈活,適用於需要處理大量I/O操作的系統。但是,它也需要程序進行額外的輪詢或回撥操作,增加了程式碼的複雜度。因此,在選擇I/O模式時,需要根據具體的應用場景進行權衡。


21. 中斷的過程

中斷源向CPU提出中斷請求;中斷響應判優;檢查中斷響應條件;

中斷過程:關中斷,儲存斷點,引出中斷服務程式

儲存現場和遮蔽字;開中斷;執行中斷服務程式;關中斷;恢復現場和遮蔽字;開中斷;中斷返回。

22. 中斷保護機制,程序死迴圈時怎麼辦

定時器中斷,作業系統介入

23. 計算機儲存有哪些層次

暫存器,cache,記憶體,外存

25. 虛擬儲存和快取記憶體的結構和各自的作用?

虛擬儲存和快取記憶體是計算機系統中常見的兩種儲存技術,它們分別有著不同的結構和作用。
虛擬儲存是一種將主存和輔存結合起來使用的技術,可以擴大程式的地址空間,提高程式的執行效率。虛擬儲存通常由硬體和作業系統共同實現。在虛擬儲存中,主儲存器和輔儲存器之間透過一定的對映關係進行資料的交換,這樣程式就可以使用比實際主存更大的地址空間,而且不需要把所有資料都存放在主存中,這樣可以節省主存空間。
虛擬儲存的實現通常依靠一個叫做頁表的資料結構,它記錄了主存和輔存之間的對映關係。當程式訪問一個虛擬地址時,處理器會先到頁表中查詢對應的實體地址,如果在主存中,則直接訪問,否則就觸發缺頁異常,作業系統會把所需的資料從輔存複製到主存中。
快取記憶體是一種硬體儲存器,通常整合在處理器內部或者與處理器緊密相連,它用於加速訪問主儲存器。快取記憶體通常使用一定的快取演算法,例如最近最少使用(LRU)演算法,來快取最有可能被使用的資料。當處理器需要訪問某個資料時,如果該資料在快取記憶體中已經存在,則可以直接從快取記憶體中取得,從而避免了從主存中讀取資料的開銷。
快取記憶體的結構通常由多級快取組成,其中L1快取通常與處理器核心直接相連,速度非常快,但容量較小。L2快取通常由多個處理器核心共享,容量較大,但速度相對較慢。L3快取則通常位於處理器內部或者與處理器緊密相連,用於加速L2快取的訪問。
總體來說,虛擬儲存和快取記憶體都是用於提高程式執行效率的重要技術,虛擬儲存擴大了程式的地址空間,避免了主存的空間限制,而快取記憶體則加速了程式對主存的訪問。它們在計算機系統中扮演著重要的角色。

26. 指令執行的步驟有哪些?

取指,譯碼,執行,訪存,寫回

27. 微程式控制器的原理

將每條機器指令編寫成一個微程式,每個微程式包含若干條微指令,每條微指令對於一個或幾個微操作

28. 流水線什麼時候可以中斷

在計算機處理器的流水線執行過程中,流水線的中斷處理主要有兩種情況:

1. 指令級中斷:當一個指令引發中斷時,當前正在流水線上執行的指令會被暫停,中斷處理程式會被執行。當中斷處理程式執行完畢後,流水線可以從中斷前的指令處繼續執行。
2. 異常級中斷:當系統發生某種異常情況(如缺頁異常)時,當前正在流水線上執行的指令會被暫停,處理器會跳轉到異常處理程式進行處理。當異常處理程式執行完畢後,流水線可以從中斷前的指令處繼續執行。

需要注意的是,流水線中斷處理需要保證流水線的正確性,即保證中斷處理不會影響到流水線中未處理完的指令,同時也需要保證中斷處理程式的正確性。在流水線處理器設計中,為了避免中斷對流水線的影響,一般會設計相應的中斷處理電路,如中斷控制器,以保證中斷能夠正確地被處理。

29. I/O控制方式

在計算機中,輸入/輸出(I/O)控制方式通常有以下幾種:

1. 程式控制I/O(PIO):這種方式下,所有的I/O操作都由CPU來控制。CPU向裝置傳送命令,等待裝置的響應,並將響應讀取到記憶體中。這種方式下,CPU需要等待I/O操作完成後才能進行下一步操作,因此效率較低。
2. 中斷控制I/O(IRQ):這種方式下,裝置完成I/O操作後,向CPU傳送中斷請求訊號,CPU響應中斷,並進行中斷處理程式。中斷處理程式將裝置的I/O響應讀取到記憶體中。這種方式下,CPU不需要等待I/O操作完成,可以在等待期間進行其他操作,因此效率比PIO高。
3. 直接儲存器訪問(DMA):這種方式下,裝置可以直接訪問系統記憶體,完成I/O操作。CPU只需要啟動DMA操作,並在DMA操作完成後讀取記憶體中的資料即可。這種方式下,CPU不需要參與I/O操作,因此效率最高。

------------------------------------------------------------------

作業系統:http://www.cnblogs.com/yuxiaoba/p/8646139.html

系統呼叫(system call):當一個程式使用系統呼叫的時候,透過作業系統預先設定的陷阱處理程式(trap handler)從使用者態陷入到核心態,並將特權級別提升到核心模式,這個時候作業系統可以完全控制和訪問計算機的硬體資源,以機器指令的形式來執行,待完成請求的服務後,作業系統將控制權交還給原程式。

**exe檔案不是機器語言**。exe檔案是Windows作業系統上常見的可執行程式檔案,是一種二進位制檔案,包含了計算機程式的機器程式碼和資料。這些機器程式碼和資料是由編譯器將原始碼翻譯成機器語言後,再組合成一個二進位制檔案,並新增一些頭部資訊形成的。因此,exe檔案雖然包含了機器語言程式碼,但它本身並不是機器語言,而是包含了機器語言程式碼的可執行檔案。

### 作業系統的目標和功能?(什麼是作業系統?)

1.作業系統是計算機資源的管理者

處理機管理(程序控制、程序同步、程序通訊、死鎖處理、處理機排程)
儲存器管理(提高記憶體利用率,記憶體的分配與回收、地址對映、記憶體保護與共享、記憶體擴充)
檔案管理(計算機中的資訊都是以檔案的形式存在的)
裝置管理(完成使用者的I/O請求,方便使用者使用裝置、並提高裝置的利用率)

2.作業系統為使用者提供使用計算機硬體系統的介面命令介面(使用者透過控制檯或終端輸入操作命令,向系統提供各種服務要求)

程式介面(由 系統呼叫 組成,使用者在程式中使用這些系統呼叫來請求作業系統為其提供服務)
圖形介面 最常見的 圖形使用者介面GUI (最終還是透過呼叫程式介面實現的)


### 程序和執行緒的區別

1.程序(Process)是擁有資源的基本單位,執行緒(Thread)是獨立排程的基本單位;
2.執行緒依賴於程序而存在,一個程序至少有一個執行緒;
3.程序有自己的獨立地址空間,執行緒共享所屬程序的地址空間;
4.開銷建立和撤銷開銷大;

### 程序和程式的區別

1、程序是動態的,程式是靜態的;
2、程序是程式的執行,程式是程式碼的集合;
3、程序包括程式、資料和PCB;

### 程序的5種狀態及轉換過程?

建立、終止
執行、阻塞、就緒

執行態
程序擁有了CPU資源和其他所需資源。(比如印表機資源,當印表機準備好,印表機才能為該程序服務)
就緒態
程序擁有了其他所需資源,但還沒擁有CPU資源。(當印表機準備好,該程序等待CPU的排程)
阻塞態
請求某一資源而暫停執行,程序既沒有CPU資源也沒有其他所需資源。(當印表機資源在準備的時候,該程序不佔用印表機資源,而且CPU會執行其他程序的指令)

### 程序的排程演算法有哪些?

1.先來先服務 first-come first-serverd(FCFS)

按照請求的順序進行排程。非搶佔式,開銷小,無飢餓問題,響應時間不確定(可能很慢);
對短程序不利,對IO密集型程序不利。

2.最短作業優先 shortest job first(SJF)
對短程序提供好的響應時間,對長程序不利


### 程序的通訊方式?


程序和執行緒是作業系統中的基本執行單元,它們可以透過各種方式進行通訊,常用的有以下幾種:
1.管道:管道是一種基於檔案描述符的通訊機制,是一種半雙工的通訊方式。程序透過管道進行通訊時,需要建立一條管道,將其中一個程序的輸出和另一個程序的輸入相連。這樣,一個程序就可以向管道中寫入資料,另一個程序可以從管道中讀取資料。
2.共享記憶體:共享記憶體是程序間通訊中最快的一種方式,其本質是一段由作業系統維護的記憶體區域,多個程序可以訪問該記憶體區域。當程序需要進行通訊時,需要在該記憶體區域中建立一些共享的變數或資料結構,並對其進行讀寫操作。
3.訊息佇列:訊息佇列是一種訊息傳遞機制,用於在程序之間傳遞資料。一個程序向訊息佇列中傳送一條訊息,另一個程序則從該佇列中讀取該訊息。訊息佇列可以實現點對點通訊,也可以實現多對多通訊。

### 使用者級執行緒和核心級執行緒

使用者級執行緒的所有操作都在使用者空間完成,核心意識不到,
優點:可以在不支援執行緒的作業系統中實現,代價比核心執行緒少得多;缺點,阻塞會阻塞整個程序從而阻塞所有執行緒。

核心執行緒建立和銷燬都是由作業系統負責、透過系統呼叫完成的。

### 執行緒模型

多對一模型、一對一模型和多對多模型。
多對一模型,多個使用者級執行緒對映到一個核心級執行緒。每個使用者程序只對應一個核心級執行緒。


### 同步和互斥?

1.同步 直接制約;多個程序因為合作而使得程序的執行有一定的先後順序。比如某個程序需要另一個程序提供的訊息,獲得訊息之前進入阻塞態;

2.互斥 間接制約;多個程序在同一時刻只有一個程序能進入臨界區

3.同步機制的4個準則

1.空閒讓進 當無程序處於臨界區,可允許一個請求進入臨界區的程序立即進入自己的臨界區
2.忙則等待 當已有程序進入自己的臨界區,所有企圖進入臨界區的程序必須等待
3.有限等待 對要求訪問臨界資源的程序,應保證該程序能在有限時間內進入自己的臨界區
4.讓權等待 當程序不能進入自己的臨界區,應釋放處理機


### 死鎖

是指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。

### 產生死鎖的必要條件

① 互斥條件:指程序對所分配到的資源進行排它性使用,即在一段時間內某資源只由一個程序佔用。
② 請求和保持條件:指程序已經保持至少一個資源,但又提出了新的資源請求,而該資源已被其它程序佔有,此時請求程序阻塞,但又對自己已獲得的其它資源保持不放。
③ 不剝奪條件:指程序已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放
④ 迴圈等待條件:指在發生死鎖時,必然存在一個程序資源的環形鏈。

4.處理死鎖的基本方法:

① 預防死鎖: 破壞4條件

② 避免死鎖:

③ 檢測死鎖:

④ 解除死鎖:

### 銀行家演算法

主要思想是避免系統進入不安全狀態,在每次進行資源分配時,它首先檢查系統是否有足夠的資源滿足要求,如果有,則先試行分配,並對分配後的新狀態進行安全性檢查。如果新狀態安全,則正式分配上述資源,否則拒絕分配上述資源。


### 儲存器管理應具有的功能

記憶體的分配和回收、地址變換


### 將使用者程式變為可在記憶體中執行的程式的步驟?

1.編譯:由編譯程式將使用者原始碼編譯成若干目標模組

2.連結:由連結程式將編譯後形成的一組目標模組及所需的庫函式連結在一起,形成一個完整的裝入模組。

3.裝入:由裝入程式將裝入模組裝入記憶體中執行。


### 記憶體管理的主要功能
記憶體空間分配、地址轉換、記憶體管理、記憶體共享


### **虛擬儲存器的基本概念**

虛擬記憶體是一種記憶體管理技術,從邏輯上對記憶體容量加以擴存的。
連續分配:固定分割槽和動態分割槽分配產生記憶體碎片,頁、段、頁段;按照分割槽大小固定與否:分頁分段;是否把作業都放入記憶體才能執行,請求分頁。

1) 頁式虛擬儲存器:把虛擬儲存空間和實際空間等分成固定大小的頁,邏輯地址由虛頁號和頁內地址兩部分組成,實際地址也分為頁號和頁內地址兩部分,由地址對映機構將虛頁號轉換成主存的實際頁號.頁表是虛擬頁號與物理頁號的對映表.頁式管理由作業系統進行,對應用程式設計師的透明的.

2)段式虛擬儲存器:按照程式自身的邏輯關係劃分為若干個段,段長可以任意設定.

4) 段頁式管理:是上述兩種方法的結合,它將儲存空間按邏輯模組分成段,每段又分成若干個頁,訪存透過一個段表和若干個頁表進行.

### **TLB(快表) 地址轉換流程、請求分頁中的地址轉換流程**

在虛擬儲存器中進行地址變換時,需要虛頁號變換成主存中實頁號的內部地址變換,這一過程快取時首先要到主存查頁表,然後才能根據主存實體地址訪問主存的存取指令或資料。因此採用虛擬儲存器機制後,訪存的次數增加了。為了減少訪存的次數,往往將頁表中最活躍的幾個頁表項複製到快取記憶體中。這種在快取記憶體中的頁表項稱為快表(translation look aside buffer)

查表時,根據虛頁表同時查詢快表和慢表,當在快表中查到該虛頁號時,就能很快找到對應的實頁號,將其送入主存實地址暫存器,同時使慢表的查詢作廢.
如果在快表中查不到,則經過一個訪主存的時間延遲後,將從慢表中查到的實頁送入實地址暫存器,同時將此虛頁號和對應的實頁號送入快表.
訪問頁不在記憶體中,產生和處理缺頁中斷,但記憶體無空閒空間時,就要選擇合適的頁面置換演算法.

虛頁號 + 頁內偏移 -> 頁框號+ 頁內偏移 = 完整的實體地址;虛頁號和TLB標記全相聯比較,相等且有效位1,快表命中

兩級頁表:一級頁目錄號代表一級頁表中頁表項相對一級頁表的偏移量


### 頁面置換演算法
fifo 一個佇列,最先入隊的頁面最先被逐出.一般來說,快取越大,命中率越高,缺頁率越低;貝萊迪異常.
lru 最近最少使用,每個頁面上記錄一個上次使用時間
clock 把記憶體中所有頁面視為一個迴圈佇列,一個指標關聯,像時鐘的指標一樣在移動.改進型,給每一個頁面設定一個使用位一個修改位,沒有使用也沒有修改,被逐出.

------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------
計算機網路:http://www.cnblogs.com/yuxiaoba/p/8646042.html


# 計算機網路

### 電路交換,報文交換和分組交換的區別?


分組交換:將報文分組轉發到相鄰節點,查詢轉發表,轉發到下一個節點。也是儲存-轉發型別的網路。
### 計算機網路的主要效能指標?

頻寬:最高資料率、時延;

3. OSI七層網路

| | | |
| ------- | ----------------------------------------------------------------------- | ------------------------- |
| OSI七層模型 | 功能 | 特點 |
| 應用層 | 為應用程式提供服務和協議 | 實現使用者與網路之間的通訊 |
| 表示層 | 資料格式的表示和轉換 | 資料的表示、編碼和加密 |
| 會話層 | 建立、管理和維護會話 | 管理網路中的對話和資料傳輸 |
| 傳輸層 | 流量控制、差錯控制、服務質量、資料傳輸管理、端到端 | 為兩臺主機上的應用程式之間提供端到端的可靠資料傳輸 |
| 網路層 | 流量控制、擁塞控制、差錯控制、網際互聯 | 實現不同網路之間的互聯 |
| 資料鏈路層 | 把網路層傳下來的分組封裝成幀,是為了出錯時只重發出錯的;差錯控制CRC迴圈冗餘;流量控制,停止等待後退n幀選擇重傳:連續傳送按序接受累計確認; | 管理相鄰節點之間的資料傳輸 |
| 物理層 | 物理媒介上的位元流傳輸 | 提供傳輸介質、資料傳輸速率、電壓等方面的規範 |

4. 擁塞控制和流量控制區別

| | | | |
| ----- | ---------------------- | ----------------------------- | --- |
| 特點 | 擁塞控制 | 流量控制 | |
| 目的 | 控制網路擁塞 | 控制傳送方與接收方的速度匹配 | |
| 傳送方控制 | 是 | 是 | |
| 接收方控制 | 否 | 是 | |
| 依據 | 擁塞視窗 | 接收方緩衝區大小 | |
| 演算法 | Slow Start等 | Stop and Wait、Sliding Window等 | |
| 優點 | 能夠避免網路擁塞,提高網路的效能 | 能夠保證傳送方與接收方的速度匹配,提高網路的可靠性 | |
| 缺點 | 在網路不擁塞的情況下,可能會導致網路效能降低 | 不能夠避免網路擁塞,只能保證傳送方與接收方的速度匹配 | |

點對點。/全域性問題。

### 為什麼要進行流量控制?

由於接收發雙方各自的工作速率和快取空間的差異,可能出現傳送方的傳送能力大於接收方的接收能力的現象,如若此時不適當限制傳送方的傳送速率(即鏈路上的資訊流量),前而來不及接收的幀將會被後面不斷髮送的幀"淹沒",造成幀的丟失而出錯。

### 流量控制的方式

停止等待:傳送方每傳送一幀,都要等待接收方的應答訊號,之後才能傳送下一幀;接收方每接收一幀,都要反饋一個應答訊號;
後退n幀:傳送方連續傳送;接收方按序接受,累計確認,超時重傳;(傳送視窗大小>1,接收視窗大小=1)
選擇重傳:可設法只重傳出現差錯的資料幀或計時器超時的資料幀,但此時必須加大接收視窗,以便先收下傳送序號不連續但仍處在接收視窗中的那些資料幀(傳送視窗大小>1,接收視窗大小>1)


### 可靠傳輸機制有哪些?

資料鏈路層的可靠傳輸通常使用確認和超時重傳兩種機制來完成。

確認是一種無資料的控制幀,這種控制幀使得接收方可以讓傳送方知道哪些內容被正確接收。有些情況下為了提高傳輸效率,將確認捎帶在一個回覆幀中,稱為捎帶確認。超時重傳是指傳送方在傳送某個資料幀後就開啟一個計時器,在一定時間內如果沒有得到傳送的資料幀的確認幀,那麼就重新傳送該資料幀,直到傳送成功為止


### 隨機訪問介質訪問控制?

隨機訪問協議,不採用集中控制方式(通道劃分介質訪問--分時多工),所有使用者能根據自己的意願隨機地傳送資訊,佔用通道,在匯流排形網路中,當有兩個或多個使用者同時傳送資訊時,就會產生幀的衝突,導致所有衝突使用者的傳送均以失敗告終。為了解決隨機接入發生的碰撞,每個使用者需要按照一定的規則反覆地重傳它的幀,直到該幀無碰撞地透過。

CSMA協議、CSMA/CD 協議和CSMA/CA 協議等

- CSMA協議(載波偵聽多路訪問)(Carrier Sense Multiple Access)
非堅持式:經偵聽,如果介質空閒,立即傳送;如果介質忙,則等待一個隨機分佈時間傳送;
p-堅持式:經偵聽,如介質空閒,以p的機率傳送,以(1–p)的機率延遲一個時間單元傳送;如介質忙,持續偵聽直至空閒
1-堅持式:經偵聽,如介質空閒,立即傳送;如介質忙,持續偵聽,一旦空閒立即傳送

- 載波偵聽多路訪問/碰撞檢測 Carrier Sense Multiple Access with Collision Detection, CSMA/CD協議是CSMA 協議的改進方案。
”載波幀聽”就是傳送前檢查通道,為了及時發現是否發生碰撞,即每個站在傳送資料之前先要檢測一下匯流排上是否有其他站點正在傳送資料,若有則暫時不傳送資料,等待通道變為空閒時再傳送。
”碰撞檢測”就是邊傳送邊偵聽,如果監聽到了碰撞,立即停止傳送,等待一段時間後重發;
多路訪問指多個裝置可以同時訪問介質,一個裝置傳送的幀也可以被多個裝置接收。
“先聽後發,邊聽邊發(區別於CSMA 協議),衝突停發,隨機重發”。

- CSMA/CA協議(Collision Avoidance:碰撞避免)

CSMA/CD 協議已成功應用使用有線連線的區域網,但在無線區域網環境下,卻不能簡單地搬用CSMA/CD 協議,特別是碰撞檢測部分。主要有兩個原因:
1) 接收訊號的強度往往會遠小於傳送訊號的強度,且在無線介質上訊號強度的動態變化範圍很大,因此若要實現碰撞檢測,則硬體上的花費就會過大。
2) 在無線通訊中,並非所有的站點都能夠聽見對方,即存在“隱蔽站”問題,中心接入點ab相距甚遠

把碰撞檢測改為碰撞避免”碰撞避免”並不是指協議可以完全避免碰撞,而是指協議的設計要儘量降低碰撞發生的機率。
802.11無線區域網不使用“碰撞檢測”,一旦發生一個幀,就是完全傳送該幀。CSMA/CA 採用二進位制指數退避演算法。通道從忙態變為空困時,任何一個站要傳送資料幀時,不僅都須等待一個時間間隔,而且還要進入爭用視窗,並計算隨機退避時間以便再次試圖接入通道,因此降低了發生碰撞的機率。

CSMA/CA 還使用預約通道、ACK、RTS請求傳送控制幀/CTS 允許傳送控制幀“隱蔽站”問題
1) 預約通道。傳送方在傳送資料的同時向其他站點通知自己傳輸資料需要的時間長度,以便讓其
他站點在這段時間內不傳送資料,從而避免碰撞。
2) ACK 幀。所有站點在正確接收到發給自己的資料幀(除廣播幀和組播幀)後,都需要向傳送方
發回一個ACK 幀,如果接收失敗,那麼不採取任何行動。傳送方在傳送完一個資料幀後,在規定
的時間內如果未收到ACK 幀,那麼認為傳送失敗,此時進行該資料幀的重發,直到收到ACK 幀或
達到規定重發次數為止。
3) RTS/CTS 幀。可選的碰撞避免機制,主要用於解決無線網中的“隱蔽站”問題

差別:cd檢查衝突但無法避免,ca不能檢查有無衝突;cd匯流排形乙太網,ca 無線區域網;


### 集線器、網橋和交換機的區別與聯絡。
中繼器 集線器 物理 隔離衝突域x和廣播域x
網橋 鏈路層 隔離衝突域y廣播域x
交換機 鏈路層 多埠的網橋
路由器 網路層 隔離衝突域y廣播域y

衝突域是一時間內只能有一臺裝置傳送資訊的範圍。站點發出一個廣播訊號,所有能接收收到這個訊號的裝置範圍稱為一個廣播域。

鏈路層使用MTU表示最大傳輸幀長度,報文長度不能超過MTU,否則會進行分片,比如比較大的IP資料包就會被分片,為了避免被分片。一般要控制IP報文長度。

網路卡是一個有mac地址的物理裝置,透過mac地址與區域網內的交換機通訊,交換機可以識別mac地址。
而單純的中繼器,集線器,雙絞線等裝置只識別物理層裝置。
路由器則工作在3層ip層,必須要有ip才能工作,所以路由器每一個介面都對應一個ip,維護一個可以識別ip的路由表,進行ip資料包轉發。
交換機具有自學習能力,學習的是交換表的內容。交換表中儲存著 MAC 地址到介面的對映。
乙太網是一種星型拓撲結構區域網。早期使用集線器進行連線,它是一種物理層裝置,作用於位元而不是幀,當一個位元到達介面時,集線器重新生成這個位元,並將其能量強度放大,從而擴大網路的傳輸距離。之後再將這個位元向其它所有介面。特別是,如果集線器同時收到同時從兩個不同介面的幀,那麼就發生了碰撞。目前乙太網使用交換機替代了集線器,它不會發生碰撞,能根據 MAC 地址進行儲存轉發。

### 路由器的作用,網路層和傳輸層是幹什麼的

路由器主要完成兩個功能:一是路由選擇(確定哪一條路徑),二是分組轉發(當一個分組到達時所採取的動作)。前者是根據特定的路由選擇協議構造出路由表,同時經常或定期地和相鄰路由器交換路由資訊而不斷地更新和維護路由表。後者處理透過路由器的資料流,關鍵操作是轉發表查詢、轉發及相關的佇列管理和任務排程等。

1) 路由選擇。指按照複雜的分散式演算法,根據從各相鄰路由器所得到的關於整個網路拓撲的變化情況,動態地改變所選擇的路由。
2) 分組轉發。指路由器根據轉發表將使用者的 IP 資料包從合適的埠轉發出去。
3) 路由表是根據路由選擇演算法得出的,而轉發表是從路由表得出的。轉發表的結構應當使查詢過程最最佳化,路由表則需要對網路拓撲變化的計算最最佳化。在討論路由選擇的原理時,往往不去區分轉發表和路由表,而是籠統地使用路由表一詞。


網路層:轉發、路由選擇

### 動態路由演算法?

1、距離-向量路由演算法(例如RIP演算法)
從它自身到其他每個目的網路的距離=跳數。源埠到目的埠沒經過一個路由器,跳數+1。距離等於16 時,它表示網路不可達。

2、開放式最短路徑優先(例如OSPF演算法)

鏈路狀態路由演算法要求每個參與該演算法的結點都具有完全的網路拓撲資訊,它們執行下述兩項任務。第一,主動測試所有鄰接結點的狀態。兩個共享一條連結的結點是相鄰結點,它們連線到同一條鏈路,或者連線到同一廣播型物理網路。第二,定期地將鏈路狀態傳播給所有其他結點(或稱路由結點)


OSPF 與RIP 相比有以下區別:

1) OSPF 向本自治系統中的所有路由器傳送資訊,這裡使用的方法是洪泛法。而RIP 僅向自已相鄰的幾個路由器傳送資訊。

2) 傳送的資訊是與本路由器相鄰的所有路由器的鏈路狀態,但這只是路由器所知道的部分資訊。”鏈路狀態”說明本路由器和哪些路由器相鄰及該鏈路的“度量”(或代價)。而在RIP 中,傳送的資訊是本路由器所知道的全部資訊,即整個路由表。

3) 只有當鏈路狀態發生變化時,路由器才用洪泛法向所有路由器傳送此資訊,並且更新過程收斂得快,不會出現RIP" 壞訊息傳得慢"的問題。而在RIP 中,不管網路拓撲是否發生變化,路由器之間都會定期交換路由表的資訊。

邊界閘道器協議(Border Gateway Protocol, BGP) 是不同自治系統的路由器之間交換路由資訊的協議,是一種外部閘道器協議。邊界閘道器協議常用於網際網路的閘道器之間。

### 網路層轉發分組的流程?

1) 從資料包的首部提取目的主機的IP 地址D, 得出目的網路地址N。

2) 若網路N 與此路由器直接相連,則把資料包直接交付給目的主機D, 這稱為路由器的直接交付;否則是間接交付,執行步驟3) 。

3) 若路由表中有目的地址為D 的特定主機路由(對特定的目的主機指明一個特定的路由,通常是為了控制或測試網路,或安全考慮才採用的),則把資料包傳送給路由表中所指明的下一跳路由器;否則執行步驟4)

4) 若路由表中有到達網路N 的路由,則把資料包傳送給路由表指明的下一跳路由器;否則,執行步驟5) 。

5) 若路由表中有一個預設路由,則把資料包傳送給路由表中所指明的預設路由器;否則,執行步驟6) 。

6) 報告轉發分組出錯。

注意:得到下一跳路由器的IP 地址後並不是直接將該地址填入待傳送的資料包,而是將該IP 地址轉換成MAC 地址(透過ARP),將其放到MAC 幀首部中,然後根據這個MAC 地址找到下一跳路由器。在不同網路中傳送時, MAC 幀中的源地址和目的地址要發生變化,但是網橋在轉發幀時,不改變幀的源地址,請注意區分。

### IP地址和MAC地址?

IP 地址是網路層使用的地址,它是分層次等級的。MAC地址是資料鏈路層使用的地址,它是平面式的。

### ARP地址解析協議

傳送資料幀時,最終必須使用硬體地址。所以需要一種方法來完成IP 地址到MAC 地址的對映,這就是地址解析協議。每臺主機都設有一個ARP 快取記憶體,用來存放本區域網上各主機和路由器的IP地址到MAC 地址的對映表,稱ARP 表。使用ARP 來動態維護此ARP 表。

ARP 工作在網路層,其工作原理如下:主機A 欲向本區域網上的某臺主機B 傳送IP 資料包時,先在其ARP 快取記憶體中檢視有無主機B 的IP 地址。
如有,就可查出其對應的硬體地址,再將此硬體地址寫入MAC 幀,然後透過區域網將該MAC 幀發往此硬體地址。
如果沒有,那麼就透過使用目 的MAC 地址為FF-FF-FF-FF-FF-FF 的幀來封裝並廣播ARP 請求分組,使同一個區域網裡的所有主機收到ARP 請求。
主機B 收到該ARP 請求後,向主機A發出響應ARP 分組,分組中包含主機B 的IP 與MAC 地址的對映關係,主機A 在收到後將此對映寫入ARP 快取,然後按查詢到的硬體地址傳送MAC 幀。ARP 由於“看到了"IP 地址,所以它工作在網路層,而NAT路由器由於“看到了“埠,所以它工作在傳輸層。


### DHCP動態主機配置協議?

允許一臺計算機加入新的網路和獲取IP 地址而不用手工參與。

### ICMP網際控制報文協議?

為了提高IP 資料包交付成功的機會,在網路層使用了網際控制報文協議(Internet ControlMessage Protocol, ICMP) 來讓主機或路由器報告差錯和異常情況


### 傳輸層的功能?

1、端到端的通訊,網路層提供的是主機之間的邏輯通訊。
2、複用和分用。複用是指傳送方不同的應用程序都可使用同一個傳輸層協議傳送資料;分用是指接收方的傳輸層在剝去報文的首部後能夠把這些資料正確交付到目的應用程序
3、面向連線的TCP 和無連線的UDP

### TCP、UDP


TCP協議有三個重要屬性。

可靠傳輸,主要透過有序接收,確認後傳送,以及超時重傳來實現,並且使用分片來提高傳送效率,透過檢驗和避免錯誤。

流量控制,主要透過視窗限制接收和傳送速率。

擁塞控制,主要透過不同擁塞狀態的演算法來處理擁塞,一開始發的比較慢,然後指數增加,當丟包時再降低速度,重新開始第一階段,避免擁塞。


### 擁塞控制的四種演算法

慢開始演算法
擁塞避免
快重傳
快恢復

### 半連線syn和洪泛法攻擊

駭客開啟大量的syn請求而不傳送ack,服務端開啟半連線等待ack,直到資源耗盡,所以必須檢測來訪ip

### 為什麼要三次握手

三次握手的原因

第三次握手是為了防止失效的連線請求到達伺服器,讓伺服器錯誤開啟連線。

也就是說,如果只有兩次握手,服務端返回ack後直接通訊,那麼如果客戶端因為網路問題沒有收到ack,可能會再次請求連線,但時服務端不知道這其實是同一個請求,於是又開啟了一個連線,相當於維護了很多的無用連線。
### time wait的作用

1 需要服務端可靠地終止連線,如果處於time_wait客戶端發給服務端的ack報文丟失,則服務端會再發一次fin,此時客戶端不應該關閉。

2 保證遲來的tcp報文有時間被丟棄,因為2msl裡超時抵達的報文都會被丟棄。


5. 外部路由協議和內部路由協議有哪些

| | | |
| ---- | ------------------------------- | ---------------------------------- |
| | 外部路由協議 | 內部路由協議 |
| 概述 | 用於不同自治系統之間的路由選擇 | 用於同一自治系統內部的路由選擇 |
| 範圍 | 路由器之間的協議 | 路由器之間的協議 |
| 釋出 | 由Internet服務提供商分發和管理 | 由組織內部網路管理員分發和管理 |
| 策略 | 基於路由器之間的距離和成本來選擇路由路徑 | 基於內部網路拓撲結構和策略來選擇路由路徑 |
| 協議 | BGP, EGP, <br>OSPF, RIP, IS-IS | RIP, OSPF, <br>IS-IS, IGRP, EIGRP |
| 學習方式 | 接收其他自治系統釋出的路由資訊 | 監聽內部網路中其他路由器的廣播訊息 |
| 度量 | AS-path, 本地首選項,網路距離等 | 路徑成本,頻寬,延遲,可用性等 |
| 部署 | Internet服務提供商和企業網路邊緣 | 企業網路核心 |
| 策略 | 最大化網路可用性和效能 | 最大化網路可用性和效能 |


9. C/S架構、B/S架構,自己如何設計C/S架構

C/S架構是指客戶端/伺服器架構,是指應用程式分為客戶端和伺服器端兩個部分,分別執行在不同的機器上,透過網路進行通訊,協同完成某個業務或提供某個服務。
B/S架構是指瀏覽器/伺服器架構,是指應用程式分為瀏覽器端和伺服器端兩個部分,瀏覽器端是一個輕量級的客戶端,伺服器端負責資料處理和業務邏輯,透過Web協議進行通訊。
在設計C/S架構時,需要考慮以下幾個方面:

1. 功能分配:需要根據業務邏輯和功能需求,將功能合理地分配到客戶端和伺服器端。通常將與使用者互動和介面顯示的部分放在客戶端,而將資料處理和業務邏輯放在伺服器端。
2. 資料交換:需要確定資料交換的方式和協議,如使用TCP/IP協議進行資料傳輸,同時也需要考慮資料的加密和安全性。
3. 客戶端介面:客戶端需要有友好的使用者介面,可以透過圖形化介面、命令列等方式與使用者互動。
4. 伺服器端架構:伺服器端需要有可靠的架構,如採用叢集、負載均衡等技術,保證服務的可用性和效能。
5. 可擴充套件性:系統需要具有良好的可擴充套件性,可以隨著業務的發展進行功能擴充套件和效能最佳化。

在設計C/S架構時,還需要考慮一些常見的問題,如網路延遲、頻寬限制、負載均衡、資料快取等,透過合理地設計和最佳化可以提高系統的可用性、效能和穩定性。


11.隨機訪問介質訪問控制

| | | |
| ------- | ----------------------------------------------- | ---------------------------- |
| 協議名稱 | 工作原理 | 特點 |
| Aloha | 資料包直接傳送,遇到衝突則等待一段時間後再次傳送 | 簡單、容易實現,但有較低的通道利用率和較高的碰撞率 |
| CSMA | 傳送資料前先監聽通道,如無人佔用則傳送資料,如有則等待 | 改善了Aloha協議的問題,但仍然有較高的碰撞率 |
| CSMA/CD | 傳送資料前先監聽通道,如無人佔用則傳送資料,如有則停止傳送並進行碰撞檢測 | 可以檢測到碰撞並及時停止傳送,減少碰撞率,用於有線區域網 |
| CSMA/CA | 傳送資料前先傳送RTS請求,接收方收到後回應CTS,然後才傳送資料,傳送完成後接收方回應ACK | 適用於無線區域網,減少了碰撞率,但增加了協議複雜度和延遲 |
| | | |
| | | |

14.ping 知道吧

Ping是一種常用的網路工具,它用於測試主機之間的連通性。下面是Ping的過程和原理:

1. 傳送請求:Ping程式傳送一個ICMP Echo請求訊息給目標主機。這個請求包含一個唯一識別符號和一個序列號。
2. 接收請求:目標主機接收到這個請求併發回一個ICMP Echo應答訊息。這個應答訊息包含了相同的唯一識別符號和序列號。
3. 計算延遲:當Ping程式接收到ICMP Echo應答訊息時,它會計算從傳送請求到接收應答的時間延遲(也稱為往返時間RTT)。
4. 統計結果:Ping程式透過傳送多個請求並接收應答來計算丟包率和平均延遲等統計結果。

Ping的原理是基於ICMP協議,它利用了ICMP Echo請求和應答訊息的機制來測試主機之間的連通性。當Ping程式傳送一個ICMP Echo請求訊息到目標主機時,目標主機會返回一個ICMP Echo應答訊息。如果Ping程式接收到應答訊息,說明目標主機是可以到達的。Ping程式透過統計多個請求和應答來計算丟包率和延遲等統計結果。

18. 廣域網和區域網

| | | |
|---|---|---|
|特性|廣域網(WAN)|區域網(LAN)|
|範圍|跨越較大地理區域(城市、國家、洲際)|小範圍網路(建築物、校園、組織內部)|
|連線方式|透過廣域線路或者衛星連線|使用乙太網或無線區域網連線|
|頻寬|頻寬比較低,速度較慢|頻寬相對較高,速度比較快|
|費用|網路建設和維護費用高|網路建設和維護費用相對較低|
|裝置|需要專門的裝置,如路由器、調變解調器等|一般使用交換機、網橋、路由器、閘道器等裝置|
|管理|中央化管理,統一規劃,統一維護|分散化管理,各自獨立,可以區域性維護|
|安全性|安全性要求高,需要加強網路安全保障措施|安全性相對較低,可以透過網路防火牆、密碼驗證等方式提升安全|
|傳輸距離|傳輸距離遠,訊號衰減嚴重|傳輸距離短,訊號衰減相對較小|
|傳輸方式|採用幀中繼或分組交換方式|採用幀中繼或分組交換方式|
|網路效能|延遲較高,可靠性較差|延遲較低,可靠性較高|
|連線使用者數限制|連線使用者數較少,不適合大規模部署和使用|連線使用者數較多,適合大規模部署和使用|
|配置和維護難度|配置和維護比較困難,需要專門的技術人員進行管理維護|配置和維護相對容易,普通管理員即可進行管理維護|

19.什麼是CIDR,有什麼功能

CIDR,全稱為Classless Inter-Domain Routing,即無類別域間路由選擇,是一種IP地址分配和路由選擇的標準。與傳統的IP地址劃分方式相比,CIDR採用的是一種更加靈活的劃分方式,可以將一個IP地址空間劃分為任意大小的子網,這樣可以更加高效地利用IP地址,避免了IP地址的浪費。
CIDR的主要作用是提高IP地址的利用率和路由選擇的效率。在CIDR之前,IP地址採用的是固定長度的子網掩碼進行劃分,這種劃分方式不僅導致了IP地址的浪費,而且在路由選擇時也需要消耗大量的頻寬和計算資源。而CIDR採用可變長度的子網掩碼,可以根據需要將一個IP地址空間劃分為任意大小的子網,從而避免了IP地址的浪費,同時也提高了路由選擇的效率。
舉個例子,假設一個公司有一個IP地址段為192.168.0.0/16,按照傳統的劃分方式,這個地址段將被劃分為256個子網,每個子網有256個IP地址。但是,如果這個公司只需要100個IP地址,按照傳統的劃分方式,將會浪費156個IP地址。而採用CIDR的方式,則可以將這個地址段劃分為更小的子網,從而避免了IP地址的浪費。
總的來說,CIDR提供了更加靈活的IP地址劃分方式和更高效的路由選擇機制,能夠更好地滿足現代網路的需求。

20.快表、頁表和路由表結構上的區別

快表、頁表和路由表是三種不同型別的表格,用於不同的計算機系統元件中,它們之間存在一些區別:

1. 快表(Translation Lookaside Buffer,TLB):在計算機記憶體管理中,快表是一種硬體或軟體快取記憶體,用於儲存最近使用的記憶體地址與其對應的實體地址之間的對映關係。快表可以提高虛擬地址轉換的速度,減少了每次訪問記憶體時需要進行的地址轉換次數,提高了系統的效能。
2. 頁表:頁表是計算機記憶體管理中的一種資料結構,用於將虛擬記憶體地址轉換為實體記憶體地址。在作業系統中,每個程序都有自己的頁表,作業系統根據頁表的資訊將程序的虛擬地址轉換為實體地址,從而實現記憶體的管理和保護。
3. 路由表:路由表是計算機網路中的一種資料結構,用於儲存路由器的路由資訊。路由表中儲存了目的地地址與對應的下一跳路由器的資訊,路由器根據這些資訊來選擇最佳的路由路徑進行資料傳輸。路由表是路由器進行資料轉發的關鍵組成部分,對網路的效能和可靠性有著重要的影響。

雖然這些表格在功能和應用上存在區別,但是它們都是用於儲存和管理地址對映關係的資料結構,對於計算機系統和網路的效能和安全性具有重要作用。

21.交換機和路由器的區別

交換機和路由器是網路中的兩種重要裝置,雖然它們都有著類似的功能,但是它們之間有一些重要的區別。

1. 功能不同:交換機是用來處理資料鏈路層(第二層)的裝置,它的主要功能是根據MAC地址將資料包從一個介面轉發到另一個介面。而路由器則是用來處理網路層(第三層)的裝置,它的主要功能是根據IP地址將資料包從一個網路轉發到另一個網路。
2. 工作原理不同:交換機在轉發資料包時是基於MAC地址進行的,它維護一個MAC地址表,根據目的MAC地址進行轉發。而路由器則是根據IP地址進行轉發的,它維護一個路由表,根據目的IP地址進行轉發。
3. 轉發速度不同:交換機是透過硬體進行轉發的,速度非常快,通常可以達到幾十Gbps甚至上百Gbps。而路由器則是透過軟體進行轉發的,速度比交換機慢得多,一般只能達到幾百Mbps或者幾Gbps。
4. 範圍不同:交換機的作用範圍通常只限於一個區域網內部,而路由器可以連線多個不同的區域網,並將它們互聯成一個更大的網路。

總的來說,交換機和路由器都是網路中不可缺少的裝置,它們各自有著不同的功能和應用場景,需要根據具體的網路環境來選擇合適的裝置。

22.arp協議及其應用

ARP(Address Resolution Protocol)是一種用於將網路層地址轉換為資料鏈路層地址的協議。在計算機網路中,每個網路裝置都有一個唯一的網路層地址(例如IP地址),但是在資料鏈路層,裝置使用的是實體地址(例如MAC地址)。當裝置需要傳送資料包到另一個裝置時,需要知道目標裝置的實體地址,而ARP協議就是用於解決這個問題的。
具體來說,當一個裝置需要傳送資料包到另一個裝置時,它首先會查詢自己的ARP快取表,看看目標裝置的網路層地址是否已經在快取表中存在,如果有,就直接使用快取表中的實體地址進行傳送;如果沒有,就會向本地網路中的所有裝置廣播一個ARP請求,請求目標裝置的實體地址。其他裝置收到ARP請求後,會查詢自己的ARP快取表,如果有對應的網路層地址,則回覆一個ARP響應,告訴請求裝置對應的實體地址。請求裝置收到ARP響應後,將目標裝置的網路層地址和實體地址儲存到自己的ARP快取表中,並使用實體地址進行資料包的傳送。
ARP協議的應用主要在區域網中,因為在廣域網中,裝置間通常是透過路由器進行通訊,路由器會根據目標網路地址進行轉發,而不需要知道目標裝置的實體地址。

23.應用層協議

| | | | | |
|---|---|---|---|---|
|協議名稱|應用|埠號|協議型別|描述|
|HTTP|Web|80|TCP|基於客戶端-伺服器模型的請求-響應協議,用於Web頁面的傳輸|
|HTTPS|Web|443|TCP|在HTTP的基礎上,加入了SSL/TLS協議的安全通訊協議|
|FTP|檔案傳輸|20/21|TCP|檔案傳輸協議,支援檔案上傳、下載、目錄瀏覽等功能|
|SSH|遠端登入|22|TCP|安全外殼協議,用於在不安全的網路上提供安全的遠端登入和其他網路服務|
|Telnet|遠端登入|23|TCP|遠端終端協議,用於遠端登入到主機控制檯|
|SMTP|郵件傳輸|25|TCP|簡單郵件傳輸協議,用於電子郵件的傳送和路由|
|POP3|郵件收取|110|TCP|郵局協議,用於從郵件伺服器上接收郵件|
|IMAP|郵件收取|143|TCP|網際網路郵件訪問協議,用於從郵件伺服器上接收郵件,支援郵件的線上管理|
|DNS|域名系統|53|UDP/TCP|域名系統協議,用於將域名轉換成IP地址|
|DHCP|動態主機配置協議|67/68|UDP|用於區域網中自動分配IP地址、子網掩碼、閘道器、DNS等配置資訊|

24.UDP和TCP

| | | |
|---|---|---|
|特性|UDP|TCP|
|連線|無連線|面向連線|
|可靠性|不可靠|可靠|
|傳輸速度|快|慢|
|資料包大小限制|有限制,最大64KB|無限制|
|擁塞控制|沒有擁塞控制|有擁塞控制|
|傳輸方式|面向無連線,資料包獨立|面向連線,按順序傳輸|
|適用場景|實時性強的應用,如影片、音訊|對可靠性和順序要求較高的應用,如HTTP、FTP|
|頭部開銷|小|大|

25.滑動視窗原理?滑動視窗的作用

滑動視窗是一種網路傳輸中流量控制和資料傳輸控制的機制。在傳送方和接收方之間,建立了一個視窗(window)的概念,視窗大小是一定的。傳送方每傳送一個資料包,就會收到接收方的確認訊號,確認訊號會告訴傳送方已經成功接收了這個資料包。當傳送方收到確認訊號後,就可以將視窗向前移動一個位置,繼續傳送下一個資料包。
滑動視窗的作用是控制資料傳輸的速度,避免傳送方傳送資料的速度過快,導致接收方無法及時處理接收到的資料。滑動視窗可以根據網路的擁塞情況來調整視窗大小,從而達到最佳化網路傳輸的效果。
滑動視窗的原理是,在傳送方傳送資料時,先將一定數量的資料包傳送出去,然後等待接收方的確認訊號。當接收方傳送確認訊號後,傳送方就可以將視窗向前滑動一個位置,繼續傳送下一個資料包。如果傳送方在一定時間內沒有收到確認訊號,就會認為該資料包未被成功接收,需要重新傳送。透過這種方式,可以實現資料的可靠傳輸。

26.滑動視窗傳送端怎麼觸發?用資料結構怎麼描述或者實現

滑動視窗協議是一種流量控制協議,用於控制傳送方傳送資料的速率。傳送方維護一個視窗,表示接收方可以接受的資料量。傳送方只有在視窗內的資料都被確認之後,才能向視窗外傳送新的資料。
當傳送方收到一個確認訊息時,它會將視窗向前滑動,使視窗內的大小增加,從而允許傳送更多的資料。如果一個分組沒有被確認,傳送方會超時並重新傳送該分組,而視窗內的其他資料不會受到影響。
滑動視窗可以使用迴圈佇列或連結串列等資料結構來實現。傳送方和接收方都有一個視窗,視窗內包含了一定數量的資料包,每個資料包有一個序號。當傳送方傳送一個資料包時,將其序號記錄在傳送視窗中,等待接收方的確認。接收方接收到一個資料包時,將其序號記錄在接收視窗中,同時向傳送方傳送一個確認訊息。如果接收方沒有收到一個序號連續的資料包,它會丟棄接收視窗中這個序號之後的所有資料包,並請求傳送方重新傳送。
在具體實現中,傳送方和接收方通常需要維護一些狀態資訊,例如當前傳送的資料包序號、最後一個確認的序號等等。同時,滑動視窗協議通常也需要設定一些引數,例如視窗大小、超時時間等等。


而OSI模型分為七層,從下至上分別是物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。具體各層的功能如下:

- 物理層:該層負責物理介質的傳輸,包括位元流的傳輸和訊號調製等。
- 資料鏈路層:該層提供可靠的資料傳輸服務,包括幀的定義、差錯檢測和流量控制等。
- 網路層:該層負責定址和路由功能,包括IP地址的定義、路由選擇和分組等。
- 傳輸層:該層提供端到端的資料傳輸服務,主要負責資料的可靠性和傳輸速度等問題,包括TCP和UDP等協議。
- 會話層:該層負責建立、維護和終止會話連線,包括同步、檢查點和恢復等功能。
- 表示層:該層負責資料的格式化、加密和壓縮等功能,以確保不同計算機之間的資料能夠正確傳輸和解釋。
- 應用層:該層提供應用程式與網路之間的介面,包括HTTP、FTP、SMTP、DNS等。


35.TCP和UDP中,為什麼TCP是可靠的?

TCP是一種可靠的傳輸協議,因為它實現了多種機制來確保資料傳輸的可靠性,包括:

1. 三次握手建立連線:在資料傳輸之前,傳送方和接收方會透過三次握手建立連線,確保雙方都可以收發資料。
2. 序列號和確認應答:每個TCP報文段都有一個唯一的序列號,接收方透過確認應答機制來告訴傳送方已經收到了哪些資料,從而保證資料的正確傳輸。
3. 資料分片和重傳:TCP會將資料分成一定大小的報文段進行傳輸,如果某個報文段沒有被確認,傳送方會重新傳送該報文段,直到接收方正確地接收到資料。
4. 擁塞控制:TCP透過不斷監控網路擁塞狀態,動態調整傳送資料的速率,避免造成網路擁塞,從而提高傳輸效率和可靠性。

39.說一下dns的過程。dns除了將域名轉換成ip還有什麼功能?

DNS(Domain Name System,域名系統)是一種分散式資料庫系統,它將域名和 IP 地址進行對映,為網路上的計算機提供域名解析服務。
DNS解析的過程包括以下步驟:

1. 當使用者在瀏覽器中輸入一個域名時,作業系統會先檢查本地的 hosts 檔案,如果檔案中有相應的對映,則直接返回對應的 IP 地址。
2. 如果本地 hosts 檔案中沒有相應的對映,則作業系統會向本地 DNS 快取查詢是否有對應的 IP 地址快取,如果有,則直接返回對應的 IP 地址。
3. 如果本地 DNS 快取中沒有相應的快取,則向本地 DNS 伺服器發出查詢請求,本地 DNS 伺服器會檢查自己的快取,如果有相應的快取,則直接返回對應的 IP 地址。
4. 如果本地 DNS 伺服器中沒有相應的快取,則向根域名伺服器發出查詢請求,根域名伺服器返回下一級域名伺服器的 IP 地址。
5. 本地 DNS 伺服器接著向下一級域名伺服器發出查詢請求,直到查詢到相應的主機名和 IP 地址對映關係,本地 DNS 伺服器將查詢結果返回給作業系統,作業系統快取該結果,並將其返回給瀏覽器,瀏覽器根據該 IP 地址與遠端主機進行通訊。

除了將域名轉換成 IP 地址外,DNS 還有以下功能:

1. 提供負載均衡服務:DNS 伺服器可以根據負載情況,將請求轉發到不同的伺服器上,從而達到負載均衡的目的。
2. 提供域名別名服務:透過為一個域名設定別名,可以將多個域名指向同一個 IP 地址,實現多個域名共用同一個主機的目的。
3. 提供反向解析服務:透過 IP 地址查詢對應的域名。


41.網路協議裡面,連線和無連線的最本質區別是什麼

網路協議中連線和無連線的最本質區別是是否建立一個持久的通訊鏈路來傳輸資料。連線型協議需要在通訊前先建立連線,資料傳輸完畢後再關閉連線。而無連線型協議則不需要建立連線,每次通訊都是獨立的。這意味著在使用連線型協議時,傳送端和接收端需要進行一定的協商和控制,以確保資料的可靠性和一致性,而無連線型協議則不需要進行這些操作。因此,連線型協議通常用於要求可靠傳輸的應用,如檔案傳輸、電子郵件等;而無連線型協議則更適用於對實時性要求較高的應用,如影片和語音傳輸。

相關文章