# 網際網路規約筆記 ## 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)。 集中式和分散式: 關於系統結構,可以是集中式或分散式的架構。 無狀態和有狀態: 有些協議是無狀態的,而有些則是有狀態的。有狀態的協議會記住先前的狀態信息。 可靠和不可靠的消息傳遞: 有些協議確保消息傳遞的可靠性,而其他協議則可能是不可靠的。 網絡邊緣的複雜性: 強調了網絡邊緣的複雜性,意味著許多複雜的功能和處理在用戶端或者接近用戶端的地方發生。