【大話存儲(chǔ)】學(xué)習(xí)筆記(11章)场钉,TCP/IP

TCP/IP協(xié)議

以太網(wǎng)的出現(xiàn),給系統(tǒng)的互聯(lián)帶來(lái)方便的方式懈涛,每個(gè)節(jié)點(diǎn)安裝一塊以太網(wǎng)適配器逛万,上層程序只要將發(fā)送的數(shù)據(jù)以及目的MAC地址告訴以太網(wǎng)卡,就可以完成通信過(guò)程批钠。

但是實(shí)際上宇植,以太網(wǎng)不能直接被應(yīng)用程序用來(lái)收發(fā)數(shù)據(jù)的,因?yàn)橐蕴W(wǎng)是一個(gè)沒(méi)有傳輸保障的網(wǎng)絡(luò)埋心。

表現(xiàn)在:

  • 不會(huì)對(duì)數(shù)據(jù)幀進(jìn)行校驗(yàn)糾錯(cuò)指郁。
  • 如果交換量大,可能會(huì)出現(xiàn)緩沖區(qū)隊(duì)列滿了的情況拷呆,所以以太網(wǎng)會(huì)主動(dòng)丟棄闲坎,并且不會(huì)通知發(fā)送者。

正因?yàn)槿绱?茬斧,需要上層程序來(lái)獲得可靠數(shù)據(jù)腰懂。

比如NetBEUI,NetBIOS,IPX,TCP/IP,這些協(xié)議其下層調(diào)用以太網(wǎng)提供的服務(wù)项秉,上層對(duì)外提供新的調(diào)用接口绣溜。

而TCP/IP因?yàn)檫m用廣,性能好娄蔼,可以在超大規(guī)模的網(wǎng)絡(luò)上運(yùn)行怖喻,迅速得到普及底哗。

IP協(xié)議

作用一:屏蔽鏈路層地址

以太網(wǎng)主要實(shí)現(xiàn)了OSI的下三層,即物理層锚沸、鏈路層艘虎、網(wǎng)絡(luò)層,現(xiàn)在普遍認(rèn)為以太網(wǎng)只作用到了鏈路層咒吐,這種誤解的原因是以太網(wǎng)與TCP/IP結(jié)合就淪落為T(mén)CP/IP的鏈路層,其第三層地址被以太網(wǎng)IP所映射掉了属划。

而且以太網(wǎng)定義了MAC地址恬叹,也有自己的物理層,完全可以用來(lái)進(jìn)行尋址同眯。但是為什么沒(méi)有完全靠MAC來(lái)尋址呢绽昼?因?yàn)?/p>

  • 首先MAC 太長(zhǎng),48bit须蜗,用于路由尋址的時(shí)效低硅确。

  • 最關(guān)鍵的是,世界上不是每個(gè)環(huán)境都用以太網(wǎng)來(lái)建立網(wǎng)絡(luò)明肮,還可以有其他的網(wǎng)絡(luò)系統(tǒng)菱农,有其他的尋址方式。

比如以太網(wǎng)適合局域網(wǎng)通信柿估,但是不適合廣域網(wǎng)循未,一般來(lái)說(shuō)廣域網(wǎng)有專(zhuān)門(mén)的的聯(lián)網(wǎng)協(xié)議,比如PPP , HDLC , FrameRelay 秫舌, X25 , ATM等的妖,它們也如以太網(wǎng)一樣各有各的尋址體系。

在一個(gè)Internet上有如此多的不同類(lèi)型的網(wǎng)絡(luò)足陨,如果要聯(lián)通嫂粟,需要各種轉(zhuǎn)換,映射墨缘。所以最好才解決方案是給他們通通分配一個(gè)IP地址給每個(gè)節(jié)點(diǎn)星虹,對(duì)外以IP地址作為尋址地址,再將IP地址映射到所在網(wǎng)絡(luò)的地址上镊讼,比如IP映射到Frame Relay 的DLCI 搁凸,映射到ATM的地址等。

以太網(wǎng)天生的弱點(diǎn)導(dǎo)致它必須向TCP/IP合作狠毯,而且只能將MAC地址隱藏护糖,對(duì)外通通使用IP地址。

總結(jié)一下嚼松,因?yàn)槌艘蕴W(wǎng)以外嫡良,還有很多其他類(lèi)型的聯(lián)網(wǎng)方式锰扶,而幾乎所有的聯(lián)網(wǎng)方式都有自己的編址和尋址方式,為了兼容寝受,只能將地址全都映射到IP地址上

