1. 程式人生 > >計算機網路:應用層基本概念

計算機網路:應用層基本概念

(自己整理的《計算機網路》學習筆記,供自己和大家參考學習。未完待續,持續更新中…)

1.主機也稱為端系統。

2.傳送主機要向另一臺主機發送資料,要將資料分段,併為每段加上首部位元組,由此形成的資訊包稱為分組

3.一個協議定義了在兩個或多個通訊實體之間交換的報文格式和次序,以及在報文傳輸和接收或其他事件方面所採取的動作。

4.電路交換

這裡寫圖片描述

每條鏈路具有n條電路,因此每條鏈路能夠支援n條電路同時連線。當兩臺主機要通訊時,該網路在兩臺主機之間建立一條專用的端到端連線(end-to-end connection)。每條鏈路由端到端連線使用,該連線在連線期間獲得該鏈路頻寬的1/n部分。

4.1 電路交換網路中的多路複用

時分多路複用(TDM) 頻分多路複用(FDM)

在電話網路中,鏈路在連線期間為每條連線專用一個頻段,該頻段的寬度被稱為頻寬(bandwidth)

這裡寫圖片描述

5.分組交換

源主機將長報文劃分為較小的資料塊,並稱之為分組。在源和目的地之間,這些分組中的每個都通過通訊鏈路和分組交換機(主要有兩類:路由器和鏈路交換機)傳送。

這裡寫圖片描述

輸出快取(輸出佇列)排隊時延 分組丟失或丟包

6.對比

分組交換提供了比電路交換更好的頻寬共享,比電路交換更簡單、有效,實現成本更低
但因其端到端時延時變動的和不可預測的(主要是因為排隊時延),故不適合實時服務(如電話和視訊會議)。

分組交換更有效.

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

7.分組交換網中的時延概述

節點處理時延(nodal processing delay):檢查分組首部和決定該分組導向何處,檢查位元級差錯
排隊時延(queuing delay):在鏈路上等待傳輸時,經受排隊時延
傳輸時延(transmission delay):又稱儲存轉發時延,將所有分組的位元推向鏈路所需的時間。令L位元為分組長度,R為鏈路傳輸速率,傳輸時延即為L/R。
傳播時延(propagation delay):從該鏈路的起點到路由器B傳播所需要的時間。d/s(d為路由器A和B之間的距離,s是該鏈路的傳播速率)。該傳播速率取決於物理媒體,速率範圍是2

1083108m/s

區別:傳輸時延是路由器將分組推出所需要的時間,它是分組長度和鏈路傳輸速率的函式;傳播時延是一個位元從一臺路由器到另一臺路由器傳播所需要的時間,它是兩臺路由器之間距離的函式

節點總時延(total nodal delay) dnodal = dproc + dqueue + dtrans + dprop

這裡寫圖片描述

端到端時延:節點時延累加 N(dproc + dtrans + dprop)

令a表示分組到達佇列的平均速率(單位:每秒分組,pkt/s),R為傳輸速率,L為分組的位元數,則位元到達佇列的平均速率為La bps。
比率La/R被稱為流量強度。
La/R > 1 到達佇列的平均速率超過從佇列傳輸出去的速率,佇列增加趨於無窮,排隊時延趨向無窮大。

La/R 1

丟包:排在一條鏈路前的佇列只有有限的容量,到達的分組發現一個滿的佇列,由於沒有地方儲存這個分組,路由器將丟棄該分組,即該分組將會丟失

吞吐量: min { Rc,Rs }

這裡寫圖片描述

8.協議分層

這裡寫圖片描述

第一章對應知識點的課後習題

這裡寫圖片描述

a. 傳播時延 dprop = m/s seconds

b. 傳播時間 dtrans = L/R seconds

c. 端到端時延 dend-to-end = (m/s + L/R) seconds

d. t = dtrans時,最後一個位元剛好離開主機A,進入到鏈路中

e. dprop > dtrans t = dtrans,第一個位元還在鏈路中傳播,仍未到達主機B

f. dprop < dtrans t = dtrans,第一個位元已經到達主機B

g. dprop = dtrans, m = Ls/R = 893km

這裡寫圖片描述

a.電路交換,使用者共享頻寬。所以能支援1Mbps/100kbps = 10個使用者

b.給定使用者傳輸的概率為p = 1/10 = 0.1

c.這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

第一個LN/R s有N個分組同時到達,由於分組長度為L位元,傳輸速率為R bps,所以dtrans = L/R, 第一個分組的排隊時延為0,第二個分組的時延為L/R,即第一個分組的傳輸時間,第三個分組的時延為2L/R,即前兩個分組的傳輸時間。依次類推,第N個分組的時延為(N-1)L/R,平均排隊時延為

