---
# System prepended metadata

title: 網際網路規約筆記
tags: [網際網路規約]

---

# 網際網路規約筆記
## ch.1 
### What is the Internet
1. 讓設備之間進行通訊和資訊交流的基礎架構。
2. protocols: 定義網路實體之間發送和接收的訊息順序、格式以及對訊息傳輸、接收採取的操作

### Network edge
1. applications and hosts
    * 終端(host)
    * client-server model
    * peer-peer (P2P)
2. access networks, physical media
    * 有限連接、無線連接或手機網路
    * 會受到網路頻寬、網路為共享或專用影響
        * 撥接網路 (Dial-up Modem)
        * Digital Subscriber Line (DSL)
        * cable modems
3. network core
    * circuit switching
    * packet-switching
    * network structure
4. Delay, loss and throughput in packet-switched networks
5


## ch.2
### 總目標: 
* 網路應用協定的實作面
* 透過檢查流行的應用程式級協議來了解協議
* programming network applications

### Principles of network applications
Client-server(data center)/ P2P/ Hybird(skype)

#### Processes communicating
1. 同一個host下使用 inter-process communication
2. 不同host下使用message exchange
3. client process = initiates communication
4. Server process = waiting to be contacted
* P2P也是有client-server precess

#### Socket
1. 訊息交換的手段

#### addressing process
1. To receive messages, process must have identifier
2. Host device has unique 32-bit IP address
3. Identifier includes both "IP address" and "port numbers" associated with process on host.

* HTTP server : 80, Mail server: 25

#### App-layer protocol defines
1. 訊息交換類
2. 訊息語法
3. 訊息語意
4. precess send/respond規則

* public-domain portcol: 定義於RFCs並允許共通性，如HTTPs
* Proprietary protocols: 如skype 

#### What transport service does an app need?
1. 資料遺失
2. 吞吐量
3. 定時
4. 安全性

#### Internet transport protocols services
1. TCP
    * connection-oriented
    * 可靠傳輸(reliable transport)
    * flow control
    * 壅塞控制(congestion control) 
    * does not provide timing, minimum throughput guarantees, security
2. UCP
    * unreliable data transfer between sending and receiving process 
    * 不可靠的資料傳輸

### Web and HTTP
* HTTP: hypertext transfer protocol
* client/server model
* overview:
    * 發起: client initiates TCP connection (creates socket) to server, port 80
    * 同意: server accepts TCPconnection from client
    * 交換: HTTP messages (applicationlayer protocol messages) exchanged between browser (HTTP client) and Web server (HTTP server)
    * 結束: TCP connection closed
* HTTP is “stateless”, 因為很複雜
    * server maintains no information about past client requests

* Nonpersistent HTTP
    * 單一TCP連線最多一個物件
* persistent HTTP
    * 可以透過客戶端和伺服器之間的單一 TCP 連線發送多個物件

#### HTTP request message
1. request, response
2. HTTP request message:
    GET /somedir/page.html HTTP/1.1
    (request line)
    Host: url
    User-agent: Mozilla/4.0
    Connection: close
    Accept-language:fr
    (header lines)

#### Uploading form input
1. post method
2. url method

#### Method type
1. HTTP/1.0
2. HTTP/1.1
* HTTP/1.1比HTTP/1.0多PUT跟DELETE

#### HTTP response message

HTTP/1.1 200 OK 
    (status line)
Connection close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Content-Length: 6821
Content-Type: text/html
    (header line)
data data data data data ... 
    (data)

#### HTTP response status codes
1. 200 OK
2. 301 Moved Permanently
3. 400 Bad Request
4. 404 Not Found
5. 505 HTTP Version Not Supported

#### User-server state: cookies
1. HTTP回應封包的cookie頭行
2. HTTP請求訊息中的cookie頭行
3. 儲存在使用者主機上的cookie文件，由使用者的瀏覽器管理
4. 網站後台資料庫

* what cookies can bring:
    1. authorization
    2. shopping carts
    3. recommendations
    4. user session state(Web e-mail)

* cookies: http messages carry state
* Cookies and privacy

#### Web caches (proxy server)
* satisfy client request without involving origin server
* 不用再去向伺服器請求，本地端可以先提供
* 優點
    1. reduce response time for client request
    2. reduce traffic on an institution’s access link
    3. 網路密集的快取: Internet dense with caches: enables “poor” content providers to effectively deliver content (but so does P2P file sharing)

#### Caching example
計算先跳過

#### Conditional GET
目標: don’t send object if acache has up-to-date cached version
* 只傳送date去server端以確認是否更新，不需更新會得到304


