C# Socket編程(1)基本的術語和概念

來源:互聯網
上載者:User

  電腦程式能夠相互連網,相互連訊,這使一切都成為可能,這也是當今互連網存在的基礎。那麼程式是如何通過網路相互連信的呢?這就是我記錄這系列的筆記的原因。C#語言從一開始就是為了互連網而設計的,它為實現程式的相互連信提供了許多有用API,這類應用編程介面被稱為通訊端(Socket)。在開始學習C# Socket之前我們需要先來瞭解一下基本的術語和概念。

閱讀目錄:

  1.電腦網路

  2.分組報文

  3.協議

    3.1 IP協議

    3.2 TCP協議

    3.2 UDP協議

  4.網路地址

    4.1 迴環地址 

  5.DNS和本地設定資料庫

  6.用戶端和伺服器

  7.什麼是Socket

 

1.電腦網路

  電腦網路由一組通過通訊通道(Communication channel)相互串連的機器組成。這些機器被稱為:主機(hosts)路由器(routers):

  • 通訊通道  ——  是將位元組序列從一個主機傳輸到另一個主機的一種手段(有線、無線(WiFi)等方式)。
  • 主機  ——  作用是運行程式的電腦。
  • 路由器  ——  作用是將資訊從一個通訊通道傳遞或轉寄到另一個通訊通道。 

TCP/IP網路通訊流程圖:

2.分組報文
  • 分組報文  ——  在網路環境中由程式建立和解釋的位元組序列。
3.協議

  協議相當於相互連信的一種約定,協議規定了分組報文的交換方式和它們包含意義。

  互連網所使用的協議是 TCP/IP 協議,TCP/IP 協議族主要包括:

  • IP 協議(Internet Protocol,互連網協議)
  • TCP 協議(Transmission Control Protocol,傳輸控制通訊協定)
  • UDP 協議(User Datagram Protocol,使用者資料包通訊協定)

IP協議

  • IP 協議  ——  是TCP/IP協議中唯一屬於網路層的協議。將資料從一台主機傳輸到另一台主機。
  • IP 協議  ——  提供了一種資料服務:每組分組報文都有網路獨立處理和分發,類似於信件或包裹通過郵政系統發送一樣。
  • IP 協議  ——  是一個"儘力而為"(best-effort)的協議:它試圖分發每一個分組報文,在網路傳輸過程中,偶爾也會發生丟失報文是報文順序打亂,或者重複發送報文的情況。  

  在IP協議層之上是傳輸層(transport layer),它提供了兩種可選的協議:TCP協議和UDP協議,兩種協議都建立在IP層所提供的服務基礎上,二者也被稱為"端到端傳輸協議(end-to-end transport protocol)"根據應用程式協議(Application protocol)的不同需求,使用了不同的方式傳輸資料。二者都有一個共同的功能:定址。TCP協議和UDP協議使用的地址叫做連接埠號碼(port number),是用來區分同一主機不同應用程式的。

TCP 協議

  TCP協議能夠檢測和恢複IP層提供的主機到主機的通道中可能發生的報文丟失、重複以及其他錯誤。TCP協議是一種連線導向(connection oriented)協議:在使用它進行通訊之前,兩個應用程式之間首先要建立一個TCP串連,這涉及兩台相互連信的主機的TCP組件間完成的握手訊息(handshake message)的交換。

UDP 協議

  UDP協議並不嘗試對IP層產生的錯誤進行修複,它僅僅簡單拓展了IP協議,"儘力而為"的資料服務,使它能夠在應用程式之間工作,而不是在主機之間工作。使用UDP協議的應用程式需要對處理報文丟失、順序混亂等問題做好準備。

4.網路地址

  在TCP/IP協議中,有兩部分資訊用來定位一個指定的程式:互連網地址(Internet address)和連接埠號碼(port number,範圍1-65535)。前者由IP協議使用,後者由傳輸協議(TCP/UDP)對其進行解析。

  互連網地址有位元字組成,有兩種形式:IPv4(32位)和IPv6(128位)。為了方便使用,兩個版本的IP協議有不同的表示方法:

  •   IPv4地址被表示為一組為4個十進位數,每兩個數之間用圓點隔開,這種表示方法叫做:點分形式(dotted-quad)。
  •   IPv6地址的16個位元組由幾組16進位的數字表示,這些十六進位數之間有分號隔開,每組數字分別代表了地址中的兩個位元組。

迴環地址

  迴環地址(loopback address)是被分配的一個特殊的迴環介面(loopback interface),迴環介面是一種虛擬設備,它的功能只是簡單的把發送給它的報文立即返回給寄件者。如IPv4中的:127.0.0.1

5.網域名稱系統(Domain Name System,DNS)和本地設定資料庫

  DNS是一種分散式資料庫,它將向www.baidu.com這樣的網域名稱映射到真實的互連網地址和其他資訊上。DNS協議允許串連到互連網的主機通過TCP或者UDP協議從DNS資料庫擷取資訊。

  本地設定資料庫通常是一種與具體作業系統相關的機制,用來實現本地與互連網地址的映射。  

6.用戶端和伺服器

  用戶端(client)和伺服器(server)這兩個術語分別代表了兩種角色: 

  • 用戶端是通訊的發起者,而伺服器程式則被動等待用戶端發起通訊,並對其作出響應。
  • 用戶端伺服器組成了應用程式
7.什麼是Socket(通訊端)

  Socket(通訊端)是一種抽象層,應用程式通過它來發送和接受資料,就像應用程式開啟一個檔案控制代碼,將資料讀寫到穩定的儲存空間上一樣。

  在TCP/IP協議族中的主要Socket類型為:

  • 流通訊端(stream socket):傳輸層使用TCP協議,提供了一個可信賴的位元組流服務
  • 資料通訊端(datagram socket):傳輸層使用UDP協議,提供了一個"儘力而為"的資料報服務,最長一次可以發送65500個位元組的資料。

 

參考資料:《TCP/IP Socket in Java》 

作者:晴天豬

出處:http://www.cnblogs.com/IPrograming 

本文著作權歸作者和部落格園共有,歡迎轉載,並請註明出處。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.