1. 程式人生 > >黑馬程式設計師——JavaSE之網路程式設計總結一

黑馬程式設計師——JavaSE之網路程式設計總結一

網路模型

  OSI(Open System Interconnection開放系統互連)參考模型

  TCP/IP參考模型

網路通訊要素

  IP地址

  埠號

  傳輸協議


OSI七層協議的作用簡單描述成以下形式: 

        應用層      與使用者應用程序的介面

        表示層      資料格式的轉換

        會話層      會話管理與資料傳輸的同步

        傳輸層      端到端經網路透明地傳送報文

        網路層      分組傳送,路由選擇

        資料鏈路層  在鏈路上無差錯地傳送幀

        物理層      經物理媒體透明傳送位元流

網路通訊要素

   IP地址:InetAddress

         不易記憶,可用主機名

          本地迴環地址:127.0.0.1  主機名:localhost

         在日常應用中的計算機地址是用"192.168.0.1","www.it315.org"等字串格式來表示的。

   埠號:用於標識程序的邏輯地址,不同程序的標識

         有效埠:0~65535,其中0~1024是系統使用或者保留埠。

   傳輸協議:通訊的規則

          常見協議:TCP,UDP

<span style="font-family:Microsoft YaHei;">public static void main(String[] args) throws UnknownHostException{
		//ip地址物件:InetAddress
		//獲取本地主機地址物件
	//	InetAddress ip = InetAddress.getLocalHost();
		//獲取其他主機的地址物件
		InetAddress ip = InetAddress.getByName("198.168.0.1");
		
		System.out.println(ip.getHostAddress() + ":" + ip.getHostName());
	}</span>

域名:網站的網址

域名解析:將域名轉換成伺服器的IP地址的過程。

域名解析圖:


埠:其實就是隊,作業系統為各個程序分配了不同的隊,資料報按照目的埠被推入相應的隊中,等待被程序取用,在極特殊的情況下,這個隊也是有可能溢位的,不過作業系統允許各程序指定和調整自己的隊的大小。 
不光接受資料報的程序需要開啟它自己的埠,傳送資料報的程序也需要開啟埠,這樣,資料報中將會標識有源埠,以便接受方能順利的回傳資料報到這個埠

網路中常用的埠號:

         服務                                 埠號

   Mysql 資料庫服務          3306 

       SMTP                                   25

       HTTP                                   80

     SQL server                          1433

       Oracle                               1521

       DNS                                     53

TCP協議和UDP協議:

TCP協議:傳輸控制協議 

UDP協議:使用者資料報協議

TCP將資料分成資料報,用能夠到達目的地的路徑資訊連行包裝,接收端則將這些資料進行重組。它提供可靠的、面向連線的資料報傳遞服務。 

    TCP協議位於IP協議的上層,為資料提供錯誤校驗流量控制序列資訊用以補充IP協議的不足

     UDP是無連線的服務,優點是靈活方便和比較迅速,但不能防止報文的丟失、重複或失序,特別適合於傳送少量零星的報文。比如DNS就是基於UDP。

TCP與UDP的區別:

   TCP 提供面向連線的、可靠的資料流傳輸,而 UDP 提供的是非面向連線的、不可靠的資料流傳輸。

 TCP 傳輸單位稱為報文段, UDP 傳輸單位稱為使用者資料報。

 TCP 注重資料安全性, UDP 資料傳輸快,因為不需要連線等待,少了許多操作,但是其安全性卻一般。

TCP客戶端程式與TCP伺服器端程式的互動過程:

(1)伺服器程式建立一個ServerSocket,然後呼叫accept方法等待客戶來連線。

(2)客戶端程式建立一個Socket並請求與伺服器建立連線。

(3)伺服器接收客戶的連線請求,並建立一個新的Socket與該客戶建立專線連線。

(4)建立了連線的兩個Socket在一個單獨的執行緒(由伺服器程式建立)上對話。

(5)伺服器開始等待新的連線請求,當新的連線請求到達時,重複步驟(2)到步驟(5)發的過程。

Socket

  Socket:就是為網路服務提供的一種機制。通訊的兩端都有Socket。

  網路通訊其實就是Socket間的通訊。資料在兩個Socket間通過IO傳輸。

伺服器端接收到客戶端Scoket的連線請求時會通過accept()方法返回一個與客戶端Socket建立專線連線的伺服器端的Socket物件,不能使用Socket構造方法創伺服器端的Socket物件。當伺服器端的Socket物件與客戶端Socket物件建立專線連線後,它們以網路位元組流的形式進行資料交換,Socket的getInputStream與getOutputStream分別用於返回Socket的輸入流物件和輸出流物件。

下面一個圖解很容易明白:

URL

  URL代表一個統一資源定位符,它是指向網際網路“資源”的指標。其中統一資源代表所有資源。能直接定位到網路的某一個資源上。

其中URL類有一個方法是getConnection()表示開啟URL資源的連線,這時就可以方便的取資源。內部封裝了Socket。getConnection抽象類代表應用程式和URL之間的通訊連線。

這個類的例項可以用在讀取和寫入此URL引用的資源。

其中這些都要基於協議才能順利的傳輸完成。比如我們平時用的最多的HTTP協議,它是

用來在Internet上傳送超文字的傳送協議。它是執行在TCP/IP協議族之上的HTTP應用協議,它可以使瀏覽器更加高效,使網路傳輸減少。任何伺服器除了包括HTML檔案以外,還有一個HTTP駐留程式,用於響應用使用者請求。您的瀏覽器是HTTP客戶,向伺服器傳送請求,當瀏覽器中輸入了一個開始檔案或點選了一個超級連結時,瀏覽器就向伺服器傳送了HTTP請求,此請求被送往由URL指定的IP地址。駐留程式接收到請求,在進行必要的操作後回送所要求的檔案。

HTTP協議分為HTTP1.1和HTTP1.0,其中的主要區別如下:

1.HTTP/1.0協議使用非持久連線,即在非持久連線下,一個tcp連線只傳輸一個Web物件,;2.HTTP/1.1預設使用持久連線(然而,HTTP/1.1協議的客戶機和伺服器可以配置成使用非持久連線)。在持久連線下,不必為每個Web物件的傳送建立一個新的連線,一個連線中可以傳輸多個物件!