數(shù)據(jù)包是如何在網(wǎng)絡中傳輸?shù)?轉(zhuǎn))

我們電腦上的數(shù)據(jù)蟀给,是如何“走”到遠端的另一臺電腦的呢?這是個最基礎的問題随夸,可能很多人回答不上來,盡管我們每天都在使用網(wǎng)絡甥郑。這里我們以一個最簡單的“ping”命令逃魄,來解釋一個數(shù)據(jù)包“旅程”。

假設:我的電腦A澜搅,向遠在外地的朋友電腦B傳輸數(shù)據(jù)假栓,最簡單的就是“ping”一下,看看這個家伙的那一端網(wǎng)絡通不通道偷。A與B之間只有一臺路由器瓮下。(路由器可能放在學校,社區(qū)或者電信機房饵溅,無所謂妨退,基本原理是一樣的)

具體過程如下------

1.“ping”命令所產(chǎn)生的數(shù)據(jù)包,我們歸類為ICMP協(xié)議蜕企。說白了就是向目的地發(fā)送一個數(shù)據(jù)包咬荷,然后等待回應,如果回應正常則目的地的網(wǎng)絡就是通的轻掩。當我們輸入了“ping”命令之后幸乒,我們的機器(電腦A)就生成了一個包含ICMP協(xié)議域的數(shù)據(jù)包,姑且稱之為“小德”吧~~~~

2.“小德”已經(jīng)將ICMP協(xié)議打包到數(shù)據(jù)段里了唇牧,可是還不能發(fā)送罕扎,因為一個數(shù)據(jù)要想向外面?zhèn)魉停€得經(jīng)過“有關(guān)部門”的批準------IP協(xié)議丐重。IP要將你的“寫信人地址”和“收信人地址”寫到數(shù)據(jù)段上面腔召,即:將數(shù)據(jù)的源IP地址和目的IP地址分別打包在“小德”的頭部和尾部,這樣一來扮惦,大家才知道你的數(shù)據(jù)是要送到哪里臀蛛。

3.準備工作還沒有完。接下來還有部門要審核------ARP崖蜜。ARP屬于數(shù)據(jù)鏈路層協(xié)議掺栅,主要負責把IP地址對應到硬件地址。直接說吧纳猪,都怪交換機太“傻”氧卧,不能根據(jù)IP地址直接找到相應的計算機,只能根據(jù)硬件地址來找氏堤。于是沙绝,交換機就經(jīng)常保留一張IP地址與硬件地址的對應表以便其查找目的地搏明。而ARP就是用來生成這張表的。比如:當“小德”被送到ARP手里之后闪檬,ARP就要在表里面查找星著,看看“小德”的IP地址與交換機的哪個端口對應,然后轉(zhuǎn)發(fā)過去粗悯。如果沒找到虚循,則發(fā)一個廣播給所有其他的交換機端口,問這是誰的IP地址样傍,如果有人回答横缔,就轉(zhuǎn)發(fā)給它。

4.經(jīng)過一番折騰衫哥,“小德”終于要走出這個倒霉的局域網(wǎng)了茎刚。可在此之前撤逢,它們還沒忘給“小德”屁股后面蓋個“戳”膛锭,說是什么CRC校驗值,怕“小德”在旅行途中缺胳膊少腿蚊荣,還得麻煩它們重新發(fā)送初狰。。互例。跷究。。我靠~~~~注:很多人弄不清FCS和CRC敲霍。所謂的CRC是一種校驗方法,用來確保數(shù)據(jù)在傳輸過程中不會丟包丁存,損壞等等肩杈,F(xiàn)CS是數(shù)據(jù)包(準確的說是frame)里的一個區(qū)域,用來存放CRC的計算結(jié)果的解寝。到了目的地之后扩然,目的計算機要檢查FCS里的CRC值,如果與原來的相同聋伦,則說明數(shù)據(jù)在途中沒有損壞夫偶。

5.在走出去之前,那些家伙最后折磨了一次“小德”------把小德身上眾多的0和1觉增,弄成了什么“高電壓”“低電壓”兵拢,在雙絞線上傳送了出去。暈~~出趟門就這么麻煩嗎逾礁?

6.坐著雙絞線旅游说铃,爽!可當看到很多人坐著同軸電纜,還有坐光纖的時候腻扇,小德又感覺不是那么爽了债热。就在這時,來到了旅途的中轉(zhuǎn)站------路由器幼苛。這地方可是高級場所窒篱,人家直接查看IP地址!剩下的一概不管舶沿,交給下面的人去做墙杯。夠牛吧?路由器的內(nèi)部也有一張表暑椰,叫做路由表霍转,里面標識著哪一個網(wǎng)絡的IP對應著路由器的哪一個端口。這個表也不是天生就有的一汽,而是靠路由器之間互相“學習”之后生成的避消,當然也可以由管理員手工設定。這個“學習”的過程是依靠路由協(xié)議來完成的召夹,比如RIP岩喷,EIGRP,OSPF等等监憎。

