第二章-用電信號傳輸TCP/IP數(shù)據(jù)-探索協(xié)議棧和網(wǎng)卡

TCP/IP采用分層結(jié)構(gòu)冒嫡,上層委托下層:


圖片發(fā)自簡書App

瀏覽器郵件等一般應(yīng)用程序收發(fā)數(shù)據(jù)時(shí)使用TCP四苇,DNS查詢等收發(fā)較短的控制數(shù)據(jù)時(shí)使用UDP。

協(xié)議棧的下半部分是IP協(xié)議月腋,IP協(xié)議控制網(wǎng)絡(luò)包收發(fā)操作的部分榆骚,在互聯(lián)網(wǎng)上傳輸數(shù)據(jù)時(shí),數(shù)據(jù)會被切分成一個(gè)個(gè)的網(wǎng)絡(luò)包妓肢,而將網(wǎng)絡(luò)包發(fā)送給通信對象的操作就是由IP來完成。IP中還包括ICMP協(xié)議和ARP協(xié)議纲缓,ICMP:用于告知網(wǎng)絡(luò)包傳送過程中產(chǎn)生的錯(cuò)誤以及各種控制信息喊废,ARP用于根據(jù)IP地址查詢相應(yīng)的以太網(wǎng)MAC地址。

套接字的實(shí)體就是通信控制信息

協(xié)議棧在執(zhí)行操作時(shí)會參閱這些控制信息工闺。協(xié)議棧是根據(jù)套接字中記錄的控制信息來工作的瓣蛀。


圖片發(fā)自簡書App

調(diào)用Socket時(shí)的操作

  1. 申請創(chuàng)建套接字。
  2. 協(xié)議棧會分配用于存放套接字的所需的內(nèi)存空間遍搞。


    圖片發(fā)自簡書App
創(chuàng)建套接字時(shí)器腋,首先分配一個(gè)套接字所需的內(nèi)存空間钩杰,然后向其寫入初始狀態(tài)诊县。

連接服務(wù)器

套接字剛創(chuàng)建完成的時(shí)候,里面并沒有存放任何數(shù)據(jù)避除,也不知道到通信對象是誰胸嘁。

因此,我們需要把服務(wù)器的IP地址和端口號等信息告知協(xié)議棧群井,這是連接的操作目的之一

服務(wù)器不知道要跟誰通信毫胜,因此需要讓客戶端向服務(wù)器告知必要的信息。

因此酵使,客戶端向服務(wù)器傳達(dá)開始通信的請求,也是連接操作的目的目的之一

連接實(shí)際上是通信雙方交換控制信息样屠。當(dāng)執(zhí)行數(shù)據(jù)收發(fā)操作時(shí)搓劫,還需要一塊用來臨時(shí)存儲要收發(fā)的數(shù)據(jù)的內(nèi)存空間混巧,這塊內(nèi)存空間稱為緩沖區(qū)。

圖片發(fā)自簡書App
應(yīng)用程序傳遞來的信息以及從通信對象接收到的信息都會保存在套接字中
圖片發(fā)自簡書App

通信操作中使用的控制信息分為兩類:

頭部中記錄的信息(如:TCP頭部)
套接字中記錄的信息 (如:IP地址和端口號)

連接操作的實(shí)際過程

這個(gè)過程是從App調(diào)用Socket庫的connect開始。

connect (<描述符>傍衡,<服務(wù)器IP地址和端口號>)

接下來,這些信息傳遞給協(xié)議棧中的TCP模塊蛙埂,然后绣的,TCP模塊會與該服務(wù)器的TCP模塊交換控制信息:

  1. 客戶端創(chuàng)建一個(gè)包含開始數(shù)據(jù)收發(fā)操作的控制信息的頭部欲账。頭部包含很多字段芭概,這里重點(diǎn)關(guān)注發(fā)送方和接收方的端口號,然后將SYN比特設(shè)置為1罢洲。此外還需設(shè)置適當(dāng)?shù)男蛱柡痛翱诖笮 ?/li>
  2. 當(dāng)TCP頭部創(chuàng)建好之后,接下來TCP模塊會將信息傳遞給IP模塊并委托它發(fā)送殿较。
  3. 服務(wù)器的IP模塊接收到后桩蓉,將數(shù)據(jù)傳遞給TCP模塊。服務(wù)器的TCP模塊根據(jù)TCP的頭部信息找到端口號對應(yīng)的套接字帚戳,找到之后儡首,在套接字中寫入相應(yīng)信息,并將狀態(tài)改為正在連接蔬胯。
  4. 上述操作完成后,服務(wù)器會返回響應(yīng)产场。整個(gè)過程和客戶端一樣(發(fā)送方和接收方的端口號舞竿,然后將SYN比特設(shè)置為1),除此之外确徙,還需將ACK標(biāo)志位設(shè)置為1执桌,表示已接收到網(wǎng)絡(luò)包鄙皇。(如果因?yàn)槟承┰蚍?wù)器不接受連接伴逸,那么將不設(shè)置SYN膘壶,而是將RST設(shè)置為1)
  5. 然后網(wǎng)絡(luò)包返回到客戶端博烂,如果SYN為1漱竖,表示連接成功,這時(shí)會向套接字中寫入服務(wù)器的IP地址和端口號等信息馍惹,同時(shí)將狀態(tài)設(shè)為連接完畢万矾。
  6. 到這里客戶端的操作已經(jīng)完成悼吱。(其實(shí)還剩下最后一個(gè)步驟良狈,客戶端將ACK設(shè)為1并發(fā)回給服務(wù)器薪丁,告訴服務(wù)器剛才的響應(yīng)包已收到)。當(dāng)服務(wù)器收到這個(gè)返回包時(shí)严嗜,連接操作才算全部完成。

建立連接之后茄蚯,協(xié)議棧的連接操作就結(jié)束了睦优,也就是說connect操作執(zhí)行完畢,控制流程交給App

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皱碘,一起剝皮案震驚了整個(gè)濱河市衡未,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖绊诲,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂之,死亡現(xiàn)場離奇詭異脆丁,居然都是意外死亡动雹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門歼培,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茸塞,“玉大人,你說我怎么就攤上這事噪窘⌒ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵菌仁,是天一觀的道長掘托。 經(jīng)常有香客問我,道長闪盔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任听绳,我火速辦了婚禮异赫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鼠证。我一直安慰自己靠抑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布荠列。 她就那樣靜靜地躺著,像睡著了一般肌似。 火紅的嫁衣襯著肌膚如雪费就。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天川队,我揣著相機(jī)與錄音力细,去河邊找鬼。 笑死呼寸,一個(gè)胖子當(dāng)著我的面吹牛艳汽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播对雪,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼河狐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瑟捣?” 一聲冷哼從身側(cè)響起馋艺,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捐祠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桑李,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踱蛀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贵白。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片率拒。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖禁荒,靈堂內(nèi)的尸體忽然破棺而出猬膨,到底是詐尸還是另有隱情,我是刑警寧澤呛伴,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布勃痴,位于F島的核電站,受9級特大地震影響热康,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褐隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一污它、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧庶弃,春花似錦、人聲如沸葬毫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至评腺,卻和暖如春帘瞭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒿讥。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工蝶念, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芋绸。 一個(gè)月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓媒殉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親侥钳。 傳聞我的和親對象是個(gè)殘疾皇子适袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355