網絡編程全面接觸

文章來源http://hi.baidu.com/%BC%C6%CB%E3%BB%FA%D1%A7%CF%B0%CD%F8/blog/item/4e8727183e78ba0435fa419e.html 

網絡編程概念全面接觸
2007-10-21 11:48

從最基本的概念層層入手,才能全面瞭解網絡的本質性。

1.計算機網絡

      將地理位置不同、並具有獨立功能的多個計算機系統通過通信設備和線路連接起來,以功能完善的網絡軟件實現網絡中資源共享的系統,稱爲計算機網絡。計算機網絡是通信技術與計算機技術相結合的產物。

2.因特網(Internet)

      因特網又稱國際互聯網,是一個由各種不同類型和規模的獨立運行和管理的計算機網絡組成的世界範圍的計算機網絡。是一個全球的、開放的信息資源網。因特網只是一個極爲龐大而又複雜的計算機網絡。
      因特網有三個基本要素:TCP/IP(傳輸控制協議/網際協議),DN(域名)和IP地址,URL(統一資源定位器)。


3.網絡協議

      網絡協議即網絡中(包括互聯網)傳遞、管理信息的一些規範。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱爲網絡協議。是計算機通過網絡彼此交流的一種“語言”。不同計算機之間必須使用相同的網絡協議才能進行通信。網絡上的計算機要互相通信,必須遵循一定的協議。常見的網絡協議有TCP/IP,IPX/SPX和NETBEUI。目前使用最廣泛的網絡協議是Internet的TCP/IP協議。


4.IP地址

     IP是Internet Protocol的縮寫,即互聯網協議。爲了能在網絡上準確地找到一臺計算機,TCP/IP協議爲每個連到Internet上的計算機分配了一個惟一的用32位二進制數字表示的地址的字,就是我們常說的IP地址。Internet上的每臺主機(Host)都有一個唯一的IP地址,這是Internet能夠運行的基礎。
     Internet依靠TCP/IP協議,在全球範圍內實現不同硬件結構、不同操作系統、不同網絡系統的互聯。在Internet上,每一個節點都依靠唯一的IP地址互相區分和相互聯繫。

5.域名(DN)

      域名的英文爲Domain Name,便於記憶的IP地址別號,也相當於一個企業或機構在互聯網上主機的一個代號。域名的形式是以若干個英文字母和數字組成,由“.”分隔成幾份。如:www.sohu.com.cn

6.URL(統一資源定位器)

      URL是Uniform Resource Locator的縮寫,即統一資源定位系統,也就是我們通常所說的網址。URL是在Internet的WWW服務程序上用於指定信息位置的表示方法,它指定了如HTTP或FTP等Internet協議,是惟一能夠識別Internet上具體的計算機、目錄或文件位置的命名約定。
例如,某一論壇的網址,也就是URL爲:http://www.test.com/bbs

7.網絡編程

      網絡編程的目的就是指直接或間接地通過網絡協議與其他計算機進行通訊。網絡編程中有兩個主要的問題,一個是如何準確的定位網絡上一臺或多臺主機,另一個就是找到主機後如何可靠高效的進行數據傳輸。在TCP/IP協議中IP層主要負責網絡主機的定位,數據傳輸的路由,由IP地址可以唯一地確定Internet上的一臺主機。而TCP層則提供面向應用的可靠的或非可靠的數據傳輸機制,這是網絡編程的主要對象,一般不需要關心IP層是如何處理數據的。

      目前較爲流行的網絡編程模型是客戶機/服務器(C/S)結構。即通信雙方一方作爲服務器等待客戶提出請求並予以響應。客戶則在需要服務時向服務器提出申請。服務器一般作爲守護進程始終運行,監聽網絡端口,一旦有客戶請求,就會啓動一個服務進程來響應該客戶,同時自己繼續監聽服務端口,使後來的客戶也能及時得到服務。

      在Internet上IP地址和主機名是一一對應的,通過域名解析可以由主機名得到機器的IP,由於機器名更接近自然語言,容易記憶,所以使用比IP地址廣泛,但是對機器而言只有IP地址纔是有效的標識符。

      通常一臺主機上總是有很多個進程需要網絡資源進行網絡通訊。網絡通訊的對象準確的講不是主機,而應該是主機中運行的進程。這時候光有主機名或IP地址來標識這麼多個進程顯然是不夠的。端口號就是爲了在一臺主機上提供更多的網絡資源而採取得一種手段,也是TCP層提供的一種機制。只有通過主機名或IP地址和端口號的組合才能唯一的確定網絡通訊中的對象:進程。


