# Network Note ## 基本觀念 網路構成的三要素: 1. 傳輸媒體 2. 通訊協定 - 讓電腦間可以快速溝通的協定標準 3. 網路服務 網路分類: * 依涵蓋範圍 PAN -> HAN -> LAN (Ethernet, Wi-Fi) -> MAN -> WAN * 依架構分類 * Client-Server * Client-based(Peer to peer) 網路拓墣: * Star - 無線網路中的基地台(Access Point, AP) * Bus - Ethernet used it, and it used broadcast to compete resources * Mesh - reliability * Ring - 大家輪流取得Token 參考模型 1. OSI 7 layers * **Application**: 應用軟體(eg. E-mail, web browser)間的通訊,各種協定 * Presentation: 定義資料傳輸的語義、語法、資料格式 * Session: 不同機器上雙方通訊的建立、維持、終止 * **Transport**: 控制資料傳輸,End-to-end連線,Flow control, Congestion control, Error control * **Network**: Packet routing, IP Address, Flow control, Congestion control * **Data link**: Framing, MAC Address, Flow control, Error control * **Physical**: 傳輸原始位元資料,定義實際連線 2. TCP/IP 5 layers * Application * Transport * Network * Data link * Physical 多工(Multiplexing) 同一時間同一通訊頻段,多人共享且彼此不受影響 * TDMA: 使用完整頻寬,使用時間較少 * FDMA: 使用完整時間,使用頻寬較少 * CDMA: 完整時間,完整頻寬 * SM: 動態分配頻寬 交換機制 * Circuit Switching: 事先建立連線,資料依序抵達 * Message Switching: 不需事先建立連線,資料大小不固定,不保證依序抵達 * Packet Switching: 不需事先建立連線,資料大小固定,不保證依序抵達 ## Physical Layer **傳輸原始位元資料,定義實際連線** ### 展頻方法 1. FHSS: 將頻道切分成數個小頻道,傳送端在頻道間跳躍,接收方依照順序去頻道接收訊息 2. DSSS: 將原始訊號分散於寬頻段 3. OFDM: 利用數個具有正交性的載波同時傳送,提高資料傳輸率 優點: 1. 提供通訊保密 2. 對抗同頻干擾 3. 同一頻段多人共享 ### 名詞 1. 調變:數位 -> 類比 2. ADSL (Asymmetric Digital Subscriber Line): download bandwidth > upload bandwidth (using FDMA) ### 實體層設備 1. Repeater 2. Hub 3. MODEM ## Data link layer **控制資料傳輸,傳送端將資料切分成訊框(Frame),給予MAC Address,Flow control, Error control** ### 訊框化(Framing) 1. 字元計數:利用Header描述每個Frame的字元數 2. 字元填塞:利用flag表示開頭和結束 3. 位元填塞:Zero insertion (insert 1 when there are consecutive five 0s) ### 錯誤偵測&修正 * Error Detection Code * CRC * Parity check * Error Correction Code * Hamming code ### 錯誤控制 ARQ (Automated Repeat reQuest) * Stop & Wait * Go back N * Selective Repeat ### 競爭多重存取 (Contention-Based Multiple Access Protocol) | | CSMA/CD | CSMA/CA | | -------- | ------- | ------- | | | 先聽後送(LBT) | 先聽後送(LBT) | Idle | 直接送 | 等IFS, 再聽,沒人才送 | | Busy | 等到Idle, 再聽,沒人才送 | 等到Idle, 等IFS, 等Random time, 再聽,沒人才送 | | 應用環境 | 有線網路 | 無線網路 | * CSMA/CA 利用RTS(Request to Send)/CTS(Clear to Send)解決了 1. Hidden terminal 2. Exposed terminal * NAV(Network Allocation Vector) 夾帶在RTS/CTS中,紀錄花多久傳送完Data,其他電腦可以透過此知道頻道是否busy ### Data link 設備 1. Bridge 2. layer2 switch 3. NAS ## Network layer **決定Packet routing, 給予IP Address, 提供QoS, Flow control, Congestion control** ### 服務型態 * 連結導向:利用上層TCP提供穩定正確的傳輸 * 非連結導向:利用上層UDP提供快速,即時,可容許錯誤的傳輸 ### 網際網路協定 (Internet Protocol, IP) 電腦可以透過IP協定找到對方的位址並相連,網路上的裝置皆有unique IP Address **IP Address** 全長32bits (8*4) * class A: 0 .x.x.x / private IP: 10.x.x.x (10是十進制) * class B: 10 .x.x.x / private IP: 172.10.x.x~172.31.x.x * class C: 110 .x.x.x / private IP: 192.168.x.x * class D: 1110 .x.x.x **Network Number** * all 0: default router * 127.0.0.0: loopback * 127.0.0.1: host itself **網路遮罩** Network number決定主機所在位址,所以router在傳送封包前會先用網路遮罩過濾出網路號碼,再決定封包如何轉送 ### Related protocol 1. NAT (Network Address Translation): 私有ip <-> 公有ip,去程目的地相同,回程來源相同 2. ARP (Address Resolution Protocol): 用IP Address詢問MAC Address 3. RARP (Reverse ARP) 4. ICMP (Internet Control Message Protocol): 網路間傳送網路狀況的資料格式 * ping * traceroute * nslookup * ifconfig ### 網路層設備 * Router * layer3 switch * Gateway - 解決不同網路間的連接問題,亦即,可連接OSI 7層不同的網路架構 ## Transport layer **控制資料傳輸,End-to-End連線,Flow control, Congestion control, Error control** ### TCP (Transmission Control Protocol) * TCP連結:以傳輸雙方的**串接號碼**來識別 (串接號碼 = IP Address + Port number) * 三方交握 * Sender -> SYN = 1-> Receiver * Receiver -> ACK = 1, SYN = 1 -> Sender * Sender -> ACK = 1 -> Receiver * Connection success **Note** port: 1. 使電腦內的programs可以和外界溝通 2. 便是從Internet來的Application ### Flow control & Congestion control * Flow control - sliding window: 傳送方可傳的資料區塊=接受方可接收的資料區塊 * Congestion control - congestion window: 網路上可傳的資料量 Sender可傳的資料量 = min(sliding window, congestion window) ### UDP (User Datagram Protocol) * Datagram: 封包交換網路中的最小傳輸資料單位 * 無連結導向,比TCP簡單(沒有連線要求、終止、Flow control) ## Application layer **定義使用者與通訊軟體間的介面,包含各種協定,透過網路連結,達到與其他應用程式交換資料的目的** * DNS (Domain Name System) * HTTP (HyperText Transfer Protocol) * Client端和Server端之間的資料通訊協定 * 採用request/respons * 每個HTTP request都是stateless,也就是伺服器不用保留先前請求或連線,所以有了cookie&session * 支援Proxy server - 從事網頁快取 **Note** 1. cookie: 微小的資料檔案,儲存在user端,可識別使用者資訊 2. session: 儲存在server端,會給client一個session id,就像識別證 * FTP (File Transfer Protocol) * DHCP (Dynamic Host Configuration Protocol) * RESTful API * API: messenger between client and server, tell the system what u want to do, and then send u back the system's respond * RESTful API * Nouns 名詞:定義資源位置的 URL,每個資源在網路上都會有唯一的位置,就如每戶人家都有唯一的地址一樣。 * Verbs 動詞:對資源要做的動作。 * Content Types 資源呈現方式:API 資源可以以多種方式表現,最常用的是 JSON,較輕,也較好處理。