網絡編程前置知識

什麼是計算機網絡?
計算機網絡是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。

  1. 計算機網絡的作用:資源共享和信息傳遞。

  2. 計算機網絡的組成:

     a) 計算機硬件:計算機(大中小型服務器,臺式機、筆記本等)、外部設備(路由器、交換機等)、通信線路(雙絞線、光纖等)。

     b) 計算機軟件:網絡操作系統(Windows 2000 Server/Advance Server、Unix、Linux等)、網絡管理軟件(WorkWin、SugarNMS等)、網絡通信協議(如TCP/IP協議棧等)。

  3. 計算機網絡的多臺計算機是具有獨立功能的,而不是脫離網絡就無法存在的。

網絡通信協議

通過計算機網絡可以實現不同計算機之間的連接與通信,但是計算機網絡中實現通信必須有一些約定即通信協議,對速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等制定標準。就像兩個人想要順利溝通就必須使用同一種語言一樣,如果一個人只懂英語而另外一個人只懂中文,這樣就會造成沒有共同語言而無法溝通。

  國際標準化組織(ISO,即International Organization for Standardiz
  ation)定義了網絡通信協議的基本框架,被稱爲OSI(Open System Int
  erconnect,即開放系統互聯)模型。

OSI模型將這些通訊標準進行層次劃分,每一層次解決一個類別的問題,這樣就使得標準的制定沒那麼複雜。OSI模型制定的七層標準模型,分別是:
應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層。

在這裏插入圖片描述
雖然國際標準化組織制定了這樣一個網絡通信協議的模型,但是實際上互聯網通訊使用最多的網絡通信協議是TCP/IP網絡通信協議。
TCP/IP 是一個協議族,也是按照層次劃分,共四層:應用層,傳輸層,互連網絡層,網絡接口層(物理+數據鏈路層)。

TCP/IP協議和OSI模型的區別
OSI網絡通信協議模型,是一個參考模型,而TCP/IP協議是事實上的標準。TCP/IP協議參考了OSI 模型,但是並沒有嚴格按照OSI規定的七層標準去劃分,而只劃分了四層,這樣會更簡單點,當劃分太多層次時,你很難區分某個協議是屬於哪個層次的。

TCP/IP中有兩個重要的協議,傳輸層的TCP協議和互連網絡層的IP協議,因此就拿這兩個協議做代表,來命名整個協議族了,再說TCP/IP協議時,是指整個協議族。

網絡協議的分層
由於網絡結點之間聯繫很複雜,在制定協議時,把複雜成份分解成一些簡單的成份,再將它們復合起來。最常用的複合方式是層次方式,即同層間可以通信、上一層可以調用下一層,而與再下一層不發生關係。

把用戶應用程序作爲最高層,把物理通信線路作爲最低層,將其間的協議處理分爲若干層,規定每層處理的任務,也規定每層的接口標準。
在這裏插入圖片描述

數據封裝與解封:

由於用戶傳輸的數據一般都比較大,有的可以達到MB字節,一次性發送出去十分困難,於是就需要把數據分成許多片段,再按照一定的次序發送出去。這個過程就需要對數據進行封裝。

  數據封裝(Data Encapsulation)是指將協議數據單元(PDU)封裝在一組協議
  頭和協議尾中的過程。在OSI七層參考模型中,每層主要負責與其它機器上的對
  等層進行通信。該過程是在協議數據單元(PDU)中實現的,其中每層的PDU一般
  由本層的協議頭、協議尾和數據封裝構成。

  1.數據發送處理過程

    (1)應用層將數據交給傳輸層,傳輸層添加上TCP的控制信息(稱爲TCP頭部),這個數據單元稱爲段(Segment),加入控制信息的過程稱爲封裝。然後,將段交給網絡層。

    (2)網絡層接收到段,再添加上IP頭部,這個數據單元稱爲包(Packet)。然後,將包交給數據鏈路層。

    (3) 數據鏈路層接收到包,再添加上MAC頭部和尾部,這個數據單元稱爲幀(Frame)。然後,將幀交給物理層。

    (4)物理層將接收到的數據轉化爲比特流,然後在網線中傳送。

  2.數據接收處理過程

    (1)物理層接收到比特流,經過處理後將數據交給數據鏈路層。

    (2)數據鏈路層將接收到的數據轉化爲數據幀,再除去MAC頭部和尾部,這個除去控制信息的過程稱爲解封,然後將包交給網絡層。

    (3)網絡層接收到包,再除去IP頭部,然後將段交給傳輸層。

    (4)傳輸層接收到段,再除去TCP頭部,然後將數據交給應用層。

