iOS Socket編程(一)基本概念

iOS Socket編程(一)基本概念
iOS Socket編程(二)TCP三次握手,四次揮手
iOS Socket編程(三)Socket與HTTP的區(qū)別
iOS Socket編程(四) Socket具體使用

Socket的解釋

Socket翻譯過(guò)來(lái)中文稱為套接字, 這里我找到了一段比較官方的解釋Socket是什么東西:

Socket是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元草雕,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議驴一,本地主機(jī)的IP地址啤呼,本地進(jìn)程的協(xié)議端口局服,遠(yuǎn)地主機(jī)的IP地址磷仰,遠(yuǎn)地進(jìn)程的協(xié)議端口优炬。

在實(shí)際當(dāng)中, 肯定是不止一個(gè)TCP/IP或者是一個(gè)應(yīng)用程序進(jìn)程在傳輸數(shù)據(jù), 為了可以區(qū)分開(kāi)來(lái), 系統(tǒng)提供了一套API, 方便TCP/IP與應(yīng)用程序交互, 一般把這個(gè)稱為Socket API.
醬紫應(yīng)用層可以和傳輸層通過(guò)這個(gè)Socket API, 區(qū)分來(lái)自不同的應(yīng)用程序進(jìn)程或者是網(wǎng)絡(luò)通信, 使得數(shù)據(jù)可以并發(fā)傳輸.

Socket的C/S端

Socket的使用其實(shí)也沒(méi)有我們想象中那么難, 只是這里需要有一個(gè)前提條件, 因?yàn)榻ocket通信是至少需要一對(duì)套接字, 其中一個(gè)是運(yùn)行在我們的客戶端上, 稱為Client Socket, 還有一個(gè)是運(yùn)行在服務(wù)器上, 稱為Service Socket.
Socket之間的連接過(guò)程分為三個(gè)過(guò)程:

  • 服務(wù)器監(jiān)聽(tīng)
  • 客戶端請(qǐng)求
  • 連接確認(rèn)

Socket同時(shí)支持TCP和UDP兩種傳輸協(xié)議, 啥意思呢?
當(dāng)Socket使用TCP協(xié)議通信的時(shí)候, Socket就是一個(gè)TCP的連接, 那么如果Socket使用的是UDP協(xié)議通信, 那么這時(shí)候的Socket就是UDP連接.
如果要有圖的話, 大概就這樣了:

socket連接過(guò)程.png

網(wǎng)絡(luò)的協(xié)議

既然講到Socket, 那么就要說(shuō)說(shuō)網(wǎng)絡(luò)里面的協(xié)議, 這里就要普及一下網(wǎng)絡(luò)里面的到底都有啥, 首先我們要知道, 在網(wǎng)絡(luò)里面一共有七層協(xié)議.

從上往下分的話:

  • 應(yīng)用層
  • 表達(dá)層
  • 會(huì)話層
  • 傳輸層
  • 網(wǎng)絡(luò)層
  • 數(shù)據(jù)鏈路層
  • 物理層

但我們通常會(huì)把底下三層(網(wǎng)絡(luò)層, 數(shù)據(jù)鏈路層, 物理層)統(tǒng)稱為媒體層, 一般都是專門搞網(wǎng)絡(luò)的網(wǎng)絡(luò)工程師大神們研究的對(duì)象.

而上面四層(傳輸層, 會(huì)話層, 表示層, 應(yīng)用層)被稱為主機(jī)層, 也是廣大用戶所面向和關(guān)心的內(nèi)容.

說(shuō)到協(xié)議, 我們就不得不提一下HTTP:

  • HTTP協(xié)議: 它是對(duì)應(yīng)著應(yīng)用層.
  • TCP協(xié)議: 它是對(duì)應(yīng)著傳輸層.
  • IP協(xié)議: 則對(duì)應(yīng)著網(wǎng)絡(luò)層.

而HTTP協(xié)議是基于TCP連接的, 所以三者根本就沒(méi)啥可比性.

  • TCP/IP協(xié)議: 屬于傳輸層協(xié)議, 主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸.
  • HTTP協(xié)議: 屬于應(yīng)用層, 主要解決如何包裝數(shù)據(jù).

而Socket是應(yīng)用層與TCP/IP協(xié)議族通信中間的軟件抽象層, 是它的一組接口.

TCP/IP五層模型

既然都提到了TCP/IP這個(gè)協(xié)議, 那么就來(lái)講講, TCP/IP里的五層模型.

這里面的五層模型分別為:

  • 應(yīng)用層
  • 傳輸層
  • 網(wǎng)絡(luò)層
  • 數(shù)據(jù)鏈路層
  • 物理層
TCP:IP五層模型.png