這裡寫圖片描述

這裡寫圖片描述

a. R*tprop = 1Mbps * 10000km/ (2.5*10^8 m/s) = 40000bits

b. 當位元全部在鏈路上傳播時,位元數量達最大值,即為頻寬時延R*tprop

c. 頻寬時延積即為鏈路上位元數量的最大值

d. 該鏈路上一個位元的寬度為10000km/40000bits = 250m/bit 比足球場大

e. 位元寬度表示式:m/(R*dprop) = m/(R*m/s) = s/R

這裡寫圖片描述

a. R*tprop = 1Gbps * 10000km/ 2.5*10^8 m/s = 4*10^7 bits

b. 位元數量最大值為檔案大小,4*10^5 bits

c. 位元寬度為10000km/4*10^8 bits = 0.25m/bit

這裡寫圖片描述
這裡寫圖片描述

a.從源主機到第一臺分組交換機需要7.5Mb/1.5Mbps = 5s 從源主機到目的主機需要3*5=15s

b.從源主機到第一臺分組交換機,移動第一個分組需要1500bits/1.5Mbps = 1ms第一個分組從第一個分組交換機到第二個分組交換機,第二個分組剛好從源主機到第一個分組交換機,它們所需的時間都為1ms。第二個分組需要1+1=2ms才能被第一個交換機全部接收到。

c.第一個分組到達目的主機需要3ms時間,在之後每隔1ms就會有一個新的分組到達。故所需時間為3+(5000-1)*1 = 5002ms = 5.002s,與a比較可知時間減少到原來的三分之一。

d.報文分段的缺點:1)每一個分組到達目的主機之後還需要按照順序重新裝配為原始報文。2) 報文頭部大小往往是固定的,資訊分割導致有很多的分組,因此報文頭部所佔的位元組總數更多。

2.1 應用層協議原理

2.1.2程序通訊

不同端系統的程序通過跨越計算機網路交換報文而相互通訊

###1.客戶機與伺服器
在給定的一對程序之間的通訊會話中,發起通訊(即在該會話開始時與其他程序聯絡)的程序被標示為客戶機,在會話開始時等待聯絡的程序是伺服器

2.程序與計算機網路之間的介面

程序通過一個稱為套接字(socket)的軟體介面在網路上傳送和接收報文。

程序類比於一座房子,而它的套接字可以類比為它的門。當一個程序想向位於另外一臺主機的程序傳送報文時,它要把報文推出門(套接字)。報文通過運輸的基礎設施抵達目的主機,再通過接收程序的門(套接字)進行傳遞,最後被接收程序進行相應的處理。

套接字是同一臺主機內應用層與傳輸層之間的介面,由於其是在網路上建立網路應用程式的可程式設計介面,因此套接字也被稱為應用程式和網路之間的應用程式程式設計介面(Application Programming Interface, \API)

這裡寫圖片描述

運輸層協議為呼叫它的應用程式提供的服務主要有四類:可靠資料傳輸、吞吐量、定時和安全性。

1.TCP服務包括面向連線服務和可靠資料傳輸服務。無差錯、按 適當順序交付傳送的資料。
2.UDP服務是無連線的、提供不可靠資料傳輸服務。不保證報文能夠被接收程序接收到,而且報文也可能是亂序到達的

這裡寫圖片描述

2.2 HTTP協議

2.2.1 概況

超文字傳輸協議(HyperText Transfer Protocol, HTTP)。HTTP使用TCP作為它的支撐運輸層協議

因為一個HTTP伺服器並不儲存關於客戶機的任何資訊,所以我們說HTTP是一個無狀態協議(stateless protocol)。

2.2.2 非持久連線和持久連線

每個請求/響應對是經一個單獨的TCP連線傳送,該應用程式被稱為非持久連線。
所有請求/響應對是經相同的TCP連線傳送,該應用程式被稱為持久連線。

預設方式下HTTP使用持久連線。

往返時間(RTT)即一個小分組從客戶機到伺服器再回到客戶機所花費的時間。包括分組傳播時延、分組在中間路由器和交換機上的排隊時延以及分組處理時延。

這裡寫圖片描述

每一個物件的傳輸時延為兩個RTT,即一個RTT用於建立TCP,另一個RTT用於請求和接受一個物件。

這裡寫圖片描述

持久連線:伺服器在傳送響應後保持該TCP連線開啟,在相同的客戶機與伺服器之間的後續請求和響應可通過相同的連線進行傳送。

流水線模式的持久連線:在單個持久TCP連線上進行,對物件的請求可一個接一個地發出,而不必等待未決請求的回答。如果一個連線經過一定時間間隔仍未被使用,HTTP伺服器就關閉該連線。