既然有映射坷牛,當(dāng)然需要一種協(xié)議來(lái)完成這個(gè)過(guò)程。那就是ARP協(xié)議很澄,這個(gè)協(xié)議就是用來(lái)處理一種地址和另一種地址的映射京闰。運(yùn)行在每個(gè)網(wǎng)絡(luò)設(shè)備上,將一種地址映射成底層網(wǎng)絡(luò)設(shè)備所使用的另一種地址甩苛。

每種網(wǎng)絡(luò)要想用IP來(lái)統(tǒng)一就必須運(yùn)行各自的ARP協(xié)議蹂楣,比如以太網(wǎng)的ARP , 幀中繼的ARP讯蒲。

ARP協(xié)議:主要用來(lái)將IP地址映射到底層設(shè)備的地址(MAC地址)

我們以瀏覽器中輸入網(wǎng)絡(luò)域名之后發(fā)生的事情來(lái)舉例痊土。

  • 首先DNS兌換程序自動(dòng)向DNS服務(wù)器查詢(xún),獲得域名對(duì)應(yīng)的地址墨林,然后用IP地址與服務(wù)器通信赁酝。

  • 數(shù)據(jù)包帶著IP地址到了服務(wù)器所在的局域網(wǎng),會(huì)通過(guò)局域網(wǎng)的路由器發(fā)出的ARP請(qǐng)求旭等,將IP地址兌換為服務(wù)器所在局域網(wǎng)的地址酌呆,

  • 如果服務(wù)器所在的局域網(wǎng)是以太網(wǎng),則對(duì)應(yīng)成MAC地址搔耕,然后通過(guò)以太網(wǎng)交換設(shè)備肪笋,找到此MAC地址所在的交換機(jī)端口,將數(shù)據(jù)包發(fā)向這個(gè)端口度迂。

上述過(guò)程發(fā)生了兩種不同的兌換:

  • IP轉(zhuǎn)換為域名藤乙,這是因?yàn)镮P不方便記憶,所以我們平時(shí)使用類(lèi)似"www.baid.com"這樣的字符來(lái)表示網(wǎng)站惭墓,當(dāng)然需要在后臺(tái)將域名和IP進(jìn)行相互轉(zhuǎn)換坛梁。

  • MAC轉(zhuǎn)換IP:為了統(tǒng)一。

作用二:適配上下層

IP層另外的作用是適配上下層:給鏈路層和傳輸層提供適配腊凶。

鏈路層有MTU的概念:鏈路的最大傳輸單元划咐,即每幀所允許的最大字節(jié)數(shù)。

鏈路層就類(lèi)似司機(jī)和交通規(guī)則钧萍,對(duì)貨車(chē)的載重褐缠、大小有要求,如果貨物太大风瘦,就必須分割队魏。這個(gè)動(dòng)作是由IP層程序來(lái)做,也就是IP根據(jù)鏈路的MTU來(lái)分割貨物,然后貼上源目的IP地址胡桨、順序號(hào)官帘。

路由器每次選擇的路徑不一樣,所以到達(dá)目的地以后可能亂序了昧谊,此時(shí)可以使用順序號(hào)刽虹。這個(gè)順序號(hào)是根據(jù)分割處相對(duì)起點(diǎn)的距離,根據(jù)這個(gè)號(hào)呢诬,等所有貨物到達(dá)了以后涌哲,對(duì)方的IP程序可以將這個(gè)號(hào)碼組裝起來(lái)。

每個(gè)貨物塊都攜帶IP頭尚镰,但是只有第一塊攜帶TCP頭部 阀圾。因?yàn)閭鬏攲宇^部是在應(yīng)用數(shù)據(jù)之前的,所以IP在分割的時(shí)候钓猬,一定會(huì)把頭部分到第一塊中。

缺點(diǎn)

IP最大的作用是尋址和路由撩独,以及適配鏈路層的MTU敞曹。但是以太網(wǎng)是個(gè)面向無(wú)連接的網(wǎng)絡(luò), 不保障數(shù)據(jù)一定會(huì)傳送到對(duì)方综膀。

Frame Relay協(xié)議澳迫,其前身X.25協(xié)議,有很好的傳輸保障功能剧劝,因?yàn)槠湓O(shè)計(jì)初衷是為了運(yùn)行在不穩(wěn)定的鏈路橄登,當(dāng)鏈路的質(zhì)量不斷提升,x25的做法有些多余讥此,所以在FR替代了X25拢锹,只留下流控機(jī)制。

但是以太網(wǎng)和FR都沒(méi)有實(shí)現(xiàn)端到端的傳輸保障萄喳。端到端是相對(duì)于“過(guò)路”而言的卒稳。過(guò)路是指在兩個(gè)終端之間通信路徑上的網(wǎng)絡(luò)設(shè)備之間的路徑。鏈路層只保障兩個(gè)設(shè)備之間傳送的數(shù)據(jù)無(wú)誤他巨,但是不能保證最終終端傳輸?shù)臒o(wú)誤充坑。