那么我們?nèi)粘I钪兴佑|到的網(wǎng)絡(luò)器材有哪些? 分別處于哪個(gè)模型?

  • 物理層: 中繼器, 集線器, 雙絞線
  • 數(shù)據(jù)鏈路層: 以太網(wǎng)交換機(jī)(Modem), 網(wǎng)卡(網(wǎng)卡有一半是工作在物理層)
  • 網(wǎng)絡(luò)層: 路由器, 三層交換機(jī)
  • 傳輸層: 四層交換機(jī), 路由器(也有一些特殊的路由器在傳輸層中工作)

其中TCP/IP的應(yīng)用層比較特殊, 它是包含了會(huì)話層, 表達(dá)層, 應(yīng)用層等功能, 這里要說(shuō)一點(diǎn), TCP/IP協(xié)議并不能在傳輸層總是保證可靠的傳輸數(shù)據(jù)包, 但七層模型可以做到.
TCP/IP還提供了另一種傳輸模式, 叫做UDP(用戶數(shù)據(jù)報(bào)協(xié)議), 但這種協(xié)議不能保證可靠的數(shù)據(jù)包傳輸.

這里再解釋一下:

  • TCP: 面向連接, 提供可靠的數(shù)據(jù)傳輸, 用于傳輸大量數(shù)據(jù), 使用數(shù)據(jù)流模式, 速度慢, 建立連接時(shí)開(kāi)銷較大
  • UDP: 非面向連接, 傳輸不可靠, 用于傳輸少量的數(shù)據(jù), 速度快

總的來(lái)說(shuō)TCP是一個(gè)數(shù)據(jù)流的模式協(xié)議, 而UDP是一種數(shù)據(jù)報(bào)模式的協(xié)議.
剛剛說(shuō)了Socket是基于TCP/IP協(xié)議上的抽象, 也就是說(shuō)Socket只是對(duì)TCP/IP的封裝, 本身是沒(méi)有協(xié)議的, 只有通過(guò)Socket API, 我們才能夠使用TCP/IP協(xié)議.
大概的關(guān)系圖就是醬紫吧:

socket與TCP:IP的關(guān)系.png

總結(jié)

這篇文章雖然不涉及任何的代碼, 但都是一些必備的基礎(chǔ)知識(shí), 如果想更詳細(xì)的了解或者是找更官方的文檔, 可以去看看蘋果爸爸提供的Networking Overview這篇文章.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颁井,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蠢护,更是在濱河造成了極大的恐慌雅宾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葵硕,死亡現(xiàn)場(chǎng)離奇詭異眉抬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)懈凹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蜀变,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人介评,你說(shuō)我怎么就攤上這事库北。” “怎么了们陆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寒瓦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棒掠,道長(zhǎng)孵构,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任烟很,我火速辦了婚禮颈墅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雾袱。我一直安慰自己恤筛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布芹橡。 她就那樣靜靜地躺著毒坛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上煎殷,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天屯伞,我揣著相機(jī)與錄音,去河邊找鬼豪直。 笑死劣摇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弓乙。 我是一名探鬼主播末融,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼暇韧!你這毒婦竟也來(lái)了勾习?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤懈玻,失蹤者是張志新(化名)和其女友劉穎巧婶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酪刀,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粹舵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了骂倘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眼滤。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖历涝,靈堂內(nèi)的尸體忽然破棺而出诅需,到底是詐尸還是另有隱情,我是刑警寧澤荧库,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布堰塌,位于F島的核電站,受9級(jí)特大地震影響分衫,放射性物質(zhì)發(fā)生泄漏场刑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一蚪战、第九天 我趴在偏房一處隱蔽的房頂上張望牵现。 院中可真熱鬧,春花似錦邀桑、人聲如沸瞎疼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)贼急。三九已至茅茂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間太抓,已是汗流浹背空闲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留走敌,地道東北人进副。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像悔常,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子给赞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1机打、TCP為什么需要3次握手,4次斷開(kāi)片迅? “三次握手”的目的是“為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端...
    杰倫哎呦哎呦閱讀 3,486評(píng)論 0 6
  • 1.這篇文章不是本人原創(chuàng)的残邀,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,077評(píng)論 6 174
  • 個(gè)人認(rèn)為柑蛇,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記芥挣,這雖然只是...
    貳零壹柒_fc10閱讀 5,060評(píng)論 0 8
  • 簡(jiǎn)介 用簡(jiǎn)單的話來(lái)定義tcpdump,就是:dump the traffic on a network耻台,根據(jù)使用者...
    保川閱讀 5,961評(píng)論 1 13
  • 我第一次見(jiàn)到l小姐時(shí)空免,她正陷入一場(chǎng)空前的情殤。戀愛(ài)一年的男友宣布分手盆耽,然她蹋砚,半點(diǎn)心理準(zhǔn)備都沒(méi)有。l小姐對(duì)我說(shuō):真不...
    李軼男閱讀 3,132評(píng)論 1 3