總結:
(1)發送方數據處理的方式是從高層到底層,逐層進行數據封裝。

(2)接收方數據處理的方式是從底層到高層,逐層進行數據解封。

接收方的每一層只把對該層有意義的數據拿走,或者說每一層只能處理髮送方同等層的數據,然後把其餘的部分傳遞給上一層,這就是對等層通信的概念。

數據封裝:
在這裏插入圖片描述

數據解封:
在這裏插入圖片描述


IP地址和端口

IP地址:
用來標識網絡中的一個通信實體的地址。通信實體可以是計算機、路由器等。 比如互聯網的每個服務器都要有自己的IP地址,而每個局域網的計算機要通信也要配置IP地址。

路由器是連接兩個或多個網絡的網絡設備。
目前主流使用的IP地址是IPV4,但是隨着網絡規模的不斷擴大,IPV4面臨着枯竭的危險,所以推出了IPV6。

  IPV4:32位地址,並以8位爲一個單位,分成四部分,以點分十進制表示,
  如192.168.0.1。因爲8位二進制的計數範圍是00000000---11111111,
  對應十進制的0-255,所以-4.278.4.1是錯誤的IPV4地址。

  IPV6:128位(16個字節)寫成8個16位的無符號整數,每個整數用四個十六
  進制位表示,每個數之間用冒號(:)分開,如:
  3ffe:3201:1401:1280:c8ff:fe4d:db39:1984

192.168.0.0–192.168.255.255爲私有地址,屬於非註冊地址,專門爲組織機構內部使用。


端口:
IP地址用來標識一臺計算機,但是一臺計算機上可能提供多種網絡應用程序,如何來區分這些不同的程序呢?這就要用到端口。

  端口是虛擬的概念,並不是說在主機上真的有若干個端口。通過端口,
  可以在一個主機上運行多個網絡應用程序。 端口的表示是一個16位的二進
  制整數,對應十進制的0-65535。

  Oracle、MySQL、Tomcat、QQ、msn、迅雷、電驢、360等網絡程序都
  有自己的端口。

總結:
IP地址好比每個人的地址(門牌號),端口好比是房間號。必須同時指定IP地址和端口號才能夠正確的發送數據。

URL:

在www上,每一信息資源都有統一且唯一的地址,該地址就叫URL(Uniform Resource Locator),它是www的統一資源定位符。URL由4部分組成:協議 、存放資源的主機域名、資源文件名和端口號。如果未指定該端口號,則使用協議默認的端口。例如http 協議的默認端口爲 80。 在瀏覽器中訪問網頁時,地址欄顯示的地址就是URL。

在java.net包中提供了URL類,該類封裝了大量複雜的涉及從遠程站點獲取信息的細節。

Socket:

我們開發的網絡應用程序位於應用層,TCP和UDP屬於傳輸層協議,在應用層如何使用傳輸層的服務呢?在應用層和傳輸層之間,則是使用套接Socket來進行分離。

套接字就像是傳輸層爲應用層開的一個小口,應用程序通過這個小口向遠程發送數據,或者接收遠程發來的數據;而這個小口以內,也就是數據進入這個口之後,或者數據從這個口出來之前,是不知道也不需要知道的,也不會關心它如何傳輸,這屬於網絡其它層次工作。

Socket實際是傳輸層供給應用層的編程接口。Socket就是應用層與傳輸層之間的橋樑。使用Socket編程可以開發客戶機和服務器應用程序,可以在本地網絡上進行通信,也可通過Internet在全球範圍內通信。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章