### FTP (file transfer protocol)
1. 與遠端主機傳輸文件
2. client/server model
3. ftp: RFC 959
4. ftp server: port 21

### Electronic Mail
* Three major components
    1. user agents (mail reader)
    2. mail servers (包含使用者收到的信，處理待發送的訊息queue，在mail server間發送SMTP protocol)
    3. simple mail transfer protocol: SMTP
        * 傳送過程: 握手 -> 傳送 -> 關閉
        * 訊息必須用ASCII編碼
        * 回應包含status code和描述詞語
    

    | Command           | Reply Code |
    | ----------------- |:----------:|
    | DATA              |    354     |
    | HELO              |    250     |
    | MAIL FROM         |    250     |
    | QUIT              |    221     |
    | RCPT TO           |    250     |
    | reply from server |    220     |

### DNS (Domain Name System)
1. 轉換域名和IP地址
2. 提供服務器位置信息
3. 分散式架構優點
    1. 分散性
    2. 提高效能
    3. 可靠性與容錯性
    4. 全球分布
    5. 網路附載均衡

#### TLD and Authoritative Servers
* TLD: 頂級域名伺服器 (全球)
    * 負責管理頂級域名
    * 每個TLD都有相應的TLD伺服器，管理該頂級域名下的註冊信息和相關的下級域名
* 權威DNS伺服器 (組織)
    * 提供特定組織內部域名的正式解析資訊

#### DNS name resolution example 
1. iterated query
    * 當DNS伺服器收到迭代式查詢時，它將會回覆所知道的最佳答案，或者指示客戶端向其他更高級的DNS伺服器發送進一步的查詢。
    * 要求伺服器指示客戶端向其他伺服器發送查詢
2. recursive query
    * DNS伺服器收到遞歸式查詢後，如果自己沒有所需的解析信息，則會向其他伺服器發送迭代式查詢，然後將所收到的結果返回給客戶端。
    * 要求伺服器負責整個查詢過程，並返回最終的解析結果


### P2P applications
1. 去中心化
2. 平等性與共享性
3. 資源共享
4. 去中介化
5. 節點協作

#### Bitturrent
1. 分散式檔案共享
2. 種子（Seed）和同行（Peer）， Seed為擁有完整檔案的用戶
3. 位元圖（Bitfield）和分塊下載，利用bitfield追蹤用戶擁有的檔案部分。下載者能夠選擇從不同同行處下載不同檔案塊，從而加速整體下載速度。
4. 優化頻寬利用
5. 健壯性和彈性

* 簡單說就是通過分散式架構與P2P得到更快的速度和更高的效率共享和下載檔案。

#### Distributed Hash Table (DHT)
1. 分散式資料儲存
2. hash function
3. 節點路由和查詢
4. 健壯性和可擴展性
5. 支援分散式應用

* 通過分散存儲和查詢方式，在P2P網絡和分散式系統中提供了可靠的資料管理和訪問機制。

### 總結

應用架構：
    
    客戶端-伺服器（Client-Server）架構
    點對點（P2P）架構
    混合（Hybrid）架構
應用服務需求：

    可靠性、頻寬、延遲等服務要求
Internet傳輸服務模型：

    連接導向、可靠的TCP協定
    不可靠的數據包、UDP協定
已研究的網絡應用和特定協議：

    HTTP（超文本傳輸協定）
    FTP（文件傳輸協定）
    SMTP、POP、IMAP（郵件相關協議）
    DNS（域名系統）
    P2P：BitTorrent、Skype等
套接字編程：

    套接字是允許應用程序通過網絡進行通信的抽象接口，它是實現網絡應用的關鍵。

典型的請求/回覆消息交換方式：

    客戶端發出信息或服務的請求。
    伺服器回應請求，提供數據或狀態碼等信息。
消息格式：

    消息通常包含頭部和數據兩個部分：
        頭部包含有關數據的信息的字段。
        數據則是被傳輸的具體信息。
#### 重要主題：

控制消息和數據消息：

    控制消息是用於傳遞系統控制信息的消息，而數據消息則是具體的應用數據。
    有時控制消息可以在數據消息之外傳遞（out-of-band）。
集中式和分散式：

    關於系統結構，可以是集中式或分散式的架構。
無狀態和有狀態：

    有些協議是無狀態的，而有些則是有狀態的。有狀態的協議會記住先前的狀態信息。
    可靠和不可靠的消息傳遞：

    有些協議確保消息傳遞的可靠性，而其他協議則可能是不可靠的。
網絡邊緣的複雜性：

    強調了網絡邊緣的複雜性，意味著許多複雜的功能和處理在用戶端或者接近用戶端的地方發生。