TCP和UDP

TCP/IP協(xié)議包含兩個(gè)亞層:

  • IP:統(tǒng)一底層網(wǎng)絡(luò)地址和尋址
  • TCP或者UDP:邏輯上位于IP上。

TCP和UDP的功能

  • TCP功能:維護(hù)復(fù)雜的狀態(tài)機(jī)染突,保障發(fā)送方發(fā)出的數(shù)據(jù)包都會(huì)傳送到接收方捻爷。出錯(cuò)的話,則反饋信息份企。

  • UDP功能:TCP/IP對(duì)以太網(wǎng)的透?jìng)饕查](méi)有傳輸保障功能的亞層。除了UDP可以提供比以太網(wǎng)更方便的調(diào)用方式司志,其他沒(méi)有本質(zhì)區(qū)別手蝎。

TCP/IP協(xié)議向應(yīng)用程序呈現(xiàn)的接口就是Socket接口榕莺,即插座接口。TCP/IP想讓?xiě)?yīng)用程序更方便的使用網(wǎng)絡(luò)棵介,就像插頭插入插座一樣钉鸯。

基于TCP/IP的應(yīng)用程序,必須依賴(lài)于TCP/IP協(xié)議邮辽,如Ping , Trace , SNMP,Telnet , SMTP,FTP,HTTP

這些協(xié)議加上IP唠雕、TCP等,然后加上物理層鏈路層(以太網(wǎng)等)吨述,形成了TCP/IP協(xié)議簇岩睁。

所以說(shuō)TCP運(yùn)行在終端上,監(jiān)控終端最終發(fā)送的接收的數(shù)據(jù)包的順序揣云、緩存區(qū)捕儒、校驗(yàn)。


image.png

TCP協(xié)議

TCP就是個(gè)押運(yùn)員邓夕,是由它把貨物交給IP做調(diào)度的刘莹。

貨物最初是由應(yīng)用程序生成,調(diào)用Socket接口向接收方發(fā)送貨物焚刚。通告TCP/IP去特定的內(nèi)存區(qū)將數(shù)據(jù)復(fù)制到Socket緩沖區(qū)点弯,然后TCP再?gòu)木彌_區(qū)將數(shù)據(jù)通過(guò)IP層分片之后,從底層網(wǎng)絡(luò)適配器發(fā)送到對(duì)端矿咕。

TCP通過(guò)MSS(max Segment Size)來(lái)調(diào)整每次轉(zhuǎn)給IP層的數(shù)據(jù)大小抢肛。而MSS值完全取決底層鏈路的MTU。

為了避免IP分片碳柱,MSS總等于MTU值減掉IP頭捡絮,再減掉TCP頭的值,TCP發(fā)送給IP的數(shù)據(jù)莲镣,IP加上IP頭之后锦援,恰好等于底層鏈路的MTU值,使得IP不需要分片剥悟。

TCP將上層應(yīng)用的數(shù)據(jù)完全當(dāng)成字節(jié)流灵寺,不進(jìn)行定界處理,認(rèn)為上層應(yīng)用數(shù)據(jù)就是一連串的字節(jié),不認(rèn)識(shí)字節(jié)的具體含義区岗,卻可以分割這些字節(jié)略板,封裝成貨物進(jìn)行傳送,但是必須保證數(shù)據(jù)排列順序慈缔。

TCP將上層數(shù)據(jù)“分段” 叮称, IP將TCP分段再“分片”(若此段大于MTU)
IP到達(dá)目的地以后艇挨,會(huì)將分片合并為分端笼痹,然后放到貨倉(cāng)蹭沛,順序排放排截,不管上層消息的分界

UDP協(xié)議

UDP只是被動(dòng)的起到了一個(gè)IP和上三層的接口的作用挠蛉。

沒(méi)有出錯(cuò)重傳祭示,沒(méi)有緩沖、定時(shí)器谴古、狀態(tài)機(jī)质涛,而且也不會(huì)像TCP將數(shù)據(jù)流分段,適配MTU的工作完全由IP來(lái)做掰担。

沒(méi)有握手機(jī)制汇陆,所以UDP頭部只有8個(gè)字節(jié)長(zhǎng),包括目的和源端口號(hào)带饱,UDP數(shù)據(jù)包長(zhǎng)度毡代、UDP校驗(yàn)和,效率高勺疼。所以UDP協(xié)議一般用于實(shí)時(shí)性高的地方教寂,比如視頻流

端口號(hào)

OS上運(yùn)行N個(gè)程序,如果需要通信恢口,可以使用號(hào)碼來(lái)標(biāo)識(shí)孝宗,所以只要知道了進(jìn)程號(hào)就可以區(qū)分程序穷躁。

