[豪の學習筆記] 計算機網路#003

SchwarzShu發表於2024-12-09

3.1.1 - 網路應用(層)內容概述

網路應用體系結構

客戶機/伺服器

P2P

混合結構

網路應用的服務需求

可靠性

頻寬

時延

Internet傳輸層服務模型

TCP

UDP

特定網路應用及協議

HTTP

SMTP,POP,IMAP

Socket程式設計

TCP

UDP

3.2.1 - 網路應用體系結構

客戶機/伺服器結構(Client-Server,C/S)

伺服器

7*24小時提供服務

永久性訪問地址/域名

利用大量伺服器實現可擴充套件性

客戶機

與伺服器通訊,使用伺服器提供的服務

間歇性接入網路

可能使用動態IP地址

不會與其他客戶機直接通訊

點對點結構(Peer-to-peer,P2P)

沒有永遠線上的伺服器

任意端系統/節點之間可以直接通訊

節點間歇性接入網路

節點可能改變IP地址

優點:高度可伸縮

缺點:難於管理

混合結構(Hybrid)

Napster

檔案傳輸使用P2P結構

檔案的搜尋採用C/S結構——集中式

每個節點向中央伺服器登記自己的內容

每個節點向中央伺服器提交查詢請求,查詢感興趣內容

3.2.2 - 網路應用程序通訊

程序:主機上執行的程式

客戶機程序:發起通訊的程序

伺服器程序:等待通訊請求的程序

Q:同一主機上執行的程序之間如何通訊?

程序間通訊機制

作業系統提供

Q:不同主機上執行的程序間如何通訊?

訊息交換

套接字Socket

程序間通訊利用socket傳送/接收訊息實現

類似於寄信:

傳送方將訊息送到門外郵箱

傳送方依賴(門外的)傳輸基礎設施將訊息傳到接收方所在主機,並送到接收方的門外

接收方從門外獲取訊息

傳輸基礎設施向程序提供API

傳輸協議的選擇

引數的設定

Q:如何定址程序?

不同主機上的程序間通訊,那麼每個程序必須擁有識別符號

如何定址主機?——IP地址

Q:主機有了IP地址後,是否足以定位程序?

A:否。同一主機上可能同時有多個程序需要通訊。

埠號/Port number

為主機上每個需要通訊的程序分配一個埠號

HTTP Server:80

Mail Server:25

程序的識別符號

IP地址+埠號

應用層協議

網路應用都需遵循應用層協議

公開協議

由RFC(Request For Comments)定義

允許互操作

HTTP,SMTP,......

私有協議

多數P2P檔案共享應用

協議內容:

訊息的型別(type)

請求訊息

響應訊息

訊息的語法(syntax)/格式

訊息中有哪些子段(field)?

每個欄位如何描述?

欄位的語義(semantics)

欄位中資訊的含義

規則(rules)

程序何時傳送/響應訊息

程序如何傳送/響應訊息

3.2.3 - 網路應用需求

資料丟失(data loss)/可靠性(reliability)

某些網路應用能夠容忍一定的資料丟失:網路電話

某些網路應用要求100%可靠的資料傳輸:檔案傳輸,telnet

時間(timing)/延遲(delay)

有些應用只有在延遲足夠低時才“有效”

網路電話/網路遊戲

頻寬(bandwidth)

某些應用只有在頻寬達到最低要求時才“有效”:網路影片

某些應用能夠適應任何頻寬——彈性應用email

Internet提供的傳輸服務

①TCP服務

面向連線

客戶機/伺服器程序間需要建立連線

可靠的傳輸

流量控制

傳送方不會傳送速度過快,超過接收方的處理能力

擁塞控制

當網路負載過重時能夠限制傳送方的傳送速度

不提供:

時間/延遲保障

最小頻寬保障

②UDP服務

無連線

不可靠的資料傳輸

不提供:

可靠性保障

流量控制

擁塞控制

延遲保障

頻寬保障

3.3.1 - Web應用概述

World Wide Web:Tim Berners-Lee

網頁(Web Page)包含多個物件(objects)

物件:HTML檔案、JPEG圖片、影片檔案、動態指令碼等

基本的HTML檔案:包含對其他物件引用的連結

物件的定址(addressing)

URL(Uniform Resource Locator):統一資源定位器

Scheme://host:port/path

HTTP協議概述

超文字傳輸協議 HyperText Transfer Protocol

C/S結構

客戶 Browser:請求、接收、展示Web物件

伺服器 Web Server:響應客戶的請求,傳送物件

使用TCP傳輸服務

伺服器在80埠等待客戶的請求

瀏覽器發起到伺服器的TCP連線(建立套接字Socket)

伺服器接收來自瀏覽器的TCP連線

瀏覽器(HTTP客戶端)與Web伺服器(HTTP伺服器)交換HTTP訊息

關閉TCP連線

無狀態(stateless)

伺服器不維護任何有關客戶端過去所發請求的資訊

PS:有狀態的協議更加複雜:

