筆記、09801 計算機網路概論-第1-A講 Computer Networks and the Internet


Posted by s103071049 on 2022-01-20

Internet 最大特色,不可靠。所以封包會掉、頻寬不保證。loss & delay 是怎麼發生的,要怎麼解這個問題。

怎麼設計 protocal 讓 loss 與 delay 可以被控制。

網路是一個很大的系統,為了開發設計,我們會將他分層。課本分五層,分層的目的是為了讓設計結構化。可以抽掉一層的服務,他不會影響全部。就像程式設計裡面的模組化概念。

一、網路組成的基本要素

  1. hosts (end-systems):上面會 run net work app
  2. communication link (fiber光纖、銅線、衛星):重要參數是 transition rate,表示可以用多快速度傳送,簡稱 bandwidth ( 頻寬)
  3. routers (路由器):決定資料的路徑,目的是將封包做轉送的動作。透過 router 與 router 間的溝通建立傳送表,永遠維持最好的路徑表
  4. protocal:資料互丟,彼此要看的懂,牽涉到格式。control sending and receiving msgs, ex: TCP, IP, HTTP, FTTP, PPP
  5. Internet network of Internets: 為了好維護與方便後續設計,他是鬆散式階層式;public Internet VS private (如: 192.168.168,透過 nat 技術讓 public IP 底下可以有很多 private ip) intranent (如,企業內網)。
  6. Internet standard:沒有標準各做各的,連起來一定不通。訂標準的組織有:RFC (Request for comments), 他後面接代號,代表某個文件,如果要實作某個功能可以看這個文件,但即使有標準,不同的人寫出的程式可能也不相容,所以要相容測試;IETF (Internet Engernning Task Force) 制定網路上的 standard

Internet 重要的是 core 周邊的是 edge,edge 接起來的網路叫做 access network。

二、Internet 提供哪些服務

通訊基礎建設:讓分散式應用可以實現
技術上提供這些應用

  • connectionless - 在應用程式上想用這個資料,不須建立連線 ex UDP,一般運用在 query,如 DNS
  • connection oriented - 通訊之前要先建立連線 ex TCP,建立連線就是希望不 loss,然後 delay 可以 control;

Internet 的兩大特色:loss 與 delay

DNS (Domain Name Server)

在網路上傳送一定用 IP address。給一個 domain name 她就幫你查對應的 ip 然後將 ip 告訴你。不用建立連線,送一個封包去收一個封包回來

三、甚麼是協定

