400-638-8808
|
微信公眾號





穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

我們周圍一切幾乎都依賴于把事情抽象成低等級,并在某一點(diǎn)把它具體化,在一些設(shè)計概念中,接口層十分清晰并且目標(biāo)很集中,應(yīng)用程序不用考慮操作系統(tǒng)如何工作,操作系統(tǒng)也不用考慮硬件如何工作,OSI模型的第4層不需要考慮第三層如何工作。所以我們只需要集中精力在某一層,就當(dāng)下面的層正常工作,但這樣能行嗎?如果你寫一個應(yīng)用,你最好知道OS是怎么樣工作的,并且要考慮數(shù)據(jù)庫如何存儲字符的,同樣,一個好的操作系統(tǒng)必需要了解硬件是如何工作的。如果你認(rèn)為TCP不需要考慮IP的實現(xiàn)那就搞錯了。
所以,這里即使我們假設(shè)web應(yīng)用和服務(wù)都運(yùn)行在OSI第7層,現(xiàn)在我們住下面走走,到第4層(或更低層),看看那里在干什么。我們會討論TCP和UDP的區(qū)別,什么是組播(multicast),它如何工作與如何不工作。相信我,這些東西很有用。
先說一下HTTP,我們現(xiàn)在正在用的直接與這個協(xié)議相關(guān),HTTP和一些其它網(wǎng)絡(luò)應(yīng)用(SQL*NET,
WCI搜索)一起工作在網(wǎng)絡(luò)第7層,應(yīng)用層,在第4層的TCP之上,那什么是TCP呢?
TCP(傳輸控制協(xié)議)和UDP是internet的主要低層網(wǎng)絡(luò)協(xié)議。它們都建立在另一層IP(Internet協(xié)議)之上,IP比它們差一層,在第3層。所以要理解TCP,要先看下IP,然后再回頭看看TCP在上面干什么。
IP:(Internet協(xié)議)
IP擁有把一個數(shù)據(jù)包從一個地方發(fā)送到另一個地方的能力,通過提供一種”地方“或“設(shè)備”一個特定的地址(IP地址),并指定怎樣通過地址在設(shè)備之間移動數(shù)據(jù)包來實現(xiàn)這個協(xié)議,F(xiàn)在,IP和下一層的協(xié)議之間的區(qū)別在于,在第2層的設(shè)備總是確切知道如何給其它網(wǎng)絡(luò)設(shè)備發(fā)送信息,(第2層為鏈路層,通常表示為以太網(wǎng)或WiFi)在第2層,設(shè)備不但知道怎樣發(fā)送數(shù)據(jù)到目的地(通常由MAC地址表示地址),同時也知道是否數(shù)據(jù)能不能到達(dá)目的地。(舉個例子,以太網(wǎng)和WiFi簡單地把整個數(shù)據(jù)包廣播到整個網(wǎng)絡(luò),目的設(shè)備假設(shè)都在監(jiān)聽這個MAC地址,然后提取數(shù)據(jù)包,如果目的地不存在或者不在監(jiān)聽,以太網(wǎng)數(shù)據(jù)就無法到達(dá)。順便提下,網(wǎng)絡(luò)“嗅探器”正是利用這個廣播機(jī)制來工作。用于調(diào)制解調(diào)器撥號連接的PPP協(xié)議可以發(fā)送任何東西到單個目標(biāo):你撥號的號碼。
IP提供了發(fā)送數(shù)據(jù)到其它網(wǎng)絡(luò)的途徑,一個設(shè)備不需要知道具體路徑就可以把一個東西到另一個到另一個網(wǎng)絡(luò),這就是“inter-net
”的由來:“在網(wǎng)絡(luò)之間”。它通過指定一個路由規(guī)則,定義一個帶有目標(biāo)地址的數(shù)據(jù)包。這是基本的規(guī)則:如果目標(biāo)在本地就直接發(fā)送(你知道目標(biāo)在哪,因為它們在同一個網(wǎng)絡(luò)),否則在一堆路由列表中找一個地址來發(fā)送。一個路由只遵守一個協(xié)議,除非地址同時屬于兩個或多個不同的網(wǎng)絡(luò),這種情況下會有不同的本地目的地址,也會產(chǎn)生一個更長的路由列表指向更多的未知地址。
目前為止,IP除了可以發(fā)送單個數(shù)據(jù)包到單個地址外不能干其它任何事情,當(dāng)然它可以接收從任何一個網(wǎng)絡(luò)發(fā)過來的包(不像其它低級的協(xié)議),但僅此而已。明顯缺點(diǎn)如下:
IP不提供發(fā)送、接收、出錯等通知。
IP不提供“端口號”之類的標(biāo)記來隔離發(fā)到目標(biāo)IP地址的數(shù)據(jù)包。
IP不提供雙向通訊。
IP不會用任何方式對多個包排序或分組。
最簡單的比喻是IP好比郵政服務(wù),你住郵箱里扔一張帶地址的明信片,然后它就照著你寫的地址寄過去了,寄到,或者沒寄到,你并不知道。當(dāng)明信片寄到時家時,你并不知道別的室友是不是讀過它了。如果你想到一個回復(fù),你的收件人不能在同一個卡片上寫東西然后還給郵遞員,他們要在自己的卡片上寫字,貼上郵票,寫上地址,最后自己寄出。
TCP:傳輸控制協(xié)議
雖然IP協(xié)議不提供這些功能,但TCP可以。如果你先看一下IP不提供的那些特性,再看看郵遞然后可以說:“嗯?當(dāng)然可以做雙向通信!人們寫信來來回回就像一直在對話一樣”。或者,“你可以直接要求收信人或者郵局給你回一封信”。或者說:“算了笨蛋,你可以把明信片標(biāo)上數(shù)字記號然后告訴收信人按順序閱讀,如果有丟失就告訴你”。好吧,你是對的,這就是TCP做的事情。它使用基本的IP(或郵政服務(wù))并指定通過何種方式添加一些附加信息,以便實現(xiàn)這些特性。
所以,TCP真正解決的是如何實現(xiàn)在多個IP設(shè)備間進(jìn)行可靠的多次通信。神馬意思?這意味著你可以發(fā)送一系列消息(包),基于一個選定的會話(端口或連接),這個包會以同樣的順序接收,發(fā)送時不會丟包,同樣也不會有重復(fù)。
它是這樣做的:給所有的包都寫一個端口號,用來把其它連接和會話區(qū)別開,同時給每個包一個序列號,接收方就能知道傳輸中是否有丟失。之后,TCP指定接收方響應(yīng)每個接收的數(shù)據(jù)(并不強(qiáng)制每個包都響應(yīng),可以簡單的回復(fù):“我收到第13456個字節(jié)之前的全部數(shù)據(jù),或者“我收到845到13433之間的數(shù)據(jù)”),這樣發(fā)送方就知道是否要重新發(fā)送。最后,通信是雙向的,不僅僅有應(yīng)答,還可以讓接收方不用指定地址就可以直接住回發(fā)信息,有點(diǎn)像給每個包附加一個寫好自己地址的回復(fù)信封。
可以看到,如果丟包或順序不對,TCP實際上需要做很多工作。如果我們繼續(xù)郵局理論,TCP就像一個私人助理,他幫你收集、分類郵件,排好序,獲取并閱讀,再回復(fù)回去。如果郵政服務(wù)超級可靠,TCP的任務(wù)就很簡單,只需要做一個中間人把文件分發(fā)出去就好,如果郵政服務(wù)損失了許多員工,或者有很多郵件要處理,TCP就要做很多工作,把丟失的包發(fā)回去,跟蹤并存儲許多信息。
UDP:用戶數(shù)據(jù)協(xié)議
UDP就比TCP簡單多了,
它和IP做的一樣,并加上端口的概念,這樣你就把消息發(fā)給另一個有IP地址的接收者。它沒有順序或連接,或雙向連接,也沒有應(yīng)答。
你應(yīng)該會認(rèn)為UDP不靠譜,因為你知道TCP是一個可靠的連接方案,但是實際上在同一個網(wǎng)段,或者在信號很好的局域網(wǎng),UDP實際上是非?煽康。如沒有丟包并包的按順序依次到達(dá)(這個幾乎是短局域網(wǎng)的常態(tài)),并不需要重新傳輸包,所以TCP的所有應(yīng)答和等待只會浪費(fèi)時間,增加網(wǎng)絡(luò)延時。對于可以包容丟包的應(yīng)用(實時音頻和視頻)來說,即使網(wǎng)絡(luò)不給力,UDP也通常是一個好方案。它也經(jīng)常用于小消息和通知。比如DHCP和DNS都使用UDP。值得一提的是,Unix網(wǎng)絡(luò)文件系統(tǒng)(NFS)在局域網(wǎng)使用的是UDP?赡苣阌X得一個文件系統(tǒng)應(yīng)該需要一個可靠的TCP連接,但是NFS的實現(xiàn)者覺得用UDP可以得到更好的性能,并建立一個專門的機(jī)制來保證可靠性。
順便提一下,它被稱作“用戶數(shù)據(jù)報協(xié)議”是有原因的,因為它是由一幫系統(tǒng)管理員設(shè)計的。“數(shù)據(jù)報”是“包”的另一個名字,“用戶”沒有什么實際意思,就和“你”一樣。就是說這個計算機(jī)程序和操作系統(tǒng)沒什么關(guān)系。原因是低級的IP是寫OS的人寫,但是UDP提供了許多和數(shù)據(jù)報相同的功能,為“用戶”程序(非OS)服務(wù)。
多播(Multicasting)
這里可以簡化下TCP/IP/UDP的相關(guān)討論,默認(rèn)我們知道IP(UDP和TCP一樣)可以把數(shù)據(jù)包在一個網(wǎng)絡(luò)中發(fā)到另一個設(shè)備。更準(zhǔn)確點(diǎn)就是IP把數(shù)據(jù)包從一個IP地址發(fā)到另一個IP地址。多播的決竅就是在同一時間把一個數(shù)據(jù)包發(fā)送到多個設(shè)備,可以把一個特定的IP地址指定為多播地址,并同時發(fā)送到多個設(shè)備。
IP多播首先要知道的是只有UDP有多播,沒有TCP多播這樣的東西,為什么呢?多播的重點(diǎn)是高效的把同一個包盡可能多的發(fā)送到不同的,甚至可能是未知的設(shè)備。但是TCP連接可能要求丟包重發(fā)或者延時或重組順序,這些操作可能非常消耗資源,不適于許多使用多播的應(yīng)用場景。(同時多播不知道發(fā)出的包是不是已經(jīng)到達(dá),這個也導(dǎo)致不能使用TCP)。
參考前面的知道,常用的非多播的UDP(TCP)消息叫做單播(unicast)。
下面我們需要知道多播經(jīng)常沒法通過路由發(fā)到另一個網(wǎng)絡(luò)。下面是部分原因:
多數(shù)多播包的TTL比較低:所有的IP包都有一個“生存時間”(time-to-live),或者叫TTL。和DNS記錄不一樣,TTL指定一個包到達(dá)目的地之前跳過網(wǎng)絡(luò)的最大次數(shù)。單播包通常被允許穿越30個網(wǎng)絡(luò)(比如,被路由或”跳“過29個路由),穿過網(wǎng)絡(luò)通常小于15次”跳越“,所以30的限制經(jīng)常用于當(dāng)網(wǎng)絡(luò)配置的很爛時把數(shù)據(jù)包殺掉。但是許多程序發(fā)多播時把TTL設(shè)為一個很低的值,通常為0(這樣消息不會離開自身的設(shè)備)。
設(shè)置為1表示只能發(fā)到本地網(wǎng)絡(luò)的計算機(jī),設(shè)置為2 表示只能穿過一個路由。很少有應(yīng)用想把多播發(fā)給整個校園網(wǎng)絡(luò)的未知設(shè)備,更不會發(fā)給整個網(wǎng)絡(luò)。
諸多路由都設(shè)置了很高的TTL閾值:很多網(wǎng)絡(luò)路由器,特別是WAN路由和internet網(wǎng)關(guān)路由都有很高的TTL閾值,這樣它們就不會發(fā)送這些低TTL(如15)的多播包。這樣可以防止多播從本地網(wǎng)絡(luò)泄漏。
路由器一般配置成完全不發(fā)送多播,或只發(fā)一些特定的地址,或配置成阻塞多播包。
UDP多播可能有點(diǎn)過于邪惡,但是它使用的次數(shù)可能遠(yuǎn)遠(yuǎn)超出你的預(yù)計。它不會用于網(wǎng)絡(luò)視頻網(wǎng)站比如YouTube,因為它需要當(dāng)用戶點(diǎn)播時再發(fā)送視頻,而不是同時發(fā)給所有的用戶,同樣也不用于VoIP語音。它用于很多發(fā)現(xiàn)和自動配置,如Skype,
iTunes 和 uPnP,也偶爾用于WCI入口。
單播(unicast)指數(shù)據(jù)發(fā)送過程中只有一個發(fā)送方和一個接受方,單播地址就是指接受方接口的地址;
172.31.128.255./18為unicast ip address
172.31.128.255的二進(jìn)制是10101100.00011111.10000000.11111111,其網(wǎng)絡(luò)號為18位,即是10101100.00011111.10所以其主機(jī)地址是000000.11111111.它既不是全0的,也不是全1的主機(jī)地址.所以是單播地址.
組播(mulitcast)指的是數(shù)據(jù)發(fā)送過程中只有一個發(fā)送方和一組指定接受方,組播地址就是指一組接口的地址(通常分屬不同節(jié)點(diǎn)),發(fā)送到多播地址的數(shù)據(jù)包被送到由該地址標(biāo)識的每個接口。
組播的地址是保留的D類地址從224.0.0.0—239.255.255.255
下面列出部分知名或已用的IP組播地址。實際上,224.0.0.0---224.2.255.255的絕大部分地址已被使用,建議使用時避開上述地址(詳細(xì)使用情況請參閱RFC 1700)!
224.0.0.0 基礎(chǔ)地址,保留,不能被任何群組使用
224.0.0.1 全主機(jī)群組(all hosts group),指參加本IP組播的所有主機(jī)、路由器、網(wǎng)關(guān)(不是指整個互連網(wǎng))
224.0.0.2 本子網(wǎng)上的路由器(all routers on a LAN)
224.0.0.4 DVMRP*路由器(DVMRP Routers)
224.0.0.5 本子網(wǎng)上的OSPF*路由器(all OSPF routers on a LAN)
224.0.0.6 本子網(wǎng)上被指定的OSPF路由器(all designated OSPF routers on a LAN)
224.0.1.1 網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol,NTP)
224.0.5.000-224.0.5.127 蜂窩式數(shù)字信息包數(shù)據(jù)發(fā)送主機(jī)組(CDPD Groups)
224.1.0.0-224.1.255.255 基于流的協(xié)議組播主機(jī)組(Stream Protocol Multicast Groups)
224.2.0.0-224.2.255.255 多媒體會議呼叫(Multimedia Conference Calls)
*注:DVMRP是Distance vector multicast routing protocol的縮寫,
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國服務(wù)器 韓國服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國云主機(jī) 韓國云主機(jī) 新加坡云主機(jī) 臺灣云主機(jī) 日本云主機(jī) 德國云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊建設(shè) 加入天下數(shù)據(jù) 媒體報道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證》 ISP證:粵ICP備07026347號
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營)聯(lián)合版權(quán)
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號建安商業(yè)大廈7樓
7×24小時服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品