iOS:即時通訊之<瞭解篇 SocKet>

來源:互聯網
上載者:User

標籤:net   密碼   登入   資料庫應用   連接埠號碼   應用程式層   auto   語言   攻擊   

什麼是socket? 

 

電腦專業術語就是:

網路上的兩個程式通過一個雙向的通訊串連實現資料的交換,這個串連的一端稱為一個socket。Socket的英文原義是“孔”或“插座”。作為BSD UNIX的進程通訊機制,取後一種意思。通常也稱作"通訊端",用於描述IP地址和連接埠,是一個通訊鏈的控制代碼,可以用來實現不同虛擬機器或不同電腦之間的通訊。在Internet上的主機一般運行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Socket,並綁定到一個連接埠上,不同的連接埠對應於不同的服務。Socket正如其英文原意那樣,像一個多孔插座。一台主機猶如布滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務

通俗語:

Socket稱"通訊端”

網路上的兩個程式通過一個雙向的通訊串連實現資料的交換,這個串連的一端稱為一個socket端,平時我們向伺服器發送一個網路請求,然後伺服器響應請求,返回伺服器資料應用程式通常通過"通訊端"向網路發出請求或者應答網路請求


 

細節:

1.Socket相當於一個“管道”或者說“隧道”兩邊的串連,一個進入,一個出來

2.使用者名稱和密碼是儲存在伺服器的資料庫中

3.我們要保證用戶端程式是訪問web應用程式還是資料庫應用程式呢?就是通過連接埠號碼

網路通訊要素:

1.網路上的請求就是通過Socket來建立串連然後互相通訊

2.IP地址(網路上主機裝置的唯一標識)(尋找伺服器的主機)

3.連接埠號碼(定位程式)

4.用於標示進程(一個程式就是一個進程)的邏輯地址,不同進程的標示

5.有效連接埠:0~65535,其中0~1024由系統使用或者保留連接埠,開發中建議使用1024以上的連接埠

6.傳輸協議(用什麼樣的方式進行互動)(方式就是TCP和UDP需要還是不需要建立串連。就像快遞一樣,像順豐或者是圓通就是一個方式)

7.通訊的規則 (常見協議:TCP、UDP)

TCP:
 三向交握,是為了資料的安全性和可靠性  比如打電話:

第一次握手:先撥過去

第二次握手:對方“喂”了一聲,響應一下,

第三向交握:我聽到對方之後,也說了一句“喂” ,響應。

只有這三個步驟,別人餵了一聲,你也餵了一聲,它能聽到我的響應,我還能聽到它的響應才是成功的。假如借錢,這樣才能保證了安全性和可靠性

1.必須建立串連,效率會稍低(每一次都要建立串連)

2.進行了多少次HTTP請求,就進行了多少次三向交握(HTTP是效率低低些,但是影響不大,因為使用者下次發送網路請求的時間不固定,所以沒有多大影響)(打電話如果一直保持,電話費不就多了嗎)

3.HTTP就是每發送一次請求,就建立一次TCP串連,三向交握

 

UDP:
 

將資料及源和目的封裝成資料包中,不需要建立串連(就像老師(源)螢幕廣播,就及時的把資料同步發送到你的電腦上(目的),直接發送。假如網路斷了,再次看到螢幕的時候,只能看到最新的內容。沒了就沒了,錯過了就錯過了)

每個資料報的大小限制在64Kb之內(首先是即時的,如果資料弄大點,如果出問題,就不會有太大的破壞)

因為無需串連,因此是不可靠協議(省去了三向交握,效能就高了)

不需要建立串連,速度快

 

 

應用:
 Socket通訊流程圖:

 


 

 

1.bind()就是綁定連接埠      (伺服器要有連接埠標識自己)

2.listen()就是監聽連接埠看有沒有lianjie過來,我同意就接受串連      (假如用戶端要串連web應用程式連接埠,就要監聽80連接埠。假如是惡意攻擊,多次並發請求,會造成網路阻塞,那我就可以斷開你的串連)

3.accept()

4.write()用戶端發請求

5.read()服務端接受請求

 


 

假如用戶端發送登入請求,我伺服器是要做出來請求的,伺服器要做回應資料,發資料給用戶端,做一個write()寫的操作一個HTTP的請求完了後,接下有個操作,結束串連。因為下次請求的時間是不固定的。就做一個close()操作

HTTP的底層就通過Socket建立串連通訊管道,實現資料的傳輸

HTTP是一個TCP的傳輸協議(方式),它是一個可靠的安全的協議

 

實現Socket服務端監聽方法:

1:實現socket的監聽方法就是使用C語言實現(系統預設就有,但是麻煩)

2:使用CocoaAsyncSocket第三方框(是OC的),內部是對C的封裝,耗時操作肯定是耗時的,開發的時候,我們也是用的這個架構

3:Telnet命令 telnet host port/telnet 192.168.10.10 5288  telnet命令是串連伺服器上的某個連接埠對應的服務

Socket層上的協議:

1.Socket層上的協議指的資料轉送的格式:


 

2:HTTP協議(類似於字典的協議)


 

3:XMPP協議(是一款即時通訊協議(目的是定義資料轉送的格式)


 

4:自訂即時通訊協議,json格式


 

 

 

補充:TCP、UDP、HTTP、SOCKET之間的區別

IP:網路層協議;

TCP和UDP:傳輸層協議;

HTTP:應用程式層協議;

SOCKET:TCP/IP網路的API。

TCP/IP代表傳輸控制通訊協定/網際協議,指的是一系列協議。

TCP和UDP使用IP協議從一個網路傳送資料包到另一個網路。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,檔案傳輸通訊協定FTP這樣的協議等。

TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協議。雖然TCP和UDP都是用來傳輸其他協議的,它們卻有一個顯著的不同:TCP提供有保證的資料轉送,而UDP不提供。這意味著TCP有一個特殊的機制來確保資料安全的不出錯的從一個端點傳到另一個端點,而UDP不提供任何這樣的保證。

HTTP(超文字傳輸通訊協定 (HTTP))是利用TCP在兩台電腦(通常是Web伺服器和用戶端)之間傳輸資訊的協議。用戶端使用Web瀏覽器發起HTTP請求給Web伺服器,Web伺服器發送被請求的資訊給用戶端。

記住,需要IP協議來串連網路;TCP是一種允許我們安全傳輸資料的機制,,使用TCP協議來傳輸資料的HTTP是Web伺服器和用戶端使用的特殊協議。

Socket 介面是TCP/IP網路的API,Socket介面定義了許多函數或常式,用以開發TCP/IP網路上的應用程式。



文/iOS開發到放棄(簡書作者)
原文連結:http://www.jianshu.com/p/3167802eb1e5

iOS:即時通訊之<瞭解篇 SocKet>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.