7.當路由器查看了“小德”的IP地址以后纱意,根據(jù)路由表知道了小德要去的網(wǎng)絡,接著就把小德轉(zhuǎn)到了相應的端口了鲸阔。至此偷霉,路由器的主要工作完成,下面又是打包褐筛,封裝成frame类少,轉(zhuǎn)換成電壓信號等一系列“折騰”的活,就由數(shù)據(jù)鏈路層和物理層的模塊去干吧渔扎。

8.小德從路由器的出口出來硫狞,便來到了目的地----電腦B----所屬的網(wǎng)絡的默認網(wǎng)關(guān)。默認網(wǎng)關(guān)可以是路由器的一個端口晃痴,也可以是局域網(wǎng)里的各種服務器残吩。不管怎樣,下面的過程還是一樣的:到交換機里的ARP表查詢“小德”的IP地址倘核,看看屬于哪個局域網(wǎng)段或端口泣侮,然后就轉(zhuǎn)發(fā)到B了。

9.進了B的網(wǎng)卡之后紧唱,還要層層“剝皮”旁瘫,基本上和從A出來的程序是一樣的------電腦B先校驗一下CRC值祖凫,看看數(shù)據(jù)是否完整;然后檢查一下frame的封裝酬凳,看到是IP協(xié)議之后惠况,就把“小德”交給IP“部門”了;IP協(xié)議一看目的地址宁仔,正確稠屠,再看看應用協(xié)議,是ICMP翎苫。于是知道了該怎么做了------產(chǎn)生一個回應數(shù)據(jù)包权埠,(可以命名為“回應小德”),并準備以同樣的順序向遠端的A發(fā)送煎谍。攘蔽。至于剛剛收到的那個數(shù)據(jù)包就丟棄了。

10.“回應小德”這個數(shù)據(jù)包又開始了上述同樣的循環(huán)呐粘,只不過這次發(fā)送者是B而接收者是A了满俗。

以上是一個最簡單的路由過程,任何復雜的網(wǎng)絡都是在次基礎之上實現(xiàn)的作岖。

網(wǎng)絡數(shù)據(jù)包大小

用UDP協(xié)議發(fā)送時唆垃,用sendto函數(shù)最大能發(fā)送數(shù)據(jù)的長度為:65535-20-8=65507字節(jié),其中20字節(jié)為IP包頭長度痘儡,8字節(jié)為UDP包頭長度辕万。用sendto函數(shù)發(fā)送數(shù)據(jù)時,如果指的的數(shù)據(jù)長度大于該值沉删,則函數(shù)會返回錯誤渐尿。

用TCP協(xié)議發(fā)送時,由于TCP是數(shù)據(jù)流協(xié)議矾瑰,因此不存在包大小的限制(暫不考慮緩沖區(qū)的大凶┤住),這是指在用send函數(shù)時脯倚,數(shù)據(jù)長度參數(shù)不受限制。而實際上嵌屎,所指定的這段數(shù)據(jù)并不一定會一次性發(fā)送出去推正,如果這段數(shù)據(jù)比較長,可能會被分段發(fā)送宝惰,如果比較短植榕,可能會等待和下一次數(shù)據(jù)一起發(fā)送。我在測試的時候尼夺,發(fā)現(xiàn)長度一般會被切成16384(16K)或49152(48K)尊残,不知道這兩個值有什么意義炒瘸。


轉(zhuǎn)載地址:

http://1527zhaobin.iteye.com/blog/1842742

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市寝衫,隨后出現(xiàn)的幾起案子顷扩,更是在濱河造成了極大的恐慌,老刑警劉巖慰毅,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘截,死亡現(xiàn)場離奇詭異,居然都是意外死亡汹胃,警方通過查閱死者的電腦和手機婶芭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着饥,“玉大人犀农,你說我怎么就攤上這事≡椎簦” “怎么了呵哨?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贵扰。 經(jīng)常有香客問我仇穗,道長,這世上最難降的妖魔是什么戚绕? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任纹坐,我火速辦了婚禮,結(jié)果婚禮上舞丛,老公的妹妹穿的比我還像新娘耘子。我一直安慰自己,他們只是感情好球切,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布谷誓。 她就那樣靜靜地躺著,像睡著了一般吨凑。 火紅的嫁衣襯著肌膚如雪捍歪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天鸵钝,我揣著相機與錄音糙臼,去河邊找鬼。 笑死恩商,一個胖子當著我的面吹牛变逃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怠堪,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼揽乱,長吁一口氣:“原來是場噩夢啊……” “哼名眉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凰棉,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤损拢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渊啰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體探橱,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年绘证,在試婚紗的時候發(fā)現(xiàn)自己被綠了隧膏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚷那,死狀恐怖胞枕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情魏宽,我是刑警寧澤腐泻,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站队询,受9級特大地震影響派桩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚌斩,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一铆惑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧送膳,春花似錦员魏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碌补,卻和暖如春虏束,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厦章。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工镇匀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闷袒。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓坑律,卻偏偏與公主長得像岩梳,于是被迫代替她去往敵國和親囊骤。 傳聞我的和親對象是個殘疾皇子晃择,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

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