同一PC上的程序通信耕肩,一般是在內(nèi)存中直接通信,但是如果兩臺(tái)計(jì)算機(jī)的兩個(gè)程序都需要通信问潭,若用內(nèi)存共享猿诸,成本太高,所以可以采用先發(fā)送到另一臺(tái)計(jì)算機(jī)狡忙,然后讓接收消息的計(jì)算機(jī)將這個(gè)消息發(fā)送給對(duì)應(yīng)的程序梳虽。

所以接收方的OS中的TCP/IP協(xié)議必須知道某個(gè)數(shù)據(jù)包應(yīng)該放到哪一個(gè)應(yīng)用程序的緩沖區(qū),因?yàn)橥粫r(shí)刻可能有多個(gè)應(yīng)用調(diào)用Socket 進(jìn)行數(shù)據(jù)收發(fā)灾茁。

為了區(qū)分正在調(diào)用Socket的不同應(yīng)用程序窜觉,規(guī)定了端口號(hào)

所以在調(diào)用socket的時(shí)候北专,必須聲明連接目的計(jì)算機(jī)TCP/IP協(xié)議的那個(gè)端口號(hào)禀挫。

TCP/IP與以太網(wǎng)的關(guān)系

有人把TCP/IP與以太網(wǎng)等同起來(lái),是完全錯(cuò)誤的拓颓。

TCP/IP與以太網(wǎng)是互相利用语婴,而非相互依存。

TCP/IP協(xié)議不像以太網(wǎng)有底層專(zhuān)門(mén)的硬件,絕對(duì)是可以租用一切合適的硬件來(lái)作為物理和鏈路層砰左。

比如TCP/IP可以用無(wú)線匿醒、USB、COM串口缠导、ATM作為物理層和鏈路層廉羔。

以太網(wǎng)有自己的網(wǎng)絡(luò)層編址和尋址,有網(wǎng)絡(luò)層的元素

TCP/IP在網(wǎng)絡(luò)層和傳輸層的功能應(yīng)用太廣泛了酬核,所以O(shè)SI的第三和第4層幾乎是被TCP/IP統(tǒng)治了蜜另。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嫡意,隨后出現(xiàn)的幾起案子举瑰,更是在濱河造成了極大的恐慌,老刑警劉巖蔬螟,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件此迅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旧巾,警方通過(guò)查閱死者的電腦和手機(jī)耸序,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲁猩,“玉大人坎怪,你說(shuō)我怎么就攤上這事±眨” “怎么了搅窿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隙券。 經(jīng)常有香客問(wèn)我男应,道長(zhǎng),這世上最難降的妖魔是什么娱仔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任沐飘,我火速辦了婚禮,結(jié)果婚禮上牲迫,老公的妹妹穿的比我還像新娘耐朴。我一直安慰自己,他們只是感情好盹憎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布筛峭。 她就那樣靜靜地躺著,像睡著了一般脚乡。 火紅的嫁衣襯著肌膚如雪蜒滩。 梳的紋絲不亂的頭發(fā)上滨达,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音俯艰,去河邊找鬼捡遍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛竹握,可吹牛的內(nèi)容都是我干的画株。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼啦辐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谓传!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起芹关,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤续挟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侥衬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體诗祸,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年轴总,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了直颅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怀樟,死狀恐怖功偿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情往堡,我是刑警寧澤械荷,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站投蝉,受9級(jí)特大地震影響养葵,放射性物質(zhì)發(fā)生泄漏征堪。R本人自食惡果不足惜瘩缆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佃蚜。 院中可真熱鬧庸娱,春花似錦、人聲如沸谐算。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洲脂。三九已至斤儿,卻和暖如春剧包,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背往果。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工疆液, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陕贮。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓堕油,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親肮之。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掉缺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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

  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的戈擒,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,053評(píng)論 6 174
  • 個(gè)人認(rèn)為眶明,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 協(xié)議基礎(chǔ) 協(xié)議就是計(jì)算機(jī)之間通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)通信時(shí)實(shí)現(xiàn)所達(dá)成的一種“約定”筐高,這種約定使得那些由不同廠商的設(shè)備赘来,不同的C...
    d9fc24a0c9a9閱讀 2,353評(píng)論 0 6
  • 同樣的,本文篇幅也比較長(zhǎng)凯傲,先來(lái)一張思維導(dǎo)圖犬辰,帶大家過(guò)一遍。 一冰单、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 二幌缝、 TCP/IP 基礎(chǔ)...
    滌生_Woo閱讀 64,981評(píng)論 38 1,038
  • TCP/IP概述 TCP/IP起源于1969年美國(guó)國(guó)防部(DOD:The United States Depart...
    zhf_Zachariah閱讀 5,651評(píng)論 6 114