即解決網路應用程式如何實際編寫的問題。
網路應用程式的核心是由一對程式(客戶機程式和伺服器程式),位於不同的端系統中,當執行這兩個程式時,建立了乙個客戶機程序和乙個伺服器程序,同時他們彼此之間通過從套接字讀出和寫入資料進行通訊。
開發者開發乙個網路應用,主要是編寫客戶機程式和伺服器程式的**。
網路應用程式有兩類,一類是網路應用程式,由rfc所定義的標準協議的實現。當客戶機程式或伺服器程式實現了由某rfc定義的協議時,應該使用與協議相關的埠號;另一類是專用的網路應用程式。客戶機程式和伺服器程式使用的應用層協議不必符合任何現有rfc,不能使用已經在rfc中定義的周知埠號,伺服器程式與客戶機程式的埠號必須相同。
執行在不同機器上的程序彼此通過向套接字傳送報文來通訊。套接字socket是應用程序和tcp之間的門。
客戶機負責發起與伺服器的聯絡,伺服器為了能對客戶機發起的連線做出響應,必須實現準備好。即伺服器程式不能處於睡眠狀態,且必須先於客戶機程式執行;伺服器程式必須有某種套接字來面對來自執行在任意機器上客戶機程式發起的連線。
當伺服器程序執行時,客戶機程序可以向伺服器發起乙個tcp連線。在客戶機程式中,可以通過建立乙個套接字來完成。當客戶機建立他的套接字時,他指定伺服器程序的位址,即伺服器的ip位址和程序的埠號。一旦在客戶機程式中生成套接字,客戶機的tcp與伺服器的tcp發起三次握手並建立乙個tcp連線,這個三次握手過程發生在運輸層,對於客戶機程式和伺服器程式是完全透明的。
當客戶機程序發起訪問,即向伺服器的套接字發起訪問時,伺服器將建立乙個新的套接字,為某個特定的客戶機程式服務,這個套接字與原套接字基本相同,只是目的位址確定,僅負責該目的位址的通訊,通訊結束,套接字被**銷毀。
在握手的最後階段,客戶機套接字和伺服器套接字之間已經存在乙個tcp連線,因此,我們稱新的套接字為伺服器的連線套接字。
tcp連線是客戶機套接字和伺服器連線套接字之間的乙個直接的虛擬管道,這個管道一直保持,直到某個程序將其關閉。客戶機程序可以向他的套接字傳送任意位元組的資料,tcp保證伺服器程序能夠按傳送的順序接收到每個位元組的資料。tcp因此在客戶機程序和伺服器程序之間提供了可靠位元組流服務。
流是流入和流出程序的字串行,對乙個程序來說,每條流或者是輸入流,或者是輸出流。如果流是一條輸入流,則他與該程序的某個輸入源相連,如標準輸入(鍵盤)或者乙個套接字。
在tcp連線實際建立起來時,客戶機必須先進行一次dns查詢,以便通過主機名獲得主機的ip位址,但如果一開始就以伺服器主機的ip位址作為通訊位址,那麼就不需要這一次的dns查詢。主機ip位址連通應用程式的埠號標識了伺服器程序。
udp允許執行在不同機器上的兩個或多個程序彼此通訊。
udp是一種無連線的服務,即在兩個程序間沒有建立管道時所需要的初始握手階段。
因為udp沒有管道,所以當傳送資料的時候,傳送程序需要為這批位元組附上目的程序位址,並且,該過程對於每批由傳送程序所傳送的位元組都必須重複做。
目的位址由二元組組成:目的主機的ip位址和目的程序的埠號,將帶有ip目的位址和埠號的一批位元組資料稱為分組。
udp提供了一種不可靠的面向報文的服務模型,不能確保分組不會丟失。
即udp的特點為:
①、兩個程序之間沒有進行初始握手,因此不需要歡迎套接字
②、沒有流與套接字相聯絡
③、傳送主機通過ip目的位址和埠號與他傳送每批位元組相聯絡,生成分組。
④、接收程序必須拆開每個所接收到的分組,獲得該分組的資訊位元組
udp可以先執行客戶機,再執行伺服器,因為客戶機程序沒有試圖和伺服器建立起連線。
計算機網路 TCP UDP的區別
udp簡介 udp特點 面向非連線 不維護連線狀態,支援同時向多個客戶端傳輸相同的訊息 資料報報文只有8個位元組,額外開銷較小 tcp 20個位元組 吞吐量只受限於資料生成速率,傳輸速率以及機器效能 盡最大努力交付,不保證可靠交付,不需要維護複雜的鏈結狀態表 udp是面向報文的,不對應用程式提交的報...
計算機網路 TCP UDP協議(一)
傳輸控制協議,面向連線的 可靠的 基於流服務的傳輸層通訊協議。tcp協議使用的是超時重傳 資料確認機制來保證資料傳輸的可靠性,確保資料正確的被接收,使用tcp通訊雙方必須先建立連線,並在核心中為該連線維持一些資料結構 讀寫緩衝區等 當通訊結束後,釋放緩衝區中的核心資料。舉乙個栗子 我們在打 就需要於...
計算機網路9 計算機網路效能
1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位時間 ...