specific messages sent specific actions taken when messages reveived or other events. (在甚麼時間點,收到甚麼東西,你要做甚麼回應

協定要定義

  1. format - 定義好格式、欄位雙方才看得懂
  2. order of messages sent - 封包的順序很重要,網路不可靠封包可能會掉,溝通的順序也很重要
  3. actions taken on the transmission/ receipt of a messages - 收到訊息要給予甚麼樣的回應

ex - TCP 建立連線,就是三個封包建起來,連線建起來丟 DATA,按照順序丟。資料送完,將連線結束掉,CLOSE 一個 CONNECTION 也就是連線結束、結束、結束

ex - UDP 連線建好封包丟給你,一個封包就結束,你收到封包要回應,所以是一問一答,UDP 也可以不回答,網路不保證對方有無收到。如果資料比較重要,就要在上層再加點工。

TCP 建連線

動作一 : connection request
動作二:connection response (不)同意建連線

跳過中間小細節,假設同意,連線建立完成

動作三:再要檔案名稱
動作四:送 data

Network edge

General

  • Network edge - 基本上是 hosts 上面跑 application
  • Network core - Router / network of networks
  • access network - 讓 edge 跟 core 連接起來的,中間會經過有線、無線的 communication links,也就是所謂的 physical media (實體媒介)

Network edge

end systems hosts 上面會跑很多 application。溝通方式分為兩種

  • 主從結構(client/server model) - client hosts request receive service from always-on(待機不關) server. (Client 提出需求由 server 回應)
  • peer-peer model - 盡量不用 server

在這兩個 host 之間溝通,網路給我甚麼樣的服務 ?

  1. 建立連線(connection oriented):因為需要資料傳送。在傳送前會有 hand shaking 的動作,目的是確保連線已經建立。ex- TCP (Transmission Control Protocal),他是整個 Internet 最經典的協定
  2. connection less service : UDP (User Datagram Protocal)

TCP 特色 (不可靠的環境需要設計出可靠的服務)

比較複雜,因為要求可靠

  1. 可靠 - 資料內容要對,不能多也不能少
  2. 順序要對
  3. 封包會掉 loss - 你回答我你收到沒,沒收到我就重送。acknowledgement and retransmissions
  4. 流量控制 (flow control) - sender 在不知道 reveiver 對方電腦等級的情況,一股腦的丟丟丟,對方可能會爆掉,他來不及收或來不及處理。sender won't overwhelm reveiver。處理機制:sender 能送多快由 receiver 告訴他。
  5. congestion control - 一台電腦可以建立好幾百個連線,網路上 TCP 的連線可能是好幾百萬。router 可能消化不了同一時間很大的流量。每個 link 都有一個頻寬,有線無線光纖,當資料量大於頻寬就沒辦法馬上消化,他就放在路由器的 queue 裡面慢慢地送,進來的量越來越大,出去就越來不及,最後就爆掉,爆掉後就開始掉封包。TCP 本身要求可靠,所以不能掉封包,面對擁擠的處理機制是放慢速度,sender slow down sending rate

不能把 receiver 灌爆,不能把網路灌爆。

TCP 怎麼知道網路現在是否壅擠 ? 如果封包掉了,就代表壅擠,我就降慢速度。sender 不知道到 receiver 中間的網路到底有多快,既然不知道就做冒險,一開始送一個封包、接著送兩個封包、平均每秒速率 double (指數上升),衝到封包掉了為止。TCP 連線速度會是鋸齒狀的。

應用 - HTTP (web) / FTP (File Transfer) / Telnet / SMTP (mail)

UDP 特色 (不管對方的接收能力,通通丟)

  1. 不可靠的資料傳輸
  2. no flow control
  3. no congestion control

應用 - streaming media 用頻寬換品質 / DNS (把 domain name 換成 IP,問了半天都沒回來,可能封包掉了就再問一次) / 網路電話 / 多媒體

網路核心

紅色部分是 router (稱之為路由器),路由器的連接沒有一定規定,但一般都連成 mesh (網狀),因為中間可能有的 router 會掛掉,有的線會被踢掉,mesh 表示兩個節點之間至少存在兩條路,這樣會比較穩健。

所以資料到底如何經由網路送給對方 ?

  • circuit switching - dedicated circuit per call,如:telephone net
  • packet switching - 將大的資料檔案切成一個一個小的 packet 傳送

circuit switching

host 與 server 要溝通,我先建立一個藍色的線,這些連線經由 router 送到 host。

end-end (末端的兩端) resources reserved for call,call 就是把它連起來的意思。因為要 call 所以會經過 router 跟網路線。

每個網路線的頻寬都是有限的,如果有很多 call 可能頻寬塞爆,有的 call 就過不去。

circuit switching 的動作就是在每個 link 上面,每一段的 link 都保留頻寬給他,讓你好像有一條專屬的線路,在這條線路上面,每一個頻寬都保留一個量給他。

  1. link bandwith, switch (設備) capacity,call 本身要先建連線,建起來相關資源就保留給他,
  2. dedicated resources: no sharing
  3. circuit-like guaranteed performance (專線,你不用別人也不能用)
  4. call setup required

作法:
將網路資源(頻寬)切成小片段,pieces 分配給不同的 call,每個 call 需要的 pieces 不同,有的多有的少,但我就分配給你。但當你的 resources pieces 是閒置,其他人也不能使用。

怎麼將 bandwidth 切成小片段 ?

  • frequency division (FDMA) - Bandwidth 本身可以切成不同的頻寬,任何時間都可以用這個頻寬,這個頻寬是原來帶寬的 1/4 (下圖)
  • time division (TDMA) - 藍色 user 若無資料要送,因為時間切割好,所以也不能讓其他 user 做使用

不需要競爭就可以送,已經經過 reservation,只能在分配好的時段送

結論:專屬(固定)線路、專屬資源、不共享

Packet switching

我就不要固定的線路、固定的時間。我將資料切成一個一個單位。(each end-end data stream divided into packet)

  1. 每個封包用網路全速來送 (use full link bandwidth)
  2. user A B packets share network resources (對照 circuit switching 不分享)
  3. resource contention - 我們都沒有分配,要送的話要來搶,搶的話整個頻寬都給你

resource contention 會發生的問題

  • 想送的量大於頻寬
  • 擁擠 - packets queue, wait for link use
  • store and forward (先存起來再看看有沒有機會來傳送,如果前面有人排,就不能插隊,要排隊) - Internet 上面每一個 router 都是如此,transmit over link and wait turn at next link

(ex)
紫色是 router 中間有一個 link,假設這個 bandwidth 是 1.5 Mbs,不同顏色封包代表不同 host 丟出來

一般的 router 對來不及消化的會先 queue 起來。封包上出現 A B 的順序並沒有固定,因為有的時候要送有的時候不送,所以在 link 上看起來就像是 statistical multiplexing。長期來看,link 上面比較不會出現空閒。

結論:這個資源大家競爭,搶到就給你用

比較

35 個 user 爆掉機率萬分之四,所以大部分在網路上是 Packet switching

一、packet switch

  • bursty data - resource sharing / simpler, no call setup
  • excessive congestion - packet delay (queue 太久,因為封包有時效性,到對方手上也沒用了) / loss (router 負擔太大會掉封包),所以還有其他機制要設計進來,例如提供資料可靠傳輸、congestion control 的協定
  • 怎麼在不可靠的 internet 上面,要到你要的頻寬 ? (ch6,仍然沒有很好的解),一樣也需要協定的幫忙

bursty(短暫而大量,爆發性、擁擠) data,因為不是一直爆發,彼此 bursty 的時間會錯開,如果不能錯開就讓他 queue 一下。queue 有點像是 buffer (緩衝,衝上去就讓他消化掉,若 bursty 的量大到 buffer 塞不住,router 就開始掉封包了,掉就給他掉,internet 的特性 unreliable),掉的人就很雖,但沒關係你有 TCP,TCP 如果掉封包他就會識別 congestion,他就會放慢腳步,沒有掉的就繼續衝。

如果要搶頻寬,connection 就建立多一點。一個掉了還有其他的一起衝。

(ex) 封包要維持大封包,還是切成小片段 ?

狀況一、維持大封包 ( 7.5 Mbits)
假設封包在左邊,長度 L,有兩個路由、三段,要從左邊送到右邊,假設頻寬速度為 R

L / R 表示送一個封包要花幾秒,7.5 / 1.5 = 5 (送一個封包要五秒)。送封包是一次送一個 bites,第一個 bites 開始送,到最後一個送完會花五秒,每一段都要送五秒,所以總共要十五秒

同一個時間只有一個 router 在送

狀況二、切成小片段
break up the message into 5000 packets. 每一個封包現在只有 1500 bits,速度是 1.5 Mbits,所以送一個封包的時間變成 1 msec at one link

pipelining - 平行處理 each link work in parallel

同一個時間可以多個 router 送。


不是切的越小越好。為了把資料丟過去,會在前面加一些封包的頭 header。封包很大但真正的 data 很少,效率也會打折扣。

router 很多、路徑也很多,到底封包的傳送從起點到終點要走哪條路 ? (ch4 routing alagorithm),而且 internet 的路徑是隨時在變,可能 link 一斷最好的路就變成最壞的路。所以怎麼知道 link 通、不通、擁不擁擠

  1. router 之間平常就會定時與不定時的交換資料,交換旁邊連線的 link 資料,所以一個 router 他會知道網路長甚麼樣子,當要從一個 node 到另一個 node 他會找到最佳路線 (shortest path),最短路徑找到後會進行記憶,然後幫你送過去。選擇也是一種學問,選經過 router 數最少,但未必最快,因為可能經過很慢的 link;也可以選一條都經過光纖的。
  2. datagram network - 一個 data 就是一個封包,封包上面就是他的一封信。router 會建立一個大表,藉由查表知道我的封包要去哪。但表會變。
    • destination address (對方的 ip),將這個交給 router
    • routes may change during session
    • analogy - driving, asking direction
  3. virtual circuit network - 希望在不固定的狀態下走固定路線,不是專用的線路,但用人工的方式貼標讓你在傳送走固定的線路。假設路本身會事先選好,封包本身加上標籤 (virtual circuit id),router 看到標籤就知道要往哪裡去了。透過貼標進行路徑選擇。因為要走固定路徑,所以一定有 call setup time,連線建好以後就知道要往哪裡走,後面的封包就根據這個路徑走。router 要維護每個 call 的 state,藍色標籤的封包進來、紅色標籤的封包進來要往哪裡去。


#note







Related Posts

PHP 實戰留言板

PHP 實戰留言板

物件參考觀念 小試身手

物件參考觀念 小試身手

[讀書筆記 Flutter 實戰 002] Flutter 簡介

[讀書筆記 Flutter 實戰 002] Flutter 簡介


Comments