這裡寫圖片描述

在得到IP地址之前,已經訪問了n個伺服器,故獲取IP地址的總時間為RTT1+RTT2+RTT3+...+RTTn

在獲取IP地址之後,需要一個RTT0來建立TCP連線,需要一個RTT1來請求和接受該物件。所以總的響應時間是2RTT0+RTT1+...+RTTn

這裡寫圖片描述

a.沒有並行TCP連線的非持久HTTP,引用三個物件需要額外三次TCP連線的建立。所需時間為32RTT0

加上原來的時間,共需6RTT0+2RTT0+RTT1+...+RTTn

b.並行TCP連線的非持久HTTP,同時開啟三個TCP連線,同時取得三個物件。使用並行連線可以縮短響應時間,這裡僅需2RTT0。故總的響應時間為2RTT0+2RTT0+RTT1+...+RTTn

c.有流水線的持久HTTP。只要遇到一個引用物件就傳送請求,對於所有的引用物件話費一個RTT0。故總的響應時間為RTT0+2RTT0+RTT1+...+RTTn

2.2.3 HTTP報文格式

1.HTTP請求報文

這裡寫圖片描述

第一行為請求行,其後繼的行為首部行

請求行有3個欄位:方法、URL、HTTP協議版本
方法欄位可以取值:GET: 瀏覽器請求一個物件
         POST:使用者提交表單
         HEAD: 類似於GET方法。伺服器用一個HTTP報文進行響應,但並不返回請求物件
         PUT: 被應用程式用來向Web伺服器上上傳物件
         DELETE: 使用者或應用程式可以刪除Web伺服器上的物件

Host: 定義目標所在的主機         
Connection: close 瀏覽器告訴伺服器再發送完被請求的物件後就關閉連線。      
User-agent: 定義使用者代理,向伺服器傳送請求的瀏覽器的型別。
Accept-language: 使用者想得到該物件的語言版本(如果伺服器中有這樣的物件)

這裡寫圖片描述

其中使用GET方法時實體主體為空,使用POST方法時,實體主體中包含的就是使用者在表單欄位中輸入的值。

2.HTTP響應報文

這裡寫圖片描述
這裡寫圖片描述

三個部分:初始狀態行、首部行、實體主體

狀態行有3個欄位:協議版本、狀態碼和相應狀態資訊

常見的狀態碼:
這裡寫圖片描述
505 HTTP Version Not Supported: 伺服器不支援請求報文使用的HTTP協議版本

首部行
Connection: close 告訴客戶機在報文傳送完成後關閉該TCP連線
Date:伺服器檢索到該物件、插入到響應報文併發送該響應報文的日期和時間
Server: 這裡是由一個Apache Web伺服器產生的,類似於請求報文中的User-agent
Last-Modified: 物件建立或者最後修改的日期和時間
Content-Length: 表明了被髮送物件的位元組數
Content-Type: 這裡指示實體主體中的物件是HTML文字

這裡寫圖片描述

下面通過兩個例子來加深對HTTP報文的理解。

這裡寫圖片描述

b. HTTP/1.1版本

c. 持久連線。可從Connection:keep-alive看出。

d. 不能從HTTP請求報文中看出執行瀏覽器的主機的IP地址。

這裡寫圖片描述

a. 可以。因為狀態碼為200,狀態資訊為OK。該文件提供的時間為2006年3月7日星期二12:39:45 GMT。檢視Date首部行可知。

b. 最後一次修改是2005年12月10日星期六18:27:46 GMT。檢視Last-Modified首部行可知。

c. 已被返回的文件有3874位元組。檢視Content-Length首部行可知。

d. 前五個位元組為

2.2.4 使用者與伺服器的互動:cookie

這裡寫圖片描述

cookie可以用於標示使用者,使用者首次訪問站點時,可能需要提供一個使用者標識(可能是名字)。在後繼訪問中,瀏覽器向伺服器傳遞一個cookie首部,供伺服器識別該使用者,因此cookie可以在無狀態的HTTP上建立一個使用者會話層。例如,當用戶登入一個基於Web的電子郵件系統時,瀏覽器向伺服器傳送cooki資訊,允許該伺服器通過使用者與應用程式之間的對話對使用者進行驗證。

儘管cooki能簡化使用者的網上購物活動,但是它的使用仍有著很大的爭議,因為它被看做是對使用者隱私的一種侵害。結合cookie和使用者提供的賬戶資訊,web站點可以知道很多關於使用者的資訊,並可能將這些資訊出賣給第三方。

2.2.5 Web快取

web快取器也叫代理伺服器,能夠代表初始web伺服器滿足HTTP請求的網路實體。它有自己的磁碟儲存空間,並在其中儲存最近請求過的物件的拷貝。

