文章分享至我的個人技術部落格:
socket
翻譯過來中文稱為套接字
, 這裡我找到了一段比較官方的解釋socket
是什麼東西:
在實際當中, 肯定是不止乙個socket
是通訊的基石,是支援tcp/ip
協議的網路通訊的基本操作單元,包含進行網路通訊必須的五種資訊:連線使用的協議
,本地主機的ip位址
,本地程序的協議埠
,遠地主機的ip位址
,遠地程序的協議埠
。
tcp/ip
或者是乙個應用程式程序在傳輸資料, 為了可以區分開來, 系統提供了一套api
, 方便tcp/ip
與應用程式互動, 一般把這個稱為socket api
.
醬紫應用層可以和傳輸層通過這個socket api
, 區分來自不同的應用程式程序或者是網路通訊, 使得資料可以併發傳輸.
socket
的使用其實也沒有我們想象中那麼難, 只是這裡需要有乙個前提條件, 因為建立socket
通訊是至少需要一對套接字
, 其中乙個是執行在我們的客戶端上, 稱為client socket
, 還有乙個是執行在伺服器上, 稱為service socket
.
socket
之間的連線過程分為三個過程:
socket
同時支援tcp
和udp
兩種傳輸協議, 啥意思呢?
當socket
使用tcp
協議通訊的時候,socket
就是乙個tcp
的連線, 那麼如果socket
使用的是udp
協議通訊, 那麼這時候的socket
就是udp
連線.
如果要有圖的話, 大概就這樣了:
既然降到socket
, 那麼就要說說網路裡面的協議, 這裡就要普及一下網路裡面的到底都有啥, 首先我們要知道, 在網路裡面一共有七層協議
.
從上往下分的話:
但我們通常會把底下三層(網路層
,資料鏈路層
,物理層
)統稱為**層
, 一般都是專門搞網路的網路工程師大神們研究的物件.
而上面四層(傳輸層
,會話層
,表示層
,應用層
)被稱為主機層
, 也是廣大使用者所面向和關心的內容.
說到協議, 我們就不得不提一下http
:
而http
協議是基於tcp
連線的, 所以三者根本就沒啥可比性.
而socket
是應用層
與tcp/ip
協議族通訊中間的軟體抽象層, 是它的一組介面.
既然都提到了tcp/ip
這個協議, 那麼就來講講,tcp/ip
裡的五層模型.
這裡面的五層模型分別為:
那麼我們日常生活中所接觸到的網路器材有哪些? 分別處於哪個模型?
其中tcp/ip
的應用層
比較特殊, 它是包含了會話層
,表達層
,應用層
等功能, 這裡要說一點,tcp/ip
協議並不能在傳輸層總是保證可靠的傳輸資料報, 但七層模型可以做到.
tcp/ip
還提供了另一種傳輸模式, 叫做udp(使用者資料報協議)
, 但這種協議不能保證可靠的資料報傳輸.
這裡再解釋一下:
總的來說tcp
是乙個資料流的模式協議, 而udp
是一種資料報模式的協議.
剛剛說了socket
是基於tcp/ip
協議上的抽象, 也就是說socket
只是對tcp/ip
的封裝, 本身是沒有協議的, 只有通過socket api
, 我們才能夠使用tcp/ip
協議.
大概的關係圖就是醬紫吧:
碼字很費腦, 看官賞點飯錢可好
玩轉iOS開發 NSURLSession講解 三
文章分享至我的個人技術部落格 雖然前面兩講都是說了nsurlsession的一些理論上的知識,但我們現在起碼對nsurlsession有個大概的了解,並不會像一開始的那樣,一臉懵逼的看著,這個請求是什麼鬼,那個方法是什麼鬼,task是什麼東西,如果沒有去看的朋友們可以去看看前面兩講玩轉ios開發 n...
iOS的Asyncsocket進行socket程式設計
iphone的標準推薦cfnetwork c庫程式設計.但是程式設計比較煩躁。在其它os往往用類來封裝的對socket函式的處理。比如mfc的casysncsocket.在iphone也有類似於開源專案.cocoa asyncsocket庫,官方 它用來簡化cfnetwork的呼叫.一.在專案引入a...
玩轉iOS開發 《iOS設計模式 觀察者模式》
文章轉至 這幾天在搗鼓新專案,在用通知中心的時候突然想到自己用了那麼久的通知中心,為啥不自己動手實現乙個呢?說幹就幹,於是乎就研究通知中心的原理,當然包括 kvo,這些都是基於觀察者模式 實現的,既然知道了原理,我們就do it 最後 工廠模式,如果覺得好的話,希望大家也可以打賞一下 嘻嘻 祝大家學...