C# Socket網絡編程(二)

目錄

Socket相關的內容

什麼是Socket

Socket的本質

Socket的作用

Socket的典型應用

Socket介紹

網絡傳輸

OSI七層網絡模型

網絡模型

IP地址與域名

端口的概念

Socket/TCP五層網絡模型圖

TCP和UDP區別


Socket相關的內容

什麼是Socket

在計算機通信領域,Socket被翻譯爲“套接字”,它是計算機之間進行通信的一種約定或一種方式。通過Socket這種約定,一臺計算機可以接收到其他計算機的數據,也可以向其他計算機發送數據。

Socket的本質

Socket的本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員做網絡開發所用的接口,這個就是Scoket編程接口

Socket的作用

Socket的英文原意是“插座”,的意思,通常在計算機編程中稱作套接字,可以用來實現不同虛擬機或不同計算機之間的通信

Socket的典型應用

  1. Socket的應用之一就是Web服務器和瀏覽器:瀏覽器獲取用戶輸入的URL地址,向服務器發起請求,服務器分析接收到的URL請求,將對應的網頁內容返回給瀏覽器,瀏覽器再經過解析和渲染,將文字、圖片、視頻等元素呈現給用戶

  2. QQ或者微信或者默默等聊天社交工具等:本地的QQ或微信程序就是客戶端,登錄過程就是連接服務器的過程,聊天過程就是Socket的發送和接受信息過程

Socket介紹

把Socket比作門,門外是郵局,你送信就需要通過門,把信從門送出去到郵局,然後由郵局幫你送達目標的門,目的地主人再打開門,從門取出郵局送過來的信。

分析一下通信過程(打電話):

兩人之間打電話:

  1. 需要做好的保障:兩人都要有電話,可正常通話的電話就是Socket

    可正常通話的電話:電話能用,電話要插有電話線(信號器),電話要有卡

  2. 發送消息者通過一端的電話撥號等待

  3. 接收消息者通過另一端的電話接聽

  4. 發送消息者和接受消息者之間可以進行通過

  5. 消息溝通完畢之後由任意一端先Say Go Bey!掛斷電話斷開

  6. 剩餘的一端被迫斷開連接,至此通信結束

網絡傳輸

OSI七層網絡模型

在網絡歷史的早期,國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)共同出版了開放系統互聯的七層參考模型。一臺計算機操作系統中的網絡過程包括從應用請求(在協議棧的頂部)到網絡介質(底部) ,OSI參考模型把功能分成七個分立的層次。

特點:

  1. 人們可以很容易的討論和學習協議的規範細節。

  2. 層間的標準接口方便了工程模塊化。

  3. 創建了一個更好的互連環境。

  4. 降低了複雜度,使程序更容易修改,產品開發的速度更快。

  5. 每層利用緊鄰的下層服務,更容易記住個層的功能。

網絡模型

網絡編程的本質是兩個設備之間的數據交換,當然,在計算機網絡中,設備主要指計算機。數據傳遞本身沒有多大的難度,不就是把一個設備中的數據發送給另外一個設備,然後接受另外一個設備反饋的數據。

現在的網絡編程基本上都是基於請求/響應方式的,也就是一個設備發送請求數據給另外一個,然後接收另一個設備的反饋。

在網絡編程中,發起連接程序,也就是發送第一次請求的程序,被稱作客戶端(Client),等待其他程序連接的程序被稱作服務器(Server)。客戶端程序可以在需要的時候啓動,而服務器爲了能夠時刻相應連接,則需要一直啓動。例如以打電話爲例,首先撥號的人類似於客戶端,接聽電話的人必須保持電話暢通類似於服務器。

連接一旦建立以後,客戶端和服務器端就可以進行數據傳遞了,而且兩者的身份是等價的。

在一些程序中,程序既有客戶端功能也有服務器端功能,最常見的軟件就是BT、emule這類軟件了。

IP地址與域名

在現實生活中,如果要打電話則需要知道對應人的電話號碼,如果要寄信則需要知道收信人的地址。在網絡中也是這樣,需要知道一個設備的位置,則需要使用該設備的IP地址,具體的連接過程由硬件實現,程序員不需要過多的關心。

IP地址是一個規定,現在使用的是IPv4,既由4個0-255之間的數字組成,在計算機內部存儲時只需要4個字節即可。在計算機中,IP地址是分配給網卡的,每個網卡有一個唯一的IP地址,如果一個計算機有多個網卡,則該臺計算機則擁有多個不同的IP地址,在同一個網絡內部,IP地址不能相同。IP地址的概念類似於電話號碼、身份證這樣的概念。

由於IP地址不方便記憶,所以有專門創造了域名(Domain Name)的概念,其實就是給IP取一個字符的名字,例如163.com、sina.com等。IP和域名之間存在一定的對應關係。如果把IP地址類比成身份證號的話,那麼域名就是你的姓名。

其實在網絡中只能使用IP地址進行數據傳輸,所以在傳輸以前,需要把域名轉換爲IP,這個由稱作DNS的服務器專門來完成。

所以在網絡編程中,可以使用IP或域名來標識網絡上的一臺設備。

端口的概念

爲了在一臺設備上可以運行多個程序,人爲的設計了端口(Port)的概念,類似的例子是公司內部的分機號碼。

規定一個設備有216個,也就是65536個端口,每個端口對應一個唯一的程序。每個網絡程序,無論是客戶端還是服務器端,都對應一個或多個特定的端口號。由於0-1024之間多被操作系統佔用,所以實際編程時一般採用1024以後的端口號。

使用端口號,可以找到一臺設備上唯一的一個程序。所以如果需要和某臺計算機建立連接的話,只需要知道IP地址或域名即可,但是如果想和該臺計算機上的某個程序交換數據的話,還必須知道該程序使用的端口號。

Socket/TCP五層網絡模型圖

TCP和UDP區別

UDP:

  1. 面向無連接,將數據及源封裝在數據包中,不需要建立連接

  2. 每個數據報的大小限制在64K內

  3. 因無連接,是不可靠協議

  4. 不需要連接連接,速度快

TCP:

  1. 建立連接,形成傳輸數據的通道

  2. 在連接中進行大數據量傳輸,以字節流的形式

  3. 通過三次握手(四次揮手)完成連接,是可靠協議

  4. 必須建立連接,效率會稍低

TCP和UDP協議不互通喲!!!!!

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