---
# System prepended metadata

title: 計算機網路 逐字

---

# 計算機網路 逐字

> [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.11ａ➙ｂ➙ｇ➙ｎ➙ａｃ　標準裡面各有使用2.4Ｇ或者5Ｇ的
第一層問題　ＷｉＦｉ頻段錯誤　或　線被咬斷
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伺服器負載更低，回應更快
































