1. 程式人生 > >網路通訊、網路協議與網路程式設計

網路通訊、網路協議與網路程式設計

參考書籍:(我只是一個知識搬運工,把知識點總結了起來。)
[1] 金鬆河,王捷,黃永麗.Java程式設計經典課堂[M].北京:北京大學出版社,2014年8月第1版:323-326
[2] 謝均,謝希仁.計算機網路教程[M].北京:人民郵電出版社,2014年9月第4版:23-24

一、網路通訊

1、基本概念

(1)網路通訊是指計算機通過網路互相傳遞資訊。
(2)通訊協議是網路通訊的基礎,通訊協議是網路中計算機之間進行通訊時共同遵守的規則。不同的通訊協議用不同的方法解決不同型別的通訊問題。
(3)常用的通訊協議有HTTP(超文字傳輸協議,應用層協議)、FTP協議(檔案傳輸協議)、TCP/IP協議(傳輸控制協議/網際協議)、TCP協議(傳輸控制協議,運輸層協議)、UDP協議(使用者資料報,運輸層協議)。

2、網路通訊模型

(1)客戶/伺服器結構(Client/Server,縮寫為C/S,胖客戶):典型的C/S結構網路系統需要相應的客戶端才能實現通訊。
(2)瀏覽器/伺服器結構(Browser/Server,縮寫為B/S,瘦客戶):典型的B/S結構網路系統只要通過瀏覽器即可訪問,不需要在客戶端機安裝特定的軟體。

3、通訊互動過程的原理

客戶機端程式在需要服務時向伺服器提出服務申請,伺服器端程式則等待客戶提出伺服器請求,並予以相應。伺服器端程式始終執行,並且監聽網路埠,一旦有客戶發出請求,就會啟動一個服務程序來響應客戶機端的請求,同時繼續監聽網路埠,時刻為其他客戶請求提供服務。
實現網路上不同機器之間的通訊,必須要知道對方主機的地址和埠號。這裡介紹一下IP地址、域名地址和埠號的概念。
(1)IP地址:IP地址時計算機網路中任意一臺計算機的唯一標識。知道了網路中某一臺主機的IP地址,就可以定位這臺計算機。通過這種地址標識,網路中的計算機可以互相定位和通訊。
(2)域名地址:域名地址時計算機網路中一臺主機的標識名,可看做時IP地址的助記名。如www.baidu.com等。在Internet上,一個域名地址可以有多個IP地址與之相對應,一個IP地址可以對應多個域名。在訪問網路資源時,一般只需要記住伺服器的主機名就可以了,因為網路中的域名解析可以根據主機名查出對應的IP地址。有了伺服器的IP地址,就可以訪問這個主機了。
(3)埠號:網路通訊的主體不是主機,而是主機中執行的程序。埠號就是為了在一臺主機上標識程序而採取的手段,主機名(或IP地址)和埠的組合能唯一確定網路通訊的主體,即程序。埠(port)是網路通訊時同一主機上的不同程序的標識。一臺伺服器可以通過不同的埠提供不同的服務。

二、網路協議

1、基本概念

規定網路結點之間所交換的資料的格式和時序,以及在傳送或接受資料時要採取的動作等問題,這些為進行網路中的資料的交換而建立的規則、標準即為網路協議(network protocol)。網路協議有很多協議,以下主要介紹運輸層和應用層的相關協議。

2、運輸層協議

運輸層(transport layer,傳輸層)的任務就是負責向兩臺主機中程序之間的通訊提供通用的資料傳輸服務。
在因特網中,主要有兩個運輸層協議。
(1)傳輸控制協議(Transmission Control Protocol,TCP):提供面向連線的、可靠的資料傳輸服務,其資料傳輸的單位的是報文段(segment)。
(2)使用者資料報協議(User Datagram Protocol,UDP):提供無連線的,盡最大努力的資料傳輸服務(不保證資料傳輸的可靠性),其資料傳輸的單位是使用者資料報。

(1)TCP協議(面向連線的、點對點的、提供可靠傳輸的)