需維護狀態(歷史資訊)

如果客戶端或伺服器失效,會產生狀態的不一致,解決這種不一致的代價高

3.3.2 - HTTP連線型別

①非永續性連線(Nonpersistent HTTP)

每個TCP連線最多允許傳輸一個物件

HTTP 1.0版本使用非永續性連線

響應時間分析與建模

RTT(Round Trip Time)

從客戶端傳送一個很小的資料包到伺服器並返回所經歷的時間

響應時間(Response time)

發起、建立TCP連線:1個RTT

傳送HTTP請求訊息到HTTP響應訊息的前幾個位元組到達:1個RTT

響應訊息中所含的檔案/物件傳輸時間

Total = 2RTT + 檔案傳送時間

非永續性連線的問題

每個物件需要2個RTT

作業系統需要為每個TCP連線開銷資源(overhead)

瀏覽器會怎麼做?

開啟多個並行的TCP連線以獲取網頁所需物件

給伺服器端造成什麼影響?很大的TCP資源開銷

②永續性連線(Persistent HTTP)

每個TCP連線允許傳輸多個物件

HTTP 1.1版本預設使用永續性連線

傳送響應後,伺服器保持TCP連線的開啟

後續的HTTP訊息可以透過這個連線傳送

無流水(pipelining)的永續性連線

客戶端只有收到前一個響應後才傳送新的請求

每個被引用的物件耗時1個RTT

帶有流水機制的永續性連線

HTTP 1.1的預設選項

客戶端只要遇到一個引用物件就儘快發出請求

理想情況下,收到所有的引用物件只需耗時約1個RTT

3.3.3 - HTTP訊息格式

HTTP協議有兩類訊息

請求訊息(request)

響應訊息(response)

請求訊息

ASCII:人直接可讀

POST方法

網頁經常需要填寫表格(form)

在請求訊息的訊息體(entity body)中上傳客戶端的輸入

URL方法

使用GET方法

輸入資訊透過request行的URL欄位上傳

HTTP/1.0

GET,POST

HEAD(請Server不要將所請求的物件放入響應訊息中)

HTTP/1.1

GET,POST,HEAD

PUT(將訊息體中的檔案上傳到URL欄位所指定的路徑)

DELETE(刪除URL欄位所指定的檔案)

3.3.4 - Cookie技術

Q:為什麼需要Cookie?

HTTP協議無狀態,但很多應用需要伺服器掌握客戶端的狀態,如網上購物,如何實現?引用Cookie技術

Cookie技術

某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端上的資料(通常經過加密)

RFC6265

Cookie的元件

HTTP響應訊息的cookie頭部行

HTTP請求訊息的cookie頭部行

儲存在客戶端主機上的cookie檔案,由瀏覽器管理

Web伺服器端的後臺資料庫

Cookie原理

Cookie作用

Cookie能夠用於:身份認證、購物車、推薦、Web email

3.3.5 - Web快取/代理伺服器技術

在不訪問伺服器的前提下滿足客戶端的HTTP請求

縮短客戶請求的響應時間

減少機構/組織的流量

在大範圍內(Internet)實現有效的內容分發

Web快取/代理伺服器

使用者設定瀏覽器透過快取進行Web訪問

瀏覽器向快取/代理伺服器傳送所有的HTTP請求

如果所請求物件在快取中,快取返回物件

否則,快取伺服器向原始伺服器傳送HTTP請求,獲取物件,然後返回給客戶端並儲存該物件

快取既充當客戶端,也充當伺服器

一般由ISP(Internet服務提供商)架設

Web快取示例



條件性GET方法

目標:

如果快取有最新的版本,則不需要傳送請求物件

快取:

在HTTP請求訊息中宣告所持有版本的日期

if-modified-since:

伺服器:

如果快取的版本是最新的,則響應訊息中不包含物件

HTTP/1.0 304 Not Modified

3.4.1 - Email應用概述

Email應用的構成元件

①郵件客戶端(user agent)

讀寫Email訊息

與伺服器互動,收、發Email訊息

Outlook、Foxmail、Thunderbird

Web客戶端

②郵件伺服器

郵箱:儲存發給該使用者的Email

訊息佇列(message queue):儲存等待傳送的Email

③SMTP協議(Simple Mail Transfer Protocol)

郵件伺服器之間傳遞訊息所使用的協議

客戶端:傳送訊息的伺服器

伺服器:接收訊息的伺服器

RFC 2821

使用TCP進行email的可靠傳輸,埠25

傳輸過程的三個階段

握手、訊息的傳輸、關閉

命令/響應互動模式

命令(command):ASCII文字

響應(response):狀態程式碼和語句

使用永續性連線

要求訊息必須由7位ASCII碼構成

SMTP伺服器利用CRLF.CRLF確定訊息的結束

與HTTP對比

HTTP:拉式(pull)

SMTP:推式(push)

都使用命令/響應互動模式

命令和狀態程式碼都是ASCII碼

HTTP:每個物件封裝在獨立的響應訊息中

