# 計算機網路 逐字 > [TOC] ### 課前哉談 網路? > ### Internet >public=>安全? >無私 中立 <=>政治 商業 darkweb >>extranet extra:有一個通路連出去出去 >>intranet 不連上internet ex:軍網 cloud computing=> big data=> AR、VR=> AI=> metaverse ------------------------ #### Cloud computing 儲存 運算透過雲端 公有雲 私有雲 It's all about algorithm ---- #### 地理範圍來區分 協定 ![](https://i.imgur.com/K8cxblC.png) >**WAN** (internet)廣域網路 國與國的連接 5G 4G >**MAN** 都會網路 整個台北市 WiMax:距離長 功率大 設備又大又貴 又沒有長的很離譜 => 用WiFi密集部署來形成都會網路 >**LAN** 區域網路 乙太網路RJ-45 WiFi >**PAN** 個人網路 無線滑鼠 藍芽 >**BAN** ex:穿戴裝置 ---------------------------- #### 設備 | **layer** | | -------- | | 路由器 | | 交換器 | |access 終端| **Routing** :路由 依照當時狀況找最好的路徑 看router的效能 router就是一台電腦 [有cpu ram storage] 負責跑"路"的 Algorithm, 也就是協定protocol L3(Network)的所有協定 可以隔開廣播網段 **Switch** 根據一定的規則丟封包 因為他是向嵌入式系統一樣 所以很有效率 **L3 Switch** 從甚麼port出去其實不怎麼動 選完port之後 再丟給router處理往LAN端的路 按照晶片寫的規則 做初步的分類 ------------------------------------------------------------ ### **OSI** ![](https://i.imgur.com/f0g0TyT.png) **應用層** ex:HTTP、Telnet **展示層** 展現用的編碼 ex: ASCII **會議層** 會議建立 怎麼溝通ex:單工 雙工 半雙工 建立邏輯連線 網頁上有很多東西 看是要整頁做一次連線 還是持續保持連線 **傳輸層** 從來源到目的地 UDP TCP logical session [client:端dynamic port server端:依照服務用固定的port] **網路層** **實體層** 電磁波頻段 線ex:RJ45 *不同層用平行線 同層用交叉線* 電腦和路由器用交叉 從第二層變方波之後才有資料的感覺 才能談identify Protocol Data Unit L2:Frame+Frame+... => L3:Packet 封包 =>太大了塞不進去 =>拆 L4:Segment 防火牆 L7擋應用層服務 L4擋固定的port L2擋MAC ----------------------------------------------------------- > [time=Tue, Feb 7, 2023 7:09 PM] Class2 連接 識別 Hub 無法識別MAC位置 => collision => Switch:可以識別MAC位置 **L2以下:LAN** Router L3 IP 往下的L2認識 * 向下認識 Router連出去是另外的子網路 Switch連出去是同一個L1 L2取樣 從各種介質想辦法弄成方波 => 量化 數位化 100110....=>分堆:Frame =>很多Frame:Packet 英文8bit 中文16bit * LAN的技術 實現方式:Token Ring、T.Bus、Ethernet topology:怎麼把電腦連在一起:攸關連線協定的設計 Bus匯流排 ![](https://i.imgur.com/XOY9wBR.png) * AM FM PM 調變 調變:用電子裝置將兩種不同的頻率的訊號加在一起,以產 生可以發射的訊號。 * Multiple Access : L2 解決很多人同時搶資源的問題 1. Random:CSMA/MD協定 用猜的用賭的 2. Controlled:~~ALOHA~~、Token系列 3. Channelization : xxxx division multiple access FDMA頻率:頻譜來分 TDMA時間:分時間輪流用 CDMA碼?:同時發訊號 但說不同的語言 看接收者要接收啥 WDMA波:用光波不同顏色來分 骨幹會用到 一般不用 SDMA空間:訊號發射的角度 * Forwarding-轉發 : L2 硬體配合來實現Multiple Access Switch的三大技術 ---Store-and-Forward:存到Switch的RAM裡 ---Cut-through:走捷徑 只讀到D.MAC之後就丟出去 ---Fragment-Free:只存前64Bytes Frame:|Preamble|Destination MAC|S.MAC|Data * 連出圈 L5432往下封裝表頭 解封裝L2345 一跳一跳送:透過IP知道去哪個子網路 其中會改變的 是L2的目的地位置 每跳改變 Ex:電腦1S---Router1 D , Router1 S---Router2 D , Router2 S---電腦2 D * 使用架構 Ethernet:Switch WiFi:Access Point Moble:4G、5G > ***非對稱系列*** : 非對稱:上傳和下載不一樣寬 ADSL:RJ-11電話線 Cable Modem:同軸電纜 moden數據機把數位轉類比 ![](https://i.imgur.com/fcLg04L.png) * IP 不能上網 : 廣播IP 群播IP 公有IP: 私有IP: Connectionless不負責任 Best Effort盡力去傳 一直傳 Media Independent任何介質都可以傳IP 分享網路 給你一個公有IP 你自己要具備DHCP:分段 和NAT翻譯的功能:減緩IPv4的使用 LAN--Gateway--WAN 真正的網路位置 遮罩過後的 --- #### Problem solving 1. physical ISM 低中高頻 高頻戴寬比較高 微波爐 藍芽什麼的都在高頻 802.11a➙b➙g➙n➙ac 標準裡面各有使用2.4G或者5G的 第一層問題 WiFi頻段錯誤 或 線被咬斷 2. D.L 網卡有在動之後就來按實體位置MAC MAC table arp getmac ![](https://i.imgur.com/uCvAoO1.png) .255廣播位置 一對多 群播 一對全 廣播 路由器交換資訊 用群播 以第三層來看234.255.255.255-224 以第二層來看群播位置 01-00-5e開頭 3. Network ipconfig 出去 經過Router-Gateway 要過一些設定 ip、遮罩、default gateway ip(要在同一個網段)、DNS server ip /可以通過switch連出去 但這個時候就要幫switch設default gateway 再連到Router/ maybe加上自動的DHCP server幫忙 ![](https://i.imgur.com/Qnn1Mji.png) ![](https://i.imgur.com/mUCoOw2.png) Ping (ICMP) 死亡之Ping 被拿來丟惡意封包 防火牆 擋特定 ex : ICMP協定的Port ![](https://i.imgur.com/CvR5He0.png) name system lookup:DNS=>domain name/ip ![](https://i.imgur.com/QMTxse4.png) 4. Transport port.No port不能重複用 分應用程式 ![](https://i.imgur.com/zf3Nx6C.png) ![](https://i.imgur.com/KXmEox3.png) --------------------------------------- UNIT1 --- 數位 - Modern - 類比來傳輸 - Modern - 數位 Host = end system -running network apps at Internet's "edge" Packet switches:forward packets Communications links:介質們 Networks:collection of devices,routers,links <=managed by organization Standards * RFC * IETF infrasturcture programming interface Protocols : format、order of messages sent and received say hello:TCP => get => file networks of networks interconnected routers * connect? residential access nets(home)、institution access network 無線ex:5G HFC hybrid fiber coaxal:戶 - 銅軸 - ISP的Optical Node交換器、集中點 - 機房 HFC vs ADSL : HFC要分頻寬 ADSL則不用 但兩者都是上下非對稱 Cellular network ![](https://i.imgur.com/sbQNmzI.png) 行動通訊 Handover:GSM 大寬頻? Baseband vs Broadband ![](https://i.imgur.com/OYAlKgd.png) 同一個網段IP 直接互相溝通 那為啥還要MAC位置 遠端? 廣播只能在自己的網段 ARP table = ip+MAC Table --- ### L3 * Switching methods circuit swiching : 電話 message switching : 只有email在用 packet switching : 其他都是用這個封包交換 ### packet switching - store-and-forward 第三層的核心技術 要先全部送到Router存好 才能幫封包做打算 * 對應用程式來說 message/data太大了,沒切封包的話overhead成本太大 封包交換時會切成小Chunks =>packets封包 傳:bit streaming L bits大小 R:transmission rate packet Tranmission delay/latency=>把東西丟到線上的時間 =L(bits)/R(bits/sec) * End-end delay 跳n次: n×L(bits)/R(bits/sec) 因為每次都要做一次store and foward ### 點到點間Nodal的各種Delay ---Transsion delay : 封包裝好丟到路上花的時間 ---Queueing delay : 排隊 如果Router丟不夠快,arrival rate > transmission rate,封包就得排隊,而如果Router的記憶體RAM不夠 封包就會loss Buffer緩衝器也有分等級 封包到了先分等級 再用不同的排隊區來分piority queue displine : fifo?and La/R ---Propuqation delay : 根據介質的不同、路徑的長短 在路上走的速度不一樣 distance/speed 2-3*10^8m/s大概 ---Processing delay : Router思考封包要去哪裡的時間 * Throughput throughput rate : 單位時間內輸出/通過多少bit * Forward:local要丟往哪裡 已經寫在封包裡面了 Routing:Global計算路的演算法 存到Routing table * FDM同一管道不同頻率 TDM同一管道不同時間 封包交換Packet優點:可以分享網路使用權 而缺點:delay和loss就用protocals來避免 ------ ### ISP Tanet台灣學術網路 分七個區域網路 後來不夠用 → TWAREN ------ ### Network security malware惡意軟體 virus使用者行為主動造成的 自我複製 worm 被動 他自己會動 Dos 選目標 到他附近 打他 sniffing 把不是傳給你的封包也嗅過來 ip sniffing 假裝是我送給你 Pharming 網址嫁接 ex: g00le.com Spyware 側錄監視回報你的資料 Bot Botnet 殭屍們來攻擊你 Backdoor 找漏洞入侵 巨集 office腳本 --- UNIT2 Application layer --- ### Principals ### Web HTTP ### Email SMTP IMAP ### DNS ### P2P ### video streaming and content distribution ### socket:UDP TDP * 創造網路APP? 靠近使用者端 有很多應用ex:瀏覽器 web server 終端通常跑五層 中間設備ex:router不需要執行使用者應用 沒有螢幕:不需要使用者介面 只要跑他要的層 * 90-80趴 跑Client-server架構 server:always on 永遠一樣的ip 通常在資料中心 for scaling拓展性 client:跟server聯繫 需要的時候才連 dymamic ip addresses 東西跟server要 不跟其他終端要 ex:HTTP IMAP FTP 兩邊要寫同個協定但不同的程式 見下圖 * P2P not always on 終端直接互相通聯 輪流當server、client 沒有直接定義誰是server 典型特例:自我拓展的能力 因為誰都能加入:self-scalability 難管理 P2P file sharing 不用局限於伺服器 不會有誰負載太大 比較不會遇到瓶頸 program v.s process ROM<------->RAM 睡著 <------->醒著 被調用 在執行 inter-process communication 由自己主機管理 client process:initiate主動去要東西 server process:wait等人來要東西 * Socket 要怎麼傳? 應用層的程式 ex : http:www.google.com enter => request http -和 TCP結合<=這就是Socket 寫網路程式的人不用往下一層寫 也就是 應用層-傳輸層 就好 其他協定其他層你要怎麼傳是你家的事 送出門的感覺 ![](https://i.imgur.com/5oU7o0q.png) send / recv socket:TCP UDP bind:associate address、port ex:server端的bind決定其固定IP、port int socket (int domain,int type,int protocol) domain:定義要建立哪種socket ex: 本機 IPv4 IPv6 type:TCP UDP protocal: 傳輸層L2是一個很重要的功能 Process to process程式在對看 傳輸層的識別子:port number (and考慮傳的可不可靠) 傳輸層以上是軟體 以下是實體Device,子網路的事,比較hardware 每一個連線都是s to d 是程式的事 每個連線都是一隻程式 封包回到自己身上都是同一個IP 沒辦法識別給哪個程式 IP也不夠多讓你去分 ex:送信 地址是IP 收件人是port number ex:石園路75號有很多人 要記得寫名字 IP+port number才能識別process APP協定一定會配一個well-known port ex:HTTP 協定寫的server 就走80port 設計應用層 送 回 syntax語法 動詞就用動詞 名詞就用名詞 message seantics語意 意思不要很奇怪 * Transport service requirements integrity 傳檔案 不能錯 throughput 傳串流影片 可以錯但要快要多 timing 講電話不能延遲 HTTPS:加上ssh的協定 ##### TCP reliable flow control congestion control connection orianted X:timing 最低流量 資安 ex : HTTP SMTP FTP按順序 整齊 完好 錯了重傳 ##### UDP 啥都沒 適合傳streaming 要求throughput ex : DNS DHCP * 安全 Vanilla TCP/UDP sockets TLS新/SSL舊 SSL port:443 server to browser大部分使用 SSH port:22 two computer 遠端登入一台設備 URL ![](https://i.imgur.com/DQklqnA.png) stateless 無狀態 簡單 一開始沒想到有這多艘用途 紀錄clint端的狀態 抓資料:物件 * 持續 : TCP問別人要不要連線:RTT(建立TCP time) -> request file -> RTT(要物件的時間) ->傳輸時間 -> initiate TCP connection ->重複 * 非持續 : 不重製TCP connection RTT(建立TCP time) -> {request file -> RTT(要物件的時間) ->傳輸時間 ->}重複 Round Trip Time pipelining RTT -> request multi file -> RTT(transmit multi file) -> 重複 ![](https://i.imgur.com/AAZIqUm.png) --- ![](https://i.imgur.com/NRLkh34.png) method : POST GET拿物件的方式 * GET:不安全 account password放在網址列一起送 POST:則藏在封包裡面傳 HEAD PUT OPTION:危險 因為透過這個指令 會發現可以執行的其他指令 TRACE DELETE --- ### HTTP response status codes 200:ok 但在網頁上看不到 只有在封包裏看的到 301 Moved Permanently :三系列 Redirection 4系列 Clint端錯誤 比如 5系列 Server error Apache:server軟體版本 支援持續連線:Keep-Alive ### Stateless<->Cookies : stateful HTTP 是一個「無狀態協議 Stateless Protocol」,也就是說,每次從客戶端(Client)對伺服器(Server)***發出的請求都是獨立的*** — 這一次的請求無法得知上一次請求的內容與資訊。 Cookie 是伺服器(Server)傳送給瀏覽器(Client)的一小片段資料,並請瀏覽器保存起來,以便往後向相同的伺服器發送請求時,附上這 Cookie 的資料。 Cookies 一開始 會放一個cookie header在 HTTP request messege server端給你一個ID clint端丟ID過去 用來要自己的資料 (不是帳號密碼 只是一個軌跡的ID) server端把資訊丟給你 Cookies application: 1.authorization 2.購物車 3.推薦廣告 4.使用者狀態 --- ### Cache (proxy servers:代理server) CPU裡 用來彌補RAM不夠快 如果你設了Proxy Server,連線的速度會更快,其實就像是你多了一顆容量很大的硬碟,放在別人家,當你需要資料時,再去那顆硬碟裡取資料,所以讀取資料會比較快。 去近端拿資料 而不是整天去遠端 可能會塞車 proxy servers裡的東西是有人出去拿回來過的東西 Ex: >環境: access link rate 15mbps RTT router to server:2s web object size:1M bits request browser to origin server:15次/s LAN :traffic ***intensity***(La/R) (1Mbps/rqs)x(15reqs/sec)/(100mbps)=0.15 Access Link :Traffic ***intensity*** = (1Mbps/rqs)x(15reqs/sec)/15mbps=1 end-end delay: internet delay:(RTT router to server) + access link delay + LAN delay =2sec + minutes + 微秒) 假設四成cache給你 六成從origin server拿 data rate to origin server over access link 0.6x1.54Mbps = 0.924Mbps end-end delay ->0.6(delay from origin servers:出去RTT + LAN的RTT ) + 0.4x(去cache端的delay) #### 過期沒 request封包表頭裡會有日期 200 ok 是指成功抓下來 但比日期是錯的 ex: 1. client 端發request i.png 2. server回傳...no cache 3. client收到i.png進cache 4. client來訪網頁 再要一次i.png 發送if time 1 5. server 確認 time後是否有被修改 有->傳200和新的東西 無->傳304:沒被修改 可以用cache裡面的東西 ### head-of-line blocking 傳送端跟接收端在傳輸層3 way shaking 協議傳接排隊的大小 321 →網路→ 123 321 →網路→ 1 3 卡到 FCFS傳可能會這樣 ### E-mail SMTP:TCP25 POP3:TCP110 IMAPTCP 負責送 負責收 ![](https://i.imgur.com/6lrVwK7.png) POP3要用app IMAP internet Mail Access Protocal:可以用broswer、用不同的裝置都可以access 因為操作的郵件是在伺服器上的郵件 closing observations HTML:pull SMTP:put ### DNS Domain Name System 資料庫 用來記錄全世界電腦的Domain Name 讓大家來查IP records ![](https://i.imgur.com/HXdCZ5A.png) ![](https://i.imgur.com/HfpNQ0v.png) Root Top Level Domain Authoritative ![](https://i.imgur.com/KfZw6nz.png) ![](https://i.imgur.com/bkGgqBj.png) 很多主機都叫fp-y..... 小名:tw.yahoo.com 未經授權? 在cache裡面抓的 集中服務DNS? no 單點失效 流量問題 往上找domain name? * interated 問Local DNS server 問root root告訴你去哪找 Local DNS server找給你 * recursive 問Local DNS server 問root 問TLD 問Au 問到了再從原路傳回去 功能變數名稱解析時使用UDP協定 用戶端向DNS伺服器查詢功能變數名稱,一般返回的內容都不超過512位元組,用UDP傳輸即可。不用經過TCP三次握手,這樣DNS伺服器負載更低,回應更快