應用軟體通常在網路邊緣的端系統中執行,而不是在網路核心的交換機和路由器上執行,這種模式促進了大量應用的開發和部署。網路核心的交換機和路由器只專注於資料報(分組)的**。
應用程式都有乙個體繫結構。網路應用程式所使用的兩種體系結構包括:客戶機/伺服器(c/s)體系結構或對等(p2p)體系結構。
在客戶機/伺服器體系結構中,有乙個總是開啟的主機稱為伺服器,它服務於來自許多其他稱為客戶機的主機請求。
乙個典型的例子是web 應用程式,當 web 伺服器接收到來自某客戶機瀏覽器對某物件的請求時,它向該客戶機傳送所請求的物件作為響應。注意到客戶機/伺服器體系結構中,客戶機相互之間不直接通訊。伺服器具有固定的、周知的位址,稱為 ip 位址,並且總是處於開啟狀態。
在客戶機/伺服器體系結構中,常用主機群集之類的虛擬伺服器對客戶機提供服務。
在 p2p 體系結構中,對作為基礎設施的伺服器依賴很少。相反,主機與主機之間—稱為對等方,直接相互通訊,互相提供服務。
執行在多個端系統上應用程式之間的互相通訊,對於作業系統來說,實際上是程序之間的通訊。程序可以被認為是程式的一次執行。同一臺主機上的程序間通訊的可以使用作業系統的程序間通訊機制,例如共享記憶體、訊號量等。但執行在不同端系統(可能具有不同的作業系統)上的程序間的通訊,需要交換訊息來實現相互通訊。傳送程序建立並向網路中傳送訊息,接收程序接收這些訊息並負責回送訊息。這個過程是通過呼叫作業系統提供的傳送接收函式來實現的。
程序與計算機網路之間的介面
從乙個程序向另乙個程序傳送的訊息必須經過下面的網路進行傳輸。程序通過乙個作業系統提供的稱為套接字(socket)的程式設計介面在網路上傳送和接收訊息,傳送和接收函式是這個程式設計介面提供的最基本的兩個函式。
應用程式開發者對於傳輸層的控制僅限於:①選擇傳輸層協議。②設定幾個傳輸層引數,如最大快取、最大報文段長度等。
程序在通訊時,必須給接收方指定接收位址,這個位址包括兩個部分:對方主機的 ip位址和應用程式的標識—埠號。
網際網路提供了不止一種傳輸層協議。當開發乙個應用時,在選擇可用的傳輸層協議時需要從四個方面對應用程式所需的傳輸服務進行考慮:是否要求可靠資料傳輸、吞吐量、時效性和安全性。
tcp/ip 網路為應用提供了兩個傳輸層協議:udp 和 tcp(對應於socket 程式設計的 sock_stream 和 sock_dgram)。
tcp 服務
tcp 服務模型是面向連線的可靠資料傳輸服務。
面向連線服務:使用 tcp 協議時,在應用程式開始交換訊息之前,客戶機程式和伺服器程式之間互相交換傳輸層控制資訊,做好傳輸分組的準備。在握手階段後,就在兩個程序的套接字之間建立了乙個tcp 連線。這個連線是全雙工的,即連線雙方的程序都有傳送和接收緩衝區,可以在此連線上同時進行報文段的收發。當應用程式結束訊息傳送時,必須拆除該連線。
可靠資料傳愉服務:進行通訊的程序依靠 tcp 協議,無差錯、按適當順序交付傳送的資料。其主要原理是報文段丟失了會進行重傳。
tcp 協議還具有擁塞控制機制,這種服務能為網際網路帶來整體好處。
udp 服務
udp 是一種不提供可靠傳輸服務的輕量級傳輸層協議。udp 是無連線的,因此在兩個程序通訊前沒有握手過程。 udp沒有擁塞控制機制。
•網際網路傳輸層協議所不提供的服務 不提供吞吐量和時效性保證的服務。
應用層協議定義了執行在不同端系統上的應用程式程序如何相互傳遞訊息。特別是定義了:
•交換的訊息型別,如請求訊息和響應訊息。
•各種訊息型別的語法,如訊息中的各個字段及其詳細描述。
•欄位的語義,即包含在字段中的資訊的含義。
•程序何時、如何傳送訊息及對訊息進行響應的規則。
對大多數使用者來說,web 服務最具有吸引力的就是 web 的按需操作。當使用者需要時,就能得到他想要的內容。
http 協議由兩部分程式實現:乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換 http 訊息進行會話。http 定義了瀏覽器和 web 伺服器之間的訊息格式以及客戶機和伺服器是如何進行訊息交換的。
http 使用 tcp 作為它的傳輸層協議。瀏覽器發起乙個與伺服器的 tcp 連線,一旦連線建立,瀏覽器和伺服器程序就可以通過套接字介面訪問tcp。
http 是無狀態的。伺服器向客戶機傳送被請求的檔案時,並不儲存任何關於該客戶機的狀態資訊。但伺服器一般會在日誌檔案中記錄使用者的訪問歷史。
http 訊息有兩種:請求訊息和響應訊息。
http 請求訊息的第一行叫做請求行,其後繼的行叫做頭部行。
請求行有 3 個字段:方法字段、url 欄位和 http 協議版本字段。
http 響應訊息分成三個部分:初始狀態行、首部行,然後是實體。
狀態行有 3 個字段:協議版本、狀態碼和相應狀態資訊。
網際網路上的主機和人類一樣,也可以使用多種方式進行識別。
主機的一種識別方法是用它的主機名,這些名字便於記憶,也樂於被人們接受。
主機也可以使用所謂 ip 位址進行識別。乙個 ip 位址由 4 個位元組組成,並有著嚴格的層次結構。我們說 ip 位址具有層次結構,是因為從左至右它包含了越來越詳細的關於主機的位置資訊。
人們喜歡便於記憶的主機名標識,而路由器則喜歡定長的、有著層次結構的 ip 位址。
因此需要一種能進行主機名到 ip 位址轉換的目錄服務,這就是網域名稱系統。
dns是:①乙個由分層的dns伺服器實現的分布式資料庫;②乙個允許主機查詢分布式數
據庫的應用層協議。
dns 用於將使用者提供的主機名解析為 ip 位址。例如當某個使用者主機上的乙個瀏覽器請求某個網頁時,為了使使用者的 http 請求訊息傳送到 web 伺服器,使用者主機首先必須獲得web 伺服器的 ip 位址。
假設執行在使用者主機上的某些應用程式(如 web 瀏覽器)需要將主機名轉換為 ip 位址。
這些應用程式將呼叫 dns 的客戶機端,並指明需要被轉換的主機名。在很多系統中,應用程式執行這種轉換呼叫函式gethostbyname()。
dns 的客戶機端接收到轉換請求後,向網路中傳送乙個 dns 查詢訊息。所有的 dns 請求和回答訊息使用 udp 資料報經埠 53 傳送。過若干時間後,使用者主機上的客戶機端接收到乙個對映的 dns 回答訊息。這個查詢結果則被傳遞到應用程式。
根 ons 伺服器。在網際網路上有 13 個根 dns 伺服器(標號為 a 到 m),其中大部分位於北美洲。
頂級域(tld)伺服器。這些伺服器負責頂級網域名稱(如 com, org, gov 和所有國家的頂級網域名稱(如 cn)。
權威 dns 伺服器。將主機的名字對映為 ip 位址,由乙個單位的權威 dns 伺服器負責儲存這些記錄。另一種方法是支付費用將這些記錄儲存在某個 isp 的權威 dns 伺服器中。根、tld 和權威 dns 伺服器都處在 dns 伺服器的層次結構中。
本地 dns 伺服器嚴格來說並不屬於 dns 伺服器的層次結構,但它對 dns 層次結構又是很重要的,本地 dns 伺服器通常與主機相隔不超過幾個路由器。當主機發出 dns 請求時,該請求被發往本地 dns 伺服器,它起著**的作用,並將網域名稱簡析請求**到 dns 伺服器層次結構中。
計算機網路 應用層
運輸層為應用程序提供了端到端的通訊服務。但不同的網路應用程序之間,還需要有不同的通訊規則。因此在運輸層協議之上,還需要有應用層協議。應用程序之間的通訊必須遵守嚴格的規則。應用層的協議應當定義 1 網域名稱系統dns 網域名稱到ip位址的解析是由分布在網際網路上的許多網域名稱伺服器程式共同完成的。網域...
計算機網路 應用層
計算機網路分層 應用層是網路應用程式和及應用層協議存留的地方。應用層協議分布在多個端系統上,乙個端系統中的應用程式使用協議與另乙個端系統中的應用程式交換資訊的分組。該層資訊被稱為報文。常用的應用層協議有 http,smtp,ftp,dns 1.基本概念 執行在不同端系統的程式的通訊是通過程序完成的。...
計算機網路 應用層
我們現在已經了解了運輸層為應用程式提供了端到端的通訊服務,但是不同的應用程序之間,還需要不同的通訊協議,因此在運輸層協議上方還有應用層協議,這是因為每個應用層協議都是為了解決一類問題,而問題的解決又要通過不同主機的多個應用程序之間通訊和協同工作來完成,應用程序之間的通訊需要遵守嚴格的規則,應用層的具...