c#網絡編程學習筆記00_補上一些基礎概念

/*前言:學軟件也有段時間了,慢慢的有了種一通百通的感覺,學做遊戲想做個聯網的,網絡通信必備,在進入編程之前,簡單瞭解下網絡編程的常識和一些概念,內容不需要強記,瞭解瞭解,記錄在此*/

一.什麼是網絡編程

1.網絡編程的概念:

實現進程(線程)相互之間的通信和基本的網絡應用原理性(協議)功能的程序。

2.網絡編程的層次:

簡單瞭解下就好

從底層到高層:

                  網絡接口層-》網際層ip-》傳輸層(tcp或者udp)-》應用層(各種應用協議,比如http,ftp,pop3等等)。

二.網絡通訊機制

       1.我學習後的理解

用一個小事例說明一個簡單的通訊過程:

       目的:主機A發送一段字符串給主機B,實現通訊。

       過程:主機A中的程序段運行,發送一段字符串給主機A中的socket,該socket通過網絡接口卡(不用在意這是個什麼東西,沒什麼卵用)相連的介質(理解爲網線),發往主機B中的socket,然後主機B中的某個程序調用主機B的socket,完成通訊。所以,處理網絡通訊,就是處理Socket(套接字)的接受和發送,socket不是硬件,是通訊過程中使用的一些緩衝區和相關的數據結構。

       2.爲了滿足不同程序對通訊質量和性能的要求,一般網絡系統提供了三種不同類型的嵌套字:

       1) 流式嵌套字:可靠的,面向連接的雙向數據傳輸服務。實現了數據無差錯,無重複的發送,內設流量控制,被傳輸的數據被看做無記錄邊界的字節流。當用戶要求發送大量數據,或者對數據傳輸的可靠性要求較高的時候使用流式嵌套字。

       2)數據報套接字:無連接,不可靠的雙向數據傳輸報務。數據以獨立的包形式發送,保留了記錄邊界,,不提高可靠性保證。數據在傳輸過程中可能會丟失或者重複,並且不能保證數據在接受短和發送都的順序相同。

       3)原始套接字:一般用於tcp/ip核心協議的編程,不做討論。

三.TCP/IP協議棧

       分爲四類,從高到低:

1.      應用層:

             應用層包含了很多我們常見的協議,比如遠程登陸協議Telnet,文件傳輸協議FTP,超文本傳輸協議HTTP,域名系統(DNS),簡單網絡管理協議(SNMP),簡單郵件傳輸協議(SMTP),郵局協議(POP3),即使通訊協議(QICQ)等。

             網絡應用開發的本質是:遵循應用層上的一種或者集中協議的規範去編寫Socket通信程序的過程。

             儘管提供了多種協議,在很多時候,我們需要定義自己的協議。

2.      傳輸層

             傳輸層在應用層之下,完成兩臺主機之間的通信,其本質是兩臺主機上對應的應用進程之間的通信(我們知道的簡單Socket程序所實現的正式這種通信),也叫端到端的通信,他屏蔽了IP層的路由選擇和物理網絡等細節。

             在實際中,根據實際要求不同,傳輸層的協議分爲兩種:

1)      TCP:可靠,但是要消耗更多的開銷。

2)      UDP:不能保證可靠性,但是高效。

3.      網際層、

             可以將其稱爲最重要的一層,因爲他管理的是IP,網絡層的主要功能是吧源主機上的分組按照需要,發送到互聯網中的目標主機,當然發送信息的源主機必須知道目標主機的地址。

             源主機和目標主機可以在同一個網絡中,也可以不再同一個網絡中,當不再同一個網絡紅,可能有多條通路項鍊,而網際層的一個重要功能就是“路由選擇”。

4.      網絡接口層

             最底層,負責將上層的數據(IP數據報),發送到其下的物理網絡。不需要過多瞭解。

四.我們要做的

       應用層中,並不穩定,不能把應用層作爲網絡應用開發的通用平臺。

       底層也不可以。

       只有傳輸層和網際層有最穩定的規範,TCP/UDP/IP是互聯網的核心協議,這就是我們日常說的TCP/IP協議。

       很多公司對衆多的協議都有很好的封裝,比如.NET中大多封裝在System.NET命名中。

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