Ch01 Internetworking and Packet Forwarding === * OSI(Open Systems Interconnection) ![](https://i.imgur.com/iXkcheq.png) * ISO (International Organization for Standardization) 提出的開放式系統互聯模型 * User Space * Layer 7: Application * Layer 6: Presentation * Layer 5: Session * Kernel * Layer 4: Transport * Layer 3: Network * Underlying NWs * Layer 2: Data Link * Layer 1: Physical * Decapsulation 1. Ethernet driver 接收封包 2. Ethernet Frame 的 frame type 決定 Network layer 的 protocol * ARP * IP * RARP 3. IP datagram header 的 Protocol 決定 Transport layer 的 protocol * ICMP * IGMP * TCP * UDP 4. Transport layer 再根據不同 port 對應不同服務 * switch * mac address * 網卡 (Network Interface Card) * 48 bits * 由 IEEE 管理,廠商要跟它買 mac address,因為要保證 mac address 唯一 * 在區網可以用來傳送 frame 到其他 interface * sending host * 將資料封裝成 frame * error checking bits, flow control 等等 * receiving host * 確認封包的正確性 * 解析並把封包往上層傳 * self-learning * 會自動、動態的建立 switch table * 在 table entry 更新每筆傳送的 mac address, interface, TTL * plug-and-play * frame structure 1. preamble: 7 bytes,同步接收傳送方 2. dest address: 6 bytes,目的地 mac address 3. src address: 6 bytes,來源 mac address 4. type: 2 bytes,決定上層的 protocol 5. CRC: 4 bytes,接收方驗證資料正確性 * router * 在 network layer 根據 IP 決定 forwarding * subnet * 同個 subnet 的 interface 可以不透過 router 溝通 * .0 結尾的 IP 是 network number * .255 結尾的 IP 是 Broadcast IP * CIDR(Classless Inter-Domain Routing): a.b.c.d/x * longest prefix matching * routing table entries * Next-hop routing: routing table 只記錄下一個 hop 的位址 * network-specific routing: 只記錄目的地 network,而不是位址 * default routing :::warning Q: 不太懂這個在做什麼? A: 1. 每台機器只會有一個 Default route,以家用設備來說就是 uplink 接的那台機器 [name=Sean] ::: * Host-Specific Routing: 記錄 host address,只是比較沒效率 * ip datagram forwarding * direct forwarding: 在同個 physical network 中時,可以直接將 frame 送往 destination host * indirect forwarding: 在不同 physical network 中,只能將 frame 送往 next-hop router * hop-by-hop data delivery * 每到一個 router 都會把封包拆到 netork layer 然後裝回去後傳到下一個 router * network layer 中的 ip 不變 * link layer 的 mac 每個 hop 都會變 * ARP(Address Resolution Protocol) * 每個 ip node 都有 arp table * 用來對應 ip 和 mac * ethernet frame type = 0x0806 * plug-and-play * 記錄 arp table entry 流程 1. A broadcast arp request 2. B 把自己的 mac address unicast 給 A 3. A 保存 ip 對應的 mac 到 ARP table * DHCP(Dynamic Host Configuration Protocol) * UDP * server: port 67 * client: port 68 * 申請 ip address 流程 1. host: broadcast dhcp discover 2. dhcp server: dhcp offer 3. host: dhcp request 4. dhcp server: dhcp ack * ICMP(Internet Control Message Protocol) * network layer protocol * 在 ip header 中的 protocol field = 1 * type * 0: reply * 3: unreachable * 8: echo request * 11: TTL expired * traceroute 原理 1. 每經過一個 router 收到,TTL\-\- 2. 到達目的地 host 後,檢查正確性 3. demux datagram via port 如果 port 剛好沒被用到,會回傳 ICMP Port unreachable :::warning Q: 不確定這邊的 port 指的是什麼 port? A: 1. UDP 的 port [name=Sean] :::