委托協(xié)議棧發(fā)送消息

1.1 數(shù)據(jù)收發(fā)數(shù)據(jù)概覽

知道了IP地址犁嗅,就可以委托操作系統(tǒng)內(nèi)部的協(xié)議棧向這個(gè)目標(biāo)IP地址敛瓷,也就是要訪問的Web服務(wù)器發(fā)送消息。這一過程需要按照指定的順序來調(diào)用Socket庫中的程序組件。收發(fā)數(shù)據(jù)的兩臺(tái)計(jì)算機(jī)之間連接了一條數(shù)據(jù)通道,數(shù)據(jù)的流動(dòng)是雙向的搭幻。要建立連接的通道,需要向建立通道兩端的數(shù)據(jù)出入口逞盆,這些出入口稱為套接字檀蹋。

8AF99E8A1751C5A5280AD1E14A39BA08.png

首先,服務(wù)器一方先創(chuàng)建套接字云芦,然后等待客戶端向該套接字連接管道俯逾。當(dāng)服務(wù)器進(jìn)入等待狀態(tài)時(shí),客戶端就可以連接管道焕数。客戶端也會(huì)創(chuàng)建一個(gè)套接字刨啸,然后從該套接字延伸出管道堡赔,最后管道連接到服務(wù)器端的套接字上。連接是客戶端發(fā)起设联,但是斷開時(shí)可以由客戶端或者服務(wù)器任意一方發(fā)起善已。一方斷開,另一方也會(huì)隨之?dāng)嚅_离例,當(dāng)管道斷開后换团,套接字也會(huì)被刪除。

收發(fā)數(shù)據(jù)可以分為以下4個(gè)階段:

  • 1 創(chuàng)建套接字(創(chuàng)建套接字階段)
  • 2 將管道連接到服務(wù)器的套接字上(連接階段connect)
  • 3 收發(fā)數(shù)據(jù)(通信階段write,read)
  • 4 斷開管道并刪除套接字(斷開階段close)

?創(chuàng)建套接字階段:創(chuàng)建套接字是調(diào)用Socket庫中的socket程序組件宫蛆,如同調(diào)用解析器向DNS服務(wù)器查詢IP一樣艘包。創(chuàng)建完成后的猛,協(xié)議棧會(huì)返回一個(gè)描述符,描述符是用來識(shí)別不同套接字的想虎。計(jì)算機(jī)可以同時(shí)進(jìn)行多個(gè)數(shù)據(jù)的通信操作卦尊,比如打開兩個(gè)個(gè)瀏覽器窗口可能就是訪問兩臺(tái)Web服務(wù)器,也就是需要?jiǎng)?chuàng)建兩個(gè)不同的套接字舌厨。應(yīng)用程序是通過描述符來設(shè)別套接字的岂却。

連接階段:通過調(diào)用Socket庫中connect的程序組件來完成。調(diào)用connect時(shí)裙椭,需要指定描述符躏哩、服務(wù)器IP地址和端口號(hào)3個(gè)參數(shù)。
IP地址是為了區(qū)分網(wǎng)絡(luò)中各個(gè)計(jì)算機(jī)而分配的數(shù)值揉燃。但是扫尺,連接操作的對象是某個(gè)具體的套接字,而端口號(hào)就是用來讓通信的另一方能夠識(shí)別出套接字的機(jī)制你雌。描述符則是用來在一臺(tái)計(jì)算機(jī)內(nèi)部識(shí)別套接字的機(jī)制器联。當(dāng)同時(shí)指定IP地址和端口號(hào)時(shí),就可以明確識(shí)別出某臺(tái)具體的計(jì)算機(jī)上的某個(gè)具體的套接字婿崭。服務(wù)器上所使用的端口號(hào)是根據(jù)應(yīng)用的種類事先規(guī)定好的拨拓,比如Web是80號(hào)端口,電子郵件是25號(hào)端口氓栈。

總結(jié):描述符:應(yīng)用程序用來識(shí)別套接字的機(jī)制渣磷。IP地址和端口號(hào):客戶端和服務(wù)器之間用來識(shí)別對方套接字的機(jī)制。

通信階段:根據(jù)用戶輸入的網(wǎng)址生成HTTP請求消息就是我們要發(fā)送的數(shù)據(jù)授瘦。接下來調(diào)用Socket庫的write組件時(shí)醋界,需要指定描述符和發(fā)送數(shù)據(jù),然后協(xié)議棧就會(huì)將數(shù)據(jù)發(fā)送到服務(wù)器提完。接下來形纺,服務(wù)器執(zhí)行接收操作,解析收到的數(shù)據(jù)內(nèi)容并執(zhí)行相應(yīng)的操作徒欣,向客戶端返回響應(yīng)消息逐样。當(dāng)消息返回后,客戶端接收消息的操作是通過Socket庫中的read程序組件委托協(xié)議棧來完成打肝。read負(fù)責(zé)將接收到的響應(yīng)消息存放到接收緩沖區(qū)中脂新。

斷開階段:當(dāng)瀏覽器收到數(shù)據(jù)后,收發(fā)數(shù)據(jù)的過程就結(jié)束了粗梭。接下來争便,需要調(diào)用Socket庫的close程序組件進(jìn)入斷開階段。最終断医,連接的套接字之間的通道和套接字本身都會(huì)被刪除滞乙。


A6E47D5540730125EB2A85FA92DC42C6.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奏纪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酷宵,更是在濱河造成了極大的恐慌亥贸,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浇垦,死亡現(xiàn)場離奇詭異炕置,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)男韧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門朴摊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人此虑,你說我怎么就攤上這事甚纲。” “怎么了朦前?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵介杆,是天一觀的道長。 經(jīng)常有香客問我韭寸,道長春哨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任恩伺,我火速辦了婚禮赴背,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晶渠。我一直安慰自己凰荚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布褒脯。 她就那樣靜靜地躺著便瑟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪番川。 梳的紋絲不亂的頭發(fā)上到涂,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音爽彤,去河邊找鬼养盗。 笑死缚陷,一個(gè)胖子當(dāng)著我的面吹牛适篙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箫爷,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嚷节,長吁一口氣:“原來是場噩夢啊……” “哼聂儒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硫痰,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤衩婚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后效斑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體非春,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年缓屠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奇昙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敌完,死狀恐怖储耐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滨溉,我是刑警寧澤什湘,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站晦攒,受9級(jí)特大地震影響闽撤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勤家,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一腹尖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伐脖,春花似錦热幔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蠕啄,卻和暖如春场勤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歼跟。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工和媳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哈街。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓留瞳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骚秦。 傳聞我的和親對象是個(gè)殘疾皇子她倘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 1.4.1 數(shù)據(jù)收發(fā)操作概覽 向操作系統(tǒng)內(nèi)部的協(xié)議棧發(fā)出委托時(shí)璧微,需要按照指定的順序來調(diào)用Socket庫中的程序組件...
    ShutLove閱讀 146評(píng)論 0 0
  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 2,951評(píng)論 0 14
  • 1屹电、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)跃巡、lso...
    北辰青閱讀 9,437評(píng)論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嗤详,服務(wù)發(fā)現(xiàn),斷路器瓷炮,智...
    卡卡羅2017閱讀 134,699評(píng)論 18 139
  • 走過多少風(fēng)風(fēng)雨雨娘香, 又怎在乎閑言碎語苍狰, 看過多少明爭暗斗, 又怎輕易隨波逐流烘绽, 星空的璀璨淋昭, 是因?yàn)橐沟牟痪芙^, ...
    Shawn李帥閱讀 509評(píng)論 0 1