1. 程式人生 > >Java網絡基礎

Java網絡基礎

建立連接 相關 語義 保留 int 分層 互聯 體系結構 protocol

Java 網絡編程(一) 網絡基礎知識

網絡基礎知識

  網絡編程的目的:直接或間接地通過網絡協議與其他計算機進行通訊。

  網絡編程中有兩個主要的問題:

  1.如何準確地定位網絡上一臺或多臺主機。

  2.找到主機後如何可靠高效地進行數據傳輸。

  目前較為流行的網絡編程模型是客戶端/服務器(C/S)結構

  即通信雙方一方作為服務器等待客戶提出請求並予以相應。客戶則在需要服務時向服務器提出申請。

  服務器始終運行,監聽網絡端口,一旦有客戶請求,就會啟動一個服務線程來響應該客戶,同時自己繼續監聽服務窗口,使後來的客戶也能及時得到服務。

IP地址

  IP網絡中每臺主機都必須有一個唯一的IP地址,IP地址是一個邏輯地址。

  英特網上的IP地址具有全球唯一性。

  32位,四個字節,常用點分十進制的格式表示。

  例如:192.168.0.200

協議

  為進行網絡中的數據交換(通信)而建立的規則、標準或約定。(=語義+語法+規則)。

  不同層具有各自不同的協議。

ISO/OSI七層參考模型

  網絡體系結構解決異質性問題采用的是分層的方法——把復雜的網絡互聯問題劃分為若幹個較小的、單一的問題,在不同層上予以解決。

  OSI(Open System Interconnection)參考模型將網絡的不同功能劃分為7層:

  應用層:處理網絡應用

  表示層:數據表示

  會話層:主機間通信

  傳輸層:端到端的連接

  網絡層:尋址和最短路徑

  數據鏈路層:介質訪問(接入)

  物理層:二進制傳輸

  

  技術分享

  通信實體的對等層之間不允許直接通信,各層之間是嚴格的單向依賴,上層(Service user)使用下層提供的服務,下層(Service provider)向上層提供服務。

  對等層通信的實質對等層實體之間虛擬通信,下層向上層提供服務,實際通信在最底層完成。

OSI各層所使用的協議:

  應用層:Telnet、FTP、HTTP、DNS、SMTP、POP3

  傳輸層:TCP、UDP

  TCP:面向連接的可靠的傳輸協議。

  UDP:是無連接的,不可靠的傳輸協議。

  網絡層:IP、ICMP、IGMP

端口

  在互聯網上傳輸的數據都包含有用來識別目的地的IP地址和端口號。

  IP地址用來標識網絡上的計算機,而端口號用來指明該計算機上的應用程序。

  端口是一種抽象的軟件結構(包括一些數據結構和I/O緩沖區)。

  應用程序通過系統調用與某端口建立連接(binding)後,傳輸層傳給該端口的數據都被相應的進程所接收,相應進程發給傳輸層的數據都通過該端口輸出。

  端口用一個整數型標識符來表示,即端口號。

  端口號跟協議相關,TCP/IP傳輸層的兩個協議TCP和UDP是完全獨立的兩個軟件模塊,因此各自的端口號也相互獨立,端口通常稱為協議端口(protocol port,簡稱端口。

  端口使用一個16位的數字來表示,它的範圍是0~65535,1024以下的端口號保留給預定義的服務。例如,http使用80端口。

數據封裝

  一臺計算機要發送數據到另一臺計算機,數據首先必須打包,打包的過程稱為封裝

  封裝就是在數據前面加上特定的協議頭部。

  OSI參考模型中,對等層協議之間的交換的信息單元稱為協議數據單元(PDU, Protocol Data Unit

  OSI參考模型中的每一層都要依靠下一層提供的服務。

  為了提供服務,下層把上層的PDU作為本層的數據封裝,然後加入本層的頭部(和尾部)。頭部中含有完成數據傳輸所需的控制信息。

  這樣,數據自上而下遞交的過程實際上就是不斷封裝的過程。到達目的地後自下而上遞交的過程就是不斷拆封的過程。由此可知,在物理線路上傳輸的數據,其外面實際上被包封了多層“信封”。

轉載於:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html

Java網絡基礎