---
# System prepended metadata

title: 沈上翔 教授 Midterm Review 2022
tags: [計算機網路概論]

---

###### tags: `計算機網路概論`

:::info
[回共筆首頁](https://hackmd.io/SSJDgNdiQ02odihzTkkQpg)
[回科目首頁](https://hackmd.io/v_hdETFnSwCLMTNXEWM9Og)
:::

# 沈上翔 教授 Midterm Review 2022 
## 未撰寫review
- Four sources of packet delay
- Alice sends message to Bob
- DNS records
- Connection-oriented demux

![](https://i.imgur.com/bqf6bus.png =70%x)
:::spoiler Alternative core: circuit switching
- end-end resources allocated to, reserved for "call" between source & dest
- 來源和目的地之間會指定一條通道給他們連接，這條通道是會被保留、**不共用的**
- 如果沒有人用通道，通道狀態為**idle**（閒置的），並不會給其他人使用（no sharing）
- 常見於傳統的**telephone network**
:::
![](https://i.imgur.com/R3DLXki.png =70%x)
:::spoiler Packet switch versus circuit switching
- packet switching allows more users to use network
- 在circuit-switch設計下，1Mbps link只能夠給10個人使用
- 在packet-switching設計下，若有35個人，同時會佔滿通道的機率小於0.0004，所以這種設計下，可以讓更多使用者使用，比較經濟
- 若超過35人的話，可能會導致壅塞（congestion）
- 因為packet-switch能夠resource sharing，當有突然的資料需要被傳送時，不用"call"接線生幫忙接線，就可以馬上傳輸
- 若packet-switching要有像circuit-switching一樣的bandwidth guarantees，可以透過QoS機制達成
:::
![](https://i.imgur.com/9iWJUJF.png =70%x)
![](https://i.imgur.com/KCAUiei.png =70%x)
![](https://i.imgur.com/BDiBBFa.png =70%x)
:::spoiler Caravan analogy
- Q: How Long until carvan is lined up before 2nd too booth?
- 全部車子通過第一個收費站的時間 + 最後一台車從第一個收費站到第二個收費站的時間
:::
![](https://i.imgur.com/I0crD4P.png =70%x)
:::spoiler Internet protocol stack
- application: 給網路的相關應用，http、SMTP、FTP，使用者透過這層可以對資料以人的方式撰寫儲存在點腦上，或是下達發送的指令、瀏覽網頁。
- transport: 傳輸資料之間的功能，TCP、UDP，TCP機制可確保資料有被receiver接收到；UDP可以讓sender不斷發送封包。
- network: 解析封包的資訊，把封包正確的導向給目的。
- link: 乙太網，由於數據經由網路線傳輸過程中難免會錯誤，這一層具有數據糾錯的功能，例如漢明碼。
- physical: 處理網路線、無線傳輸設備，例如光纖。
:::
![](https://i.imgur.com/6ha8oSE.png =70%x)
:::spoiler Non-persistent HTTP: response time
- RTT:
    -  Round-Trip Time，是指client向server建立連線or發出請求的過去加回來的時間。
    -  舉例：我發出建立連線的請求，直到我確認server已經跟我確立連線、我發出request，直到收到response。

- 在Non-persistent HTTP中，他的respone time是
    - 建立連線RTT
    - 發送請求RTT
    - 資料傳輸transmission time
    - 等於2RTT + file transmission time
- Non-persistent 跟 Persistent 的差別在於
    - Non-persistent會把每一項動作建立屬於他的conection，不管那個動作是否重複過，Persistent會把一連串的動作使用同一個connection，所以他只需要建立一次connection。
    - Non-persistent每傳送一個物件，TCP connection就必須做一次，假設client跟server要求多個檔案，當第一個檔案傳輸後 會關閉連線，要下載第二個檔案的時候 必須再對server做一次要求(要求->回應->接收 整個步驟都會重新做)。這種模式主要為HTTP1.0使用，相較於HTTP1.1 較費時，因為有一部份的時間都花在建立連線上。
:::
![](https://i.imgur.com/6ZkcsHE.png =70%x)
:::spoiler Web caches (proxy server)
- 目標：讓使用者每次在Request的時候都要到server得到資料
- 在client跟server之間建造proxy server，用來做部分資料的快取（cache）
- 當使用者要request時，會先向proxy server請求
- 若proxy server有對應的快取資料，就直接回傳給client
- 若沒有，則會向original server請求，得到後快取在自己的server，並回傳給client，下次再有client向他索取那份資料，就能夠直接回傳，省去向original server請求的時間。
:::
![](https://i.imgur.com/tJAqZDB.png =70%x)
:::spoiler Alice sends message to Bob

:::
![](https://i.imgur.com/EUYlULt.png =70%x)
:::spoiler DNS name resolution example 1
- iterated query: 我不知道你要去的人在哪裡，但我會跟你說下一層在哪裡。
- Domain Name是長成Tree的結構
    ![](https://i.imgur.com/8oBwMsW.png =50%x)
:::
![](https://i.imgur.com/vcQgDdg.png =70%x)
:::spoiler DNS name resolution example 2
- recursice query: 我不知道你要等人去哪裡，我去幫你問下一層的人知不知道。
- 遞迴的概念，直至問到人在哪後，回傳。
:::
![](https://i.imgur.com/KIkdAt8.png =70%x)
:::spoiler DNS records
- RR: resource records
:::
![](https://i.imgur.com/XoT5aj4.png =70%x)
:::spoiler Connection-oriented demux

:::
![](https://i.imgur.com/OaRAyTb.png =70%x)
:::spoiler Internet checksun: example
- UDP雖然不停的發送封包，但receiver會用check sum去檢測得到的封包是否有因為傳輸的過程中發生錯誤。
- check sum的產生，兩組二進制碼相加，若超出最高位元，會進行端回進位，在反相sum的結果，生成出check sum。
- 致命的缺點，在某些情況，得到的封包有錯誤，但是得到的check sum會一樣，導致無法偵測出錯誤。
:::
![](https://i.imgur.com/RrYOuno.png =70%x)
:::spoiler Pipelining: increased utilization
- utilization time: fraction of time sender busy sending 在一次傳RTT的時間內，他的使用率如何。
- U越大越好，表示在RTT+(L/R)的時間內，傳送的封包越多。
- Pipelining: sender得到receiver的ACK回應前，繼續發送封包
    - sequence number會增加，因為一次會傳好多個不同的封包，要能夠辨識出舊的跟新的。
    - sender/receiver都必須要要有buffer可以緩存這些資料。
:::
![](https://i.imgur.com/iWtuF5W.png =70%x)
:::spoiler Go-Back-N: sender
- 在sender會有buffer紀錄每個sequence number的狀態
- 這一長串的sequence會用window把狀態「sent, not yet ack'ed」和「usable, not sent」的sequence匡起來，用意是表示待處理的項目，且必須會從最前面依序處理到最後。
- 假設一次傳送封包的數量是n，n可能小於或大於window size，當timeout發生時，會把window當中前n項的封包一次重新傳送。
:::
