C# .NET網路程式設計

qwer1030274531發表於2020-11-14

讀書筆記:《Visual C#網路程式設計技術及實踐》 清華大學出版社,梅曉冬 顏燁青編著

 

概述

在網路領域,所謂協議,就是指一套大家都公認的通訊規則。不同的協議是工作在不同的層上的,而層與層之間則透過介面來描述。

  • 網路協議:計算機之間的相互通訊需要共同遵守一定的規律原則,這些規則就稱為網路協議。常見的協議有TCP/IP(傳輸控制協議/網際協議)、IPX/SPX、NetBEUI等。在區域網中用得比較多的是IPX/SPX,使用者如果訪問Internet,則必須在網路協議中新增TCP/IP。
  • 介面:兩臺主機直接的通訊是每一個網路層都將資料的控制資訊傳遞到它的下一層,一直傳輸到最底的傳輸資料的介質,即物理介質,比如光纜。網路系統的每一個實體中,聯絡相鄰兩層的通路就是介面。在介面的規範裡,定義了下層向上層該提供哪些網路服務和操作。在對等實體之間透過協議來進行橫向通訊,在單個實體內每一層透過服務介面來傳遞資訊。
  • 服務:下層向上層提供的服務分為兩種形式:面向連線的服務和無連線的服務。雖然面向連線的服務方式提高了通訊資料傳輸的可靠性,但是在實際選擇方案時需要考慮通訊代價。

TCP/IP網路架構

TCP/IP是Internet的基礎協議,也是一種資料打包和定址的標準方法,在資料傳送中,可以理解為有兩個信封,TCP信封和IP信封,要傳遞的資訊被劃分成若干段,每一段塞入一個TCP信封,並在該信封面上記錄有段號的資訊,再將TCP信封塞進IP大信封,傳送上網。在接收端,一個TCP軟體包負責收集信封,抽出資料,把這些資料按傳送前的順序還原,並加以校驗,若發現差錯,根據協議,傳送“重發該資訊”的請求。分為應用層、傳輸層、網際網路層(網路層)和網路介面層,各層的功能:

  1. 網路介面層:控制網路硬體,併傳送IP資料包,管理網路介質裡的諸多協議,定義如何使用實際網路來傳送資料。
  2. 網際網路層:將整個網路體系結構貫穿在一起的關鍵層,負責提供基本的封包傳送功能,將資訊分組傳送到目標端,各個分組相互獨立。網際網路層定義了正式的分組格式和協議,就是我們所說的IP。
  3. 傳輸層:提供對等實體間的資料傳送服務,確定資料已被送達並接受。主要的協議有TCP和UDP。
  4. 應用層:應用程式間溝通的協議,包含所有的高層協議,如Telnet,FTP,SMTP、HTTP和DNS等。

由於資料包經過不同型別的網路,並且每一種網路所能傳輸的單元大小不同,因此IP模組需要把資料包重新整成各種規格的資料塊,然後才能適應性的網路環境進行傳輸,此外,IP也定義了網路上每一臺主機的地址格式,確保可以正確地抵達目的端主機。

IP協議是TCP/IP的心臟,IP協議能提供基本的封包傳送服務,而TCP協議則規範了在網路裡不同主機之間的建立連線的方式,這兩個協議的相互協議,是TCP/IP網路建立的基礎。

 

IP地址和埠

IP地址是網路上標識主機的編號,埠則是標識具體哪一個應用。

計算機的IP地址分為網路號和主機號兩部分,IPv4按照網路規模的大小,為了便於存址和層次化的構造網路,被分為A、B、C、D、E五類,商業應用中指用到A、B、C三類.

1、A類IP地址

一個A類IP地址是指, 在IP地址的四段號碼中,第一段號碼為網路號碼,剩下的三段號碼為本地計算機的號碼。

如果用二進位制表示IP地址的話,A類IP地址就由1位元組的網路地址和3位元組主機地址組成,網路地址的最高位必須是“0”。

A類IP地址中網路的標識長度為8位,主機標識的長度為24位,A類網路地址數量較少,有126個網路,每個網路可以容納主機數達1600多萬臺。
2、B類IP地址

一個B類IP地址是指,在IP地址的四段號碼中,前兩段號碼為網路號碼。如果用二進位制表示IP地址的話,B類IP地址就由2位元組的網路地址和2位元組主機地址組成,網路地址的最高位必須是“10”。

B類IP地址中網路的標識長度為16位,主機標識的長度為16位,B類網路地址適用於中等規模的網路,有16384個網路,每個網路所能容納的計算機數為6萬多臺。

3、C類IP地址

一個C類IP地址是指,在IP地址的四段號碼中,前三段號碼為網路號碼,剩下的一段號碼為本地計算機的號碼。

如果用二進位制表示IP地址的話,C類IP地址就由3位元組的網路地址和1位元組主機地址組成,網路地址的最高位必須是“110”。

C類IP地址中網路的標識長度為24位,主機標識的長度為8位,C類網路地址數量較多,有209萬餘個網路。適用於小規模的區域網路,每個網路最多隻能包含254臺計算機。

埠:透過埠號來唯一標記,只有整數,範圍是0~65535。TCP和UDP兩個協議是獨立的,因此各自的埠號也相互獨立,即TCP有256埠,UDP也有256埠。 /lanzhou/

分為知名埠和動態埠,知名埠只家喻戶曉的埠號,範圍為0~1023,比如21是FTP,25是SMTP,80是HTTP,135是RPC服務等。

C# .NET 網路程式設計相關類

  1. IPAddress 類,用於表示一個IP地址。
  2. DNS 類,是一種分層次的,基於域的命名方案,並且用於一個分散式資料庫系統來實現此命名方案。DNS的主要用途是將主機名和電子郵件目標地址對映成IP地址。
  3. IPHostEntry 類,為Internet主機地址資訊提供容器類,將一個域名系統主機名與一組匹配的IP地址關聯。
  4. IPEndPoint 類,將網路端點表示為IP地址和埠號,它的物件表示指定的IP地址和埠組合。
  5. Socket 類,為網路通訊程式提供了一套豐富的方法和屬性,比如TCPClient,TCPListener,UDPClient等。

套接字

多個TCP連線或多個應用程式程式可能遇到透過同一個TCP協議埠傳輸資料,因此使用套接字用於區分不同應用程式程式間的網路通訊和連線,生成套接字包括3個引數,通訊的目的IP地址,使用的傳輸層協議(TCP/UDP)和使用的埠號。

.NET的Socket提供了三種型別套接字:

  • Stream流式套接字,提供了一個面向連線、可靠的資料傳輸服務,資料無差錯、無重複的傳送,而且按傳送順序接收。
  • Dgram資料包式套接字,提供一個無連線服務。資料包以獨立包形式被髮送,不提供無錯保證,資料可能丟失或重複,並且接收順序混亂。
  • Raw原始套接字,允許對較低層協議(如IP、ICMP)直接訪問。

執行緒 /petitmal/

Thread,常用方法:啟動執行緒.Start()、終止執行緒.Abort();掛起執行緒.Suspend();重新執行掛起的執行緒.Resume();停止執行緒5秒.Sleep(5000),單位是毫秒。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2734168/,如需轉載,請註明出處,否則將追究法律責任。

相關文章