# 網際網路期末考筆記 ``` 3.5 P261 TCP 連線進行 TCP SEGMENT STRUC P265 6bit to 8bit congestion control relative 有兩種封包 P275 有些圖有例子 3.31圖 3.34圖 有編號要注意 3.35 3.36圖 3.37圖 P282 3.38圖 灰色的 window計算buffer大小 3.39圖 填空填編號 ack P286 287 生命週期 3.6圖 很重要 啥時發生 要記scenario 結論 3.7節 常考 P304 討論很久 AIMD P311 3.56圖 多的兩bit 第四章 網路層 router變化 控制與資料 SDN CDMA 必考 CTS RPS ``` ## 3.5 TCP --- ### Segment Structure * point-to-point: 1 sender 1 reciever * Full duplex: 雙工 stream 雙向 * connection oriented: 先握手做初始化 * Three-way handshake: TCP三次握手 * ![3.28](https://i.imgur.com/uwVgPKP.png) 3.28 * MSS是最大區段大小,MTU是最大傳輸單元,MTU包含整個封包,MSS則是資料TCP Payload * MTU常見有1500(乙太) 1492(802.2/.3),MSS是536(576-20-20) 1220(1280-40-20) --- ![3.29](https://i.imgur.com/IDNEyBZ.png) 3.29 --- * sequence number: 封包的佇列號 * cumulative acknowledgement(累積式確認): 接收端只會記錄連續接收情況的最後一個ack;接收端一次回覆最多只能確認串流中第一個遺失的位元組 ![3.30](https://i.imgur.com/c31VXeg.png) 3.30 --- ![3.31](https://i.imgur.com/FTlwuzP.png) 3.31 piggyback: ack會搭順風車,傳送資料順便攜帶來確認訊號 --- TCP Timeout 要比 RTT 長 * 太長會對區段損失反應太慢 * 太短會有不必要的重送 ![3.32](https://i.imgur.com/5qj1Dkb.png) 3.32 --- ![](https://i.imgur.com/qLQ66mw.png) ![](https://i.imgur.com/isnzF9X.png) 公式超級他媽重要 RTT (Round-Trip Time): 網路封包往返時間,一個小封包由用戶端傳到伺服端,再由伺服端回應到用戶端所花的時間 --- ### Reliable Data Transfer [https://i.imgur.com/YaTtzpD.png] 3.33 應該不會考 RDT 三個重點: 1. Data recieved from application above 2. Timer timeout 3. ACK receipt --- 重要情境(必考) ![](https://i.imgur.com/AvHrOLg.png) 3.34 ![](https://i.imgur.com/FiBiMRa.png) 3.35 ![](https://i.imgur.com/Jv0fklL.png) 3.36 ---- * Doubling the Timeout Interval: 若發生 Timeout 事件,則把等待時間 Double,所以逾時間隔在每次重新傳送後會呈指數成長,算是某種的 Congestion Control --- * Fast Retransmit: 接收到三次重複 ACK 事件時,立即重新傳送該遺失的封包 [https://i.imgur.com/waNz6QY.png] Table 3.2 應該不會考 ![3.37](https://i.imgur.com/2yy6ldl.png) 3.37 ### Flow Control TCP 流量控制 (Flow Control),是為避免 高速傳送端 癱瘓 低速接收端。 而 TCP 壅塞控制 (Congestion Control),則是用於避免 高速傳送端 癱瘓 網路。 ![rwnd_receive_window](https://i.imgur.com/MiluTZL.png) rwnd_receive_window ![3.38](https://i.imgur.com/zWyVbLc.png) 3.38 --- ### TCP Connection Management ![TCP 三次握手 3.39](https://i.imgur.com/MqZyCJx.png) TCP 三次握手 3.39 ![](https://i.imgur.com/y4Fuwac.png) 3.40 結束連線 ![](https://i.imgur.com/8mReN7m.png) 3.41 客戶端 ![](https://i.imgur.com/uGmZBd3.png) 3.42 伺服器端 --- ## 3.6 壅塞控制 * 為什麼要壅塞控制: 太多來源同時連線傳送資料造成線路堵塞 * 前面有提過跟流量控制的比較,回去看 * 情境 * 丟失封包: buffer overflows at routers * 長延遲: queueing in router buffers --- ### 壅塞的原因與成本(重要) 1. Two Senders, infinite buffers ![](https://i.imgur.com/VcoOPkI.png) ``` Large queueing delay are experienced as the packet arrival rate nears the link capacity. ``` 2. One router, finite buffers ![](https://i.imgur.com/mexqOnF.png) ``` The sender must perform retransmissions in order to compensate for dropped (lost) packets due to buffer overflow . Unneeded retransmissions by the sender in the face of large delays may cause a router to use its link bandwidth to forward unneeded copies of a packet . ``` 3. Four senders, routers with finite buffers, and multihop paths ![](https://i.imgur.com/xNyvakB.png) ``` When a packet is dropped along a path, the transmission capacity that was used at each of the upstream links to forward that packet to the point at which it is dropped ends up having been wasted. ``` --- ### 達成壅塞控制的方式 * End-to-end * Network-assisted * Direct network feedback * choke packet * Network feedback via receiver --- ## 3.7 壅塞控制的方法 ![](https://i.imgur.com/qZw8glL.png) 原則 * 有掉包就減速 * ack 加速 * Bandwidth Probing: 要求更多直到出現掉包 --- ### 三大算法 * Slow Start * Congestion Avoidance * Fast Recovery --- ### Slow Start ![](https://i.imgur.com/CYhQfc3.png) 指數性成長連線 遇到壅塞後,砍半傳輸的cwnd,進入壅塞避免 --- ### Congestion Avoidance 壅塞避免 期間,每個 往返時間 (RTT),大約增加 1 SMSS 大小 的 壅塞視窗 (cwnd) --- ### Fast Recovery ![](https://i.imgur.com/b5QWFNM.png) ``` TCP Tahoe: 遇到 3 acks 或 timeout,都cwnd=1 TCP Reno: 遇到 timeout,cwnd=1,遇到 3 acks,cwnd = ssthresh +3 ``` --- AIMD: Additive-increase, multiplicative-decrease ![](https://i.imgur.com/3ET4AoW.png) --- ![](https://i.imgur.com/dSClEGW.png) ![](https://i.imgur.com/cG35NV7.png) --- ### Fairness 如果 傳輸速率 約等於 容量/連線數,TCP 壅塞很公平 ![](https://i.imgur.com/2ClBfIZ.png) --- * UDP 沒有壅塞控制,適合多媒體應用 * 平行連線: 用在網頁 --- ### Explicit Congestion Notification(ECN) 在 IP 表頭放了 2 bits,用來壅塞控制 (ECE) --- ## 4.1 網路層 ### Forwarding and Routing: The Data and Control Planes * 網路層是為了在 host 間移動封包 * Router有轉送表格演算法 ![](https://i.imgur.com/KfevrhK.png) --- * SDN(Software Defined Networking) ![](https://i.imgur.com/5Z0Uub9.png) --- network service model(網路服務模型): 定義了在網路的兩端邊際之間,也就是在傳送端與接收端系統之間,封包的端點到端點傳輸特性 網路層可能提供的服務: 1. guaranteed delivery(傳送保證): 保證封包一定會抵達目的地 2. guaranteed delivery with bounded delay(有限延遲的傳送保證): 不僅保證封包一定會成功抵達,而且保證會在某個主機到主機的延遲時間上限內送達 3. in-order packet delivery(依順序的封包傳送) 4. guaranteed minimal bandwidth(最低頻寬保證): 只要傳送端主機傳輸位元的速率小於規定的位元傳輸速率,就不會有封包遺失,而且每一個封包都會在預先指定的主機到主機延遲時間內抵達 5. security(安全性服務): 利用只有來源端主機與目的端主機知道的秘密會談key值,來源端主機的網路層可以將所有要送到目的主機的資料封包內容加密。 => 可以提供機密性給所有來源主機與目的主機之間傳送的傳輸層區段 * Best-effort service: 盡力而為 --- ## 4.2 Router 裡面都在做什麼 ![](https://i.imgur.com/MxLEoXy.png) ``` router的四項元素: 1. input port(輸入埠):   1) input port會執行實體層功能,以作為實體連結進入路由器的終端   2) 執行資料連結層功能,和輸入連結遠端的資料連結層功能進行互動操作   3) 執行查詢和轉送功能,讓進入router的封包能出現在正確的output port中 2. switching fabric(交換結構): 將router的input port連結到output port,位於router中,是router內部的網路 3. output port: 執行和input port相反的資料連結層與實體層功能 4. routing processor(繞送處理器): 執行繞送協定,維護繞送資訊與轉送表,在router內執行網路管理功能 ``` * destination-based forwarding: forward based only on destination IP address * generalized forwarding: forward based on any set of header field values. --- ### Input Port Processing and Destination-Based Forwarding ![](https://blog-imgs-36-origin.fc2.com/p/o/l/pollucite/20100613021944060.jpg) --- ### Switching ![](https://i.imgur.com/9LpjCKp.png) ![](https://i.imgur.com/3YMW3LZ.png) ![](https://i.imgur.com/iC7rRj9.png) ![](https://i.imgur.com/w29zbUQ.png) 最後一種 Switching via an interconnection network 藉由2n條bus組成棋盤網路 --- ### Output Port Processing ![](https://blog-imgs-36-origin.fc2.com/p/o/l/pollucite/20100613125940a9b.jpg) --- ### Queue Queueing -> Router Buffer Overflow -> Packet Loss * Input Queueing: HOL,隊頭阻塞,因為前面的封包擋住後面的導致延遲 * Output Queueing: Packet Scheduler,同時抵達,在Output port就只能等,這邊就需要排程器了。 --- ### Packet Scheduling FIFO FCFS Priority Queueing Round Robin and Weighted Fair --- ## 4.3 IP定址 ### IPv4 ![](https://i.imgur.com/WFI6dqI.png) ``` * 版本號碼 * 標頭長度 * 服務類型: 標明需要: 低延遲時間、高輸出量、可靠性...etc的封包 * 資料封包長度: 理論上上限為65535 bytes,不過資料封包很少會大於1500 bytes * 識別碼、旗標、分段偏移量: 讓目的端主機可以將被分段的資料封包重組回來。IPv6不允許router進行分段 * TTL(time-to-live) 生存期: 為了確保資料封包不會在網路中無窮盡的循環 * 協定: 將網路層與傳輸層結合起來 => 標明應該要執行上層的哪一個協定(TCP / UDP) * header check sum(標頭檢查和): 幫助router檢查IP資料封包中的位元錯誤 => IP層只計算IP標頭的檢查和,TCP / UDP的檢查和是針對整個TCP / UDP區段所進行的 * 來源端和目的端IP位址 * 選項: 導致資料封包標頭長度不固定 => router處理IP資料封包所需的時間幅度變化相當大 => IPv6捨棄之 * 資料內容 ``` --- ### IP資料封包的分段 * MTU(Maximum Transmission Unit): 最大傳輸單位 連結層訊框所能載送的最大資料量 * 分段: router從一個連結收到了一個大於output port的MTU的封包 分段由router作,重組由end host執行 * host如何重組? by IP中的識別碼、旗標、分段偏移量 --- ### IPv4定址 * 32 bits * a.b.c.d * Global unique * Subnet Mask --- * CIDR(Classless Inter-Domain Routing) * a.b.c.d/x * x 指 2^32-x * Class A: 8 * Class B: 16 * Class C: 24 * IP廣播位址: 255.255.255.255 --- ### Obtaining a Block of Addresses ![](https://upload.cc/i1/2022/01/18/QaFkRi.png) * Dynamic Host Configuration Protocol DHCP 動態主機配置協定: 使得某台主機在每次連上網路時,都會得到相同的IP位址/主機每次連上網路時,都會被配給不同的臨時IP位址(temporary IP address) ![](https://i.imgur.com/9yXnAUv.png) * NAT Network Address Translation: 利用NAT轉譯表與port進行內網跟外網的轉址 --- ### IPv6 1. 簡化的40位元組標頭 2. 擴充的定址能力 3. 資料流標記與優先權 ![](https://i.imgur.com/g4VCzbJ.png) ``` * 版本 * 流量類型 * 資料流標記 * 內容長度 * 內層標頭 * 轉送次數限制: 每當router轉送封包時,此欄位內容便會減一,如果轉送次數限制變成零 => 此封包被丟棄 * 來源端和目的端位址 * 資料 ``` IPv4 到 IPv6 * Tunneling ![](https://i.imgur.com/iH1DwVx.png) --- ![](https://i.imgur.com/KfevrhK.png) ![](https://i.imgur.com/5Z0Uub9.png) ![](https://i.imgur.com/RKUd0LU.png) 三張圖的比較 A set of header field values: **Match** ![](https://i.imgur.com/U4l3hja.png) A set of counters: **Plus** A set of actions to be taken: **Action** 1. Forwarding 2. Dropping 3. Modify-field --- ## 7.1 無線網路 * Wireless * Mobile 1. Wireless hosts 2. Wireless links 3. Base station ![](https://i.imgur.com/hlkNSvV.png) ``` Infrastructure Mode為一種無線網路的架構,稱之為基礎建設模式。在基礎建設模式中,所有的設備皆需連接到一個存取點(如Access Point;AP),透過存取點來連接其他的無線網路設備,或是存取有線網路的資源 。 Ad-Hoc 網路是一個點對點建立起之網路連結,不需要無線存取器(AP, 或稱橋接器),透過個別電腦間無線連結,建構出一個群組網路,以達到資源共享(印表機 、檔案、網際網路等) 。 ``` ![](https://i.imgur.com/O3mgSjV.png) --- ## 7.2 無線連結與網路特性 1. 訊號強度的減弱 2. 其他訊號的干擾: 802.11b無線LAN和2.4GHZ的無線電話頻帶相同 3. 多重路徑傳播: 有部分的從物體和地面反射 * SNR: 訊號雜訊比,所收到的訊號強度與雜訊強度的相對計算單位 => SNR越大,接收端越容易從背景雜訊中擷取出被傳輸的訊號 * BER: 位元錯誤率 ``` * 針對固定的調變策略而言,SNR越高,BER就越低 * 針對固定的SNR,擁有較高位元傳輸速率的調變技術,也會有較高的BER * 動態地選擇實體層調變技術,讓我們可以是通道狀況來調整調變技術 ``` ![](https://i.imgur.com/gedvBmp.png) ` hidden terminal problem(隱藏終端問題): 環境中的實體障礙物,可能會使得A和C無法得知彼此的傳輸,即使A和C的傳輸確實在目的端B處產生干擾 (因為訊號強度的衰減) ` ![](https://i.imgur.com/46iabKK.png) --- ### CDMA Code Division Multiple Access(分碼多重存取) * 允許同時間多人傳送而互不干擾 * 在CDMA協定中,每個送出的位元都會被乘上一個訊號來加以編碼,這份資料會以快於原始資料位元序列的速率進行變化 ![](https://i.imgur.com/con9vXY.png) ![](https://i.imgur.com/vx6rk8E.png) --- ## 7.3 IEEE 802.11 ![](https://i.imgur.com/UmGaadt.png) ``` 802.11架構的基礎建構區塊,是BSS(基本服務集合) 一組BSS通常包含一個或多個無線站台,以及一句中央基地台,以802.11的說法而言,稱為AP(access point) 使用AP的無線LAN通常被稱為基礎架構無線LAN ``` ``` 802.11b 定義了11條部分重疊的通道,通道1、6、11是唯一一組有三條不重疊的通道組合 ``` ``` 掃描通道與聆聽beacon frame的過程稱為passive scanning(被動式掃描) 廣播其範圍內所有AP都會收到的探測訊框: active scanning(主動式掃描) ``` ### CSMA with collision avoidance (必考) (carrier sense multiple access) CSMA/CA: 當節點要發送訊號時偵測頻道是否空閒 ![](https://i.imgur.com/hAWPGsA.png) * Request to Send - Clear to Send 中間要等待 SIFS (短暫訊框間隔) --- ![](https://i.imgur.com/27x3FKj.png) ![](https://i.imgur.com/e4555y4.png)