可以配置使用者的瀏覽器,使得使用者的所有HTTP請求首先指向web伺服器。

瀏覽器建立一個到web快取器的tcp連線,並向web快取器中的物件傳送一個HTTP請求
–> web快取器檢查本地是否儲存了該物件的拷貝,如果有,用HTTP響應報文向客戶瀏覽器返回該物件
–> 如果沒有,web快取器與該物件的初始伺服器開啟一個TCP連線,併發送該物件的HTTP請求
–> web快取器接受到初始伺服器返回的物件後,在本地儲存空間儲存一份拷貝,並用HTTP響應報文向客戶瀏覽器返回該拷貝(通過已經建立在客戶機瀏覽器和web快取器之間的TCP連線)

當它接收瀏覽器的請求併發迴響應時,它是伺服器;當它向初始伺服器發出請求並接收響應時,它是客戶機。

web快取器可以大大地減少對客戶機請求的響應時間,可以大大減少一個機構內部網與因特網接入鏈路上的通訊量。此外,web快取器能從整體上大大降低因特網上的web流量,從而完善所有應用的效能。

這裡寫圖片描述

區域網上強度為0.15的通訊量最多導致數十毫秒的時延,因此我們可以忽略區域網時延。如果流量強度接近於1,鏈路上的時延會變得非常大並且無限增長。因此滿足請求的平均響應時間將以分鐘計。

為了改進時間響應特性,這裡考慮一種解決方案。即不升級鏈路頻寬,而是在機構網路中安裝一個Web快取器。如下圖如所示:

這裡寫圖片描述

假設機構快取器的命中率為0.4, 因為客戶機與快取器位於同一個告訴LAN上,這40%的請求將幾乎立即會得到響應,時延約在10ms以內。剩下的60%的請求需要通過訪問初始伺服器才能滿足。流量強度從1.0減小到0.6。一般而言,在15Mbps鏈路上,當流量強度小於0.8時,時延很小,約為幾十毫秒。因此,平均時延為0.40.010s+0.62.01s

2.2.6 條件GET方法

HTTP協議有一種機制,允許快取器證實它的物件是最新的,這種機制就是條件GET方法。
如果請求報文使用GET方法,且請求報文包含一個If-modified-since首部行,那麼這個HTTP請求報文就是一個條件GET請求報文。

這裡寫圖片描述

if-modified-since 首部行的值正好等於一星期前伺服器傳送的響應報文中的Las-modified首部行的值。該條件GET方法告訴伺服器,僅當自指定日期之後修改過該物件才傳送物件。如果沒有被修改,web伺服器向該快取器傳送一個響應報文,但並沒有包含所請求的物件。

2.3檔案傳輸協議:FTP

FTP使用兩個並行的TCP連線來傳輸檔案,一個是控制連線,一個是資料連線。

控制連線用於在兩個主機之間傳輸控制資訊,如使用者標識、口令、改變遠端目錄的命令以及“put”和”get”檔案的命令。資料連線用於實際傳輸一個檔案。

這裡寫圖片描述

FTP協議使用一個分離的控制連線,所以FTP的控制資訊是帶外傳送的。
區別:HTTP協議是在傳輸檔案的TCP連線中傳送請求和響應首部行的,是帶內傳送控制資訊的。

FTP伺服器必須在整個會話期間保留使用者的狀態資訊。對每個活動著的使用者會話的狀態進行追蹤,對FTP會話總數進行限制。另一方面,HTTP是無狀態的,即它不必對任何使用者狀態進行追蹤。

2.4因特網中的電子郵件

因特網電子郵件系統的個主要組成部分:使用者代理、郵件伺服器、簡單郵件傳輸協議SMTP

2.4.1 SMTP

傳送方使用者代理 -> 傳送方郵件伺服器 -> 接收方郵件伺服器 -> 分發到接收方的郵箱中

2.4.2 與HTTP的對比

區別一:HTTP是一個拉協議,使用者使用它從伺服器拉去資訊,且TCP連線是由想獲取檔案的機器發起的;SMTP是一個推協議,傳送郵件伺服器把檔案推向接受郵件伺服器,且TCP連線是由要傳送的機器發起的。

區別二:SMTP要求每個報文都使用7為ASCII碼格式

區別三:處理一個既含文字又包含圖形的文件,HTTP把每個物件都封裝到自己的HTTP響應報文中,而SMTP把所有報文物件放在一個報文中。

2.5 DNS: 因特網的目錄服務

DNS 域名系統 是一個由分層的DNS伺服器實現的分散式資料庫,一個允許主機查詢分散式資料庫的應用層協議

這裡寫圖片描述

這裡寫圖片描述