SMTP:多個物件在由多個部分構成的訊息中傳送

SMTP互動示例

3.4.2 - Email訊息格式與POP協議

SMTP:email訊息的傳輸/交換協議

RFC 822:文字訊息格式標準

頭部行(header)

To

From

Subject

訊息體(body)

訊息本身

只能是ASCII字元

MIME:多媒體郵件擴充套件 RFC 2045,2056

透過在郵件頭部增加額外的行以宣告MIME的內容型別

郵件訪問協議

從伺服器獲取郵件

POP:Post Office Protocol [RFC 1939]

認證/授權(客戶機<--->伺服器)和下載

①認證過程

客戶端命令

User:宣告使用者名稱

Pass:宣告密碼

伺服器響應

+OK

-ERR

②事務階段

List:列出訊息數量

Retr:用編號獲取訊息

Dele:刪除訊息

Quit

“下載並刪除”模式

使用者如果換了客戶端軟體,無法重讀該郵件

“下載並儲存”模式

不同客戶端都可以保留訊息的複製

POP3是無狀態的

IMAP:Internet Mail Access Protocol [RFC 1730]

更多功能、更加複雜、能夠操縱伺服器上儲存的訊息

所有訊息統一儲存在一個地方:伺服器

允許使用者利用資料夾組織訊息

IMAP支援跨會話(Session)的使用者狀態

資料夾的名字

資料夾與訊息ID之間的對映等

HTTP:163、QQ等

3.5.1 - DNS概述

DNS:Domain Name System

解決Internet上主機/路由器的識別問題

IP地址、域名

Q:域名和IP地址之間如何對映?

域名解析系統DNS

多層命名伺服器構成的分散式資料庫

應用層協議:完成名字的解析

Internet核心功能,用應用層協議實現

網路邊界複雜

DNS服務

域名向IP地址的翻譯

主機別名

郵件伺服器別名

負載均衡:Web伺服器

Q:為什麼不使用集中式的DNS?

單點失敗問題

流量問題

距離問題

維護性問題

分散式層次式資料庫

客戶端想要查詢www.amazon.com的IP

客戶端查詢根伺服器,找到com域名解析伺服器

客戶端查詢com域名解析伺服器,找到amazon.com域名解析伺服器

客戶端查詢amazon.com域名解析伺服器,獲得www.amazon.com的IP地址

DNS根域名伺服器

本地域名解析伺服器無法解析域名時,訪問根域名伺服器

根域名伺服器

如果不知道對映,訪問權威域名伺服器

獲得對映

向本地域名伺服器返回對映

TLD和權威域名解析伺服器

頂級域名伺服器(TLD,top-level domain)

負責com,org,net,edu等頂級域名和國家頂級域名,例如cn,uk,fr等

Network Solutions維護com頂級域名伺服器

Educause維護edu頂級域名伺服器

權威(Authoritative)域名伺服器

組織的域名解析伺服器,提供組織內部伺服器的解析服務

組織負責維護

服務提供商負責維護

本地域名解析伺服器

不嚴格屬於層級體系

每個ISP有一個本地域名伺服器

預設域名解析伺服器

當主機進行DNS查詢時,查詢被髮送到本地域名伺服器

作為代理(proxy),將查詢轉發給(層級式)域名解析伺服器系統

DNS查詢示例

Cis.poly.edu的主機想獲得gaia.cs.umass.edu的IP地址

迭代查詢

被查詢伺服器返回域名解析伺服器的名字

“我不認識這個域名,但你可以問這個伺服器”

遞迴查詢

將域名解析的任務交給所聯絡的伺服器

DNS記錄快取和更新

只要域名解析伺服器獲得域名——IP對映,即快取這一對映

一段時間後,快取條目失效(刪除)

本地域名伺服器一般會快取頂級域名伺服器的對映,因此根域名伺服器不經常被訪問

記錄的更新/通知機制

RFC 2136

Dynamic Updates in the Domain Name System(DNS UPDATE)

3.5.2 - DNS記錄和訊息

DNS記錄

資源記錄(RR,resource,records)

RR format:(name,value,type,ttl)

Type=A

Name:主機域名

Value:IP地址

Type=NS

Name:域(edu.cn)

Value:該域權威域名解析伺服器的主機域名

Type=CNAME

Name:某一真實域名的別名

Value:真實域名

Type=MX

Value是與name相對應的郵件伺服器

DNS協議與訊息

DNS協議

查詢(query)和回覆(reply)訊息

訊息格式相同

訊息頭部

Identification:16位查詢編號,回覆使用相同的編號

flags:查詢或回覆、期望遞迴、遞迴可用、權威回答

Q:如何註冊域名?

在域名管理機構註冊域名

向域名管理機構提供你的權威域名解析伺服器的名字和IP地址

域名管理機構向com頂級域名解析伺服器中插入兩條記錄

在權威域名解析伺服器中為www.networkuptopia.com加入TypeA記錄,為networkutopia.com加入TypeMX記錄

相關文章