8.套接字

      所謂socket通常也稱作"套接字",用於描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。

      套接字可以根據通信性質分類,這種性質對於用戶是可見的。應用程序一般僅在同一類的套接字間進行通信。不過只要底層的通信協議允許,不同類型的套接字間也照樣可以通信。套接字有兩種不同的類型:流套接字和數據報套接字。
    
      套接字是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。可以將套接字看作不同主機間的進程進行雙向通信的端點,它構成了單個主機內及整個網絡間的編程界面。套接字存在於通信域中,通信域是爲了處理一般的線程通過套接字通信而引進的一種抽象概念。套接字通常和同一個域中的套接字交換數據(數據交換也可能穿越域的界限,但這時一定要執行某種解釋程序)。各種進程使用這個相同的域互相之間用Internet協議簇來進行通信。

9.套接字工作原理

      要通過互聯網進行通信,你至少需要一對套接字,其中一個運行於客戶機端,我們稱之爲ClientSocket,另一個運行於服務器端,我們稱之爲ServerSocket。
      根據連接啓動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分爲三個步驟:服務器監聽,客戶端請求,連接確認。

      所謂服務器監聽,是服務器端套接字並不定位具體的客戶端套接字,而是處於等待連接的狀態,實時監控網絡狀態。
      所謂客戶端請求,是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。爲此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號,然後就向服務器端套接字提出連接請求。
      所謂連接確認,是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端,一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連接請求。

 

網絡編程概念全面接觸(二)

網絡編程通常被稱爲Socket編程,在《網絡編程概念全面接觸一》一文中已經做了比較詳細的解釋。這裏就涉及的相關傳輸技術做實際的分析。

一、Socket的兩種類型

      套接字的兩種類型:一種採用"Stream Sockets"(流格式),另一種爲"Datagram Sockets"(數據報格式)。
      數據報格式又稱爲無連接套接字,相反流格式肯定是有連接了。這是跟兩種類型採用的傳輸協議有關。"Stream Sockets"(流格式)基於TCP協議,"Datagram Sockets"(數據報格式)基於UDP協議。
      對比上UDP與TCP協議的區別,就可以明確Socket的兩種類型的含義了。
    

二、TCP與UDP

      TCP 傳輸控制協議     Transfer Control Protocal
      UDP 用戶數據報協議 User Datagram Protocol

      TCP與UDP的區別:
    
      TCP                                    UDP
    
      基於連接                            基於無連接
      系統資源的要求多            系統資源的要求少
      數據包結構複雜                數據包結構簡單
      保證數據正確性                可能丟包
      保證數據順序                    不保證
      通信效率相對低                通信效率較高
    
    
      可見TCP保證數據能可靠並且按順序到達,是完全可靠的連接傳輸,然而資源要求也比較多,結構也比較複雜。TCP首先需要在傳輸方的兩端建立一可靠的連接(通過信號的三次握手,詳細可參考TCP相關資料),然後通過數據包的各項校驗確保數據完全正確。UDP設計初衷就是儘可能快的將數據包發送出去。所以UDP協議顯得非常精簡。你只要建立一個包,構造一個有目標信息的IP頭,然後發出去。無需連接。當然UDP也需要通過對方返回“命令正確應答”也叫“ACK”包,來避免數據包丟失。假使一定時間內,發送方沒有收到接收方的應答,則重新發送
數據包,直到收到"ACK"確認包。

      比如聊天室用TCP協議來傳送文字、控制信息、畫板和屏幕廣播數據,用UDP協議來傳送語音和視頻流。

三、數據包在網絡上的傳輸


      著名的網絡七層模型OSI/RM相信很多人都知道。
    
      應用層 (Application)
 表示層 (Presentation)
      會話層 (Session)
 傳輸層(Transport)
 網絡層(Network)
 數據鏈路層(Data Link)
 物理層(Physical)

      TCP/IP四層模型
    
      應用層(Application Layer) (TFTP,FTP,TELNET)
 傳輸層(Host-to-Host Transport Layer) (TCP, UDP)
 網絡層(Internet Layer) (IP和路由)
 網絡接口層(Network Access Layer) (網絡層,數據鏈路層和物理層)

      模型的核心思想就是層層封裝,工

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