TCP(Transmission Control Protocol)協議是一種面向連線的、提供可靠傳輸的協議。它可以確保接收方完全正確地接收到傳送方所傳送的全部資料。
傳送方和接收方之間的兩個埠必須建立連線,以便在TCP協議的基礎上進行通訊。在程式中,埠之間建立連線一般使用Socket(套接字)方法。
當伺服器的Socket等待伺服器請求(即等待建立連線)時,客戶機的Socket可以要求進行連線,一旦這兩個Socket連線成功,它們就可以進行雙向資料傳輸。TCP協議為實現可靠的資料傳輸提供了一個點對點的通道。
TCP的主要特點
①TCP是面向連線的運輸層協議,主要解決資料如何在網路中傳輸。應用程式在使用TCP進行資料傳輸時,必須先建立TCP連線。
②每一條TCP連線只能有兩個端點,即每一條TCP連線只能是點對點的(一對一)。
③TCP提供可靠交付的服務。TCP提供可靠的資料傳輸,通過TCP連線傳輸的資料無差錯、不丟失,並且按序到達。
④TCP提供全雙工通訊。TCP允許通訊雙方的應用程序在任何時候都能傳送資料。TCP連線的兩端都設有傳送快取和接收快取,用來儲存存放雙向通訊的資料。

(2)UDP協議(無連線的、盡最大努力資料傳輸的協議)

UDP(User Datagram Protocol)是一種無連線的協議,它傳輸的是一種獨立的資料報(Datagram)。UDP只能提供不可靠的交付,即資料報能否到達目的地、到達目的地的時間、資料的正確性和各個資料報到達的順序都是不能完全保證的。使用UDP協議傳輸資料有大小限制,每個被傳輸的資料報必須限定在64KB之內。
UDP的優點
①UDP是無連線的,傳送資料前不需要建立連線(當然傳送資料結束時也沒有來凝結可釋放),因此減少了開銷和傳送資料前的時延。
②UDP使用盡最大努力交付,即不保證可靠交付,同時也不使用流量控制和擁塞控制,因此主機不需要維持具有許多引數的、複雜的連線狀態表。
③由於UDP沒有擁塞控制,因此網路出現的擁塞不會使源主機的傳送率降低。這對某些實時應用是很重要的。
④UDP是面向報文的。應用程式需要選擇合適大小的報文。
⑤UDP支援一對一、一對多、多對一和多對多的互動通訊。
⑥使用者資料報只有8個位元組的首部開銷,比TCP的20個位元組的首部要短得多。

3、應用層協議

應用層(application layer)是TCP/IP的體系結構的最高層。應用層的任務是如何通過應用程序間的互動來完成特定的網路應用。應用層協議定義的是應用程序間通訊和互動的規則,這裡的程序指的是正在執行的程式。對於不同的網路應用需要有不同的應用層協議。在因特網中的應用層有很多,如支援全球資訊網應用的HTTP協議,支援電子郵件的SMTP協議,支援檔案傳送的FTP協議等。應用層的資料單元成為報文(message)。
HTTP協議(超文字傳輸協議)
HTTP(Hyper Text Transfer Protocol)是關於如何在網路上傳輸超級文字的協議。HTTP是應用層協議,主要解決如何包裝資料,它是建立在TCP協議之上的一種應用,預設埠是80埠。
HTTP協議使用了面向連線的、提供資料傳輸的TCP作為運輸層協議,保證了資料的可靠傳輸。雖然HTTP使用TCP,但HTTP協議本身是一個無狀態協議,也就是說,HTTP不要求伺服器保留客戶的任何狀態資訊,HTTP的無狀態特性簡化了伺服器的特性,使得伺服器更容易支援大量併發的HTTP請求。
HTTP協議的應用場合
HTTP協議是目前實現瀏覽器/伺服器結構的應用(Browser/Server,瘦客戶結構)的主要方式,例如Web應用。同時,HTTP也應用於客戶端/伺服器結構(Client/Server,胖客戶結構)的應用程式,例如安卓應用和IOS應用當中,當前安卓有很多流行網路框架都是基於HTTP協議的,如Volley、OkHttp、xUtils等。

三、網路程式設計

1、URL程式設計技術

URL標識Internet上某個資源的位置,支援http、file、ftp等多種協議。通過URL標識,可以直接使用各種通訊協議獲取遠端計算機上的資源資訊,方便快捷地開發Internet應用。

2、TCP程式設計技術

TCP是可靠的連線通訊技術,主要使用Socket(套接字)機制。Socket是TCP/IP協議中的傳輸層介面。TCP通訊是使用TCP/IP協議、建立在穩定連線基礎上的、以流傳輸資料的通訊方式。它是目前實現Client/Server模式應用程式的主要方式。

3、UDP程式設計技術

UDP是無連線的快速通訊技術,資料報是一種在網路上傳播的、獨立的、自包含地址資訊的格式化資訊。UDP通訊使用UDP協議,資料報通訊不需要建立連線,通訊時資料報能否到達目的地、到達目的地的時間、資料的正確性和各個資料報到達的順序都是不能完全保證的。因此,資料報通訊也稱為無連線通訊。資料報通訊主要用於傳輸一些資料量大的、非關鍵性的資料。