電腦間資料通訊 OSI協議簡述版

2022-06-18 22:09:14 字數 3989 閱讀 6682

目錄osi只是計算機網路中的一種協議名稱縮寫,它只是電腦間傳輸資料的協議,並不代表具體的物理裝置,並且這種協議,只是被人為的劃分為五層:物理層、資料鏈路層、網路層、傳輸層、應用層。記住,它只是協議,因此它被劃分為五層後,那五層也都只是協議,並不是五層物理裝置,爸爸決定了兒子。

再次強調,osi只是協議,而物理層屬於osi,那麼也就決定了物理層也只是乙個協議而已,畢竟爸爸決定了兒子。也就是說物理層並不是你腦子裡yy的電線、光纜巴拉巴拉的。

那他是什麼呢?他是基於電器特性傳送高低電壓,高電壓可以對應1、低電壓可以對應0。簡而言之,物理層 = 物理層協議規定了 = 物理裝置基於電氣特性傳送高低壓電壓,再次強調,物理層不等同於物理裝置,事不過三,下次不強調了。

說到資料鏈路層,不得不搬出osi協議的乙個特點——osi協議的五層是一層一層遞進的,也就是上一層決定了下一層。既然物理層負責傳送0和1,那麼資料鏈路層對應的就會接收到物理層發來的0和1。現在假設資料鏈路層收到了100個0和1組成的一串字元,例如00111100……。我們說到,osi協議是用來傳送資料的,此刻你看到這一串0和1,內心一定100頭草泥馬飄過,但是你又沒辦法。

所以,為了讓你看得懂這串字元,資料鏈路層做了乙個規定,這個規定就是對這串字元分組。分組的意義就是讓這一串字元變得有意義,例如8個字元1組,10個字元一組,再通過編碼學的知識,這些0和1就變得生龍活虎了,例如4個字元一組,我們可以把0000看成a,0001看成c,0010看成y,0011看成d……也就是說0001 0010 0011的編碼結果就是cyd。

但是每個電腦廠家都會生產自己的電腦,總不能你把8個字元看做一組、他把80個字元看做一組、我為了方便把無窮大個字元看做一組吧,那不就亂了套嗎?因此就出現了乙個乙太網協議ethernet,記住了,他也只是乙個協議,不過他好認領,因為他就是乙太網協議。

乙太網協議規定了,全世界的所有電腦都必須用一組電訊號也就是乙個分組構成乙個資料報,這個資料報叫做幀,每一幀分為報頭head和資料data兩個部分,head包含18個位元組——源位址6個位元組、目標位址6個位元組、傳輸的資料型別6個位元組;data包含最短46個位元組最長1500個位元組,就看你一次能逼逼多少啦,如果逼多了那就多分一組咯。這段資料為了講解方便有時也可稱為乙太網頭。

現在會有人好奇源位址和目標位址到底是啥,其實很簡單,就好比寄快遞,這源位址和目標位址就是你家和她家。但在計算機眼中,就是mac位址,而mac位址就是你家電腦中網絡卡的位址,而這個網絡卡的位址又很特殊——在計算機出廠的時候,計算機的網絡卡上就燒了乙個世界唯一的mac位址,這樣媽媽再也不怕我串門了。

有了mac位址,乙個區域網內的電腦就可以通訊了,我們簡單講講區域網通訊的原理。現在在乙個小黑吧裡,由於老闆太摳,就買了乙個交換機,沒有開通網路到網咖外面。交換機幹啥的呢?交換機就是把網咖所有的電腦連在一起,這些連在一起的電腦可以接收到對方電腦發出的訊息。因此小黑吧裡的電腦就可以互通,但是由於老闆太摳,你在小黑吧裡無法與外面的紅燈酒綠的世界聯絡。可能你會好奇,為什麼多了乙個交換機我就能和小黑吧的其他電腦交流了呢?

其實很簡單,當你需要把你的資料傳送給另外一台電腦的時候,吼一嗓子就行了。當然,不是讓你真正吼一嗓子,那怕是網管直接揍你一頓,然後讓你捲鋪蓋滾。當你需要傳送資料的時候,你只需要通過電腦的傳送按鈕,此時此刻,電腦便會自動幫你把你的資料通過資料鏈路層打包成另外一段資料,也就是乙太網協議規定的那些內容。可能有人好奇,我怎麼知道我要把我的資料傳送給誰,如果他把我珍藏已久的美國大片婦聯2發給其他人了怎麼辦,其實很簡單,但我不想深入,因為你可能聽不懂,你只需要知道其實就相當於mac位址,不嚴謹但很容易理解,想深入了解為什麼url**等同於mac位址的同學,可以去了解arp協議。電腦把你的資料打包之後,會通過物理層轉化為0和1然後傳送給交換機。前面說到,交換機把所有電腦連在一起了,此時交換機收到你的訊息,他會吼一嗓子——來訊息了,只要是連在這台交換機上的電腦,都會收到訊息然後拆開看看,如果目標位址和自己的mac位址吻合,那麼吻合的電腦就會能把這個資料拆開,而不吻合的就會把這個資料丟掉。可能有人又yy了,我收到訊息,我強行拆開不行嗎?我就想說一句,都說了是協議了,你不按照協議做事,你能用這個協議嗎?

會有聰明的同學想到,如果我們讓全世界的電腦連在一台交換機上,這樣我就不能直接和川普聊天了嗎?你太聰明了,但是如果全世界上百億臺電腦連在一起,可能等川普收到你的訊息的時候,拆開一看,有人給我發訊息了,那時候可能你就不在人世間了。

為了回答資料鏈路層遺留的乙個問題,區域網只能保證我在小黑吧裡和小夥伴們愉快的玩耍,但不能讓我發訊息給川普,而網路層卻很好的解決了這個問題。

為了解決世界網路通訊的問題,網路層應運而生,讓乙個區域網可以和另外乙個區域網可以通訊,並且因此定義了乙個ip協議,這個ip協議都規定了啥呢,說出來你可能不信,ip協議除了和乙太網協議名字不同,內容形式基本一模一樣。

上面說到小黑吧的例子,在這裡進行深入拓展,現在小黑吧的老闆靠你們這群韭菜狠賺了一筆,他就去電信公司開通了網路,這個網路是幹嘛的呢?就是為了讓你和川普聊天的。具體是怎麼樣的呢?其實很簡單,就是當小黑吧老闆在電信公司開通網路的時候,電信公司會給小黑吧乙個ip位址,記住這個ip位址是屬於小黑吧的,前面說過爸爸決定兒子,小黑吧的電腦屬於小黑吧,因此小黑吧的電腦上也會擁有這個ip位址,也就是說mac位址是每台電腦各乙個,然而ip位址可能多台電腦共乙個。

有了ip位址,那麼如何去和川普聊天呢?毫無疑問,你想和川普聊天,一定也擁有川普的ip位址,重新說一遍,其實就相當於ip位址和mac位址,雖然有問題,但很容易理解,此處**可隨時替換,歡迎付錢改成你的**幫你打廣告。

現在你有了自己的ip位址,又有了川普的ip位址,聰明的同學一定想到了乙太網協議,對的,ip協議規定了,如果你想發訊息給區域網之外的電腦,你必須得按照這種形式傳送資料——自己的ip位址+對方的ip位址+資料,這種形式的資料為了下面講解的方便暫時叫做ip頭。

現在你想好了給川普傳送的資料,你就寫了一段話發給了川普。我們來詳解下這個世界通訊的這個過程,其實能看到這,下面就特簡單了。你寫了一段話,點選了傳送,此時你的電腦會把你的ip位址+老特的ip位址+你寫的話通過ip協議+網路層協議打包成ip頭,然後這個ip頭會通過資料鏈路層協議打包成一幀資料,記住,上述過程都是你的電腦幫你完成的。現在你的電腦把這一幀資料通過物理層轉換為0和1傳送出去了,由於你是發給川普的,就不經過交換機了,就通過電信公司開始往外發了,這個發的過程和交換機同理,當你把資料發給電信公司時,電信公司會幫你吼一嗓子,在電信公司旗下的所有擁有ip網的使用者都會收到你的訊息,雖然有問題,但利於理解,當然了,川普一定是沒有購買中國電信公司的ip網的,因此聰明的你一定會想到國家與國家層面一定還會有一層資料傳送的協議,如果國家層面封死了這種協議,你也就無法和國外通訊了,就是這樣。當然,這裡我們假設川普購買了電信公司的ip網路,因此我、他、她和川普都收到了你傳送的訊息,但是我、他、她的ip**和你傳送的ip**對應不上,因此我們就把你發的資料丟掉了,但是川普發現你的資料的目標ip**就是他的,他就會拆開ip頭,然後又一次驚喜的發現你的資料的mac位址是他的電腦的mac位址,他就會收到你的訊息了,當然川普同事如果和他在同乙個ip位址的網路下,也能拆開ip頭,但是會因為mac位址不對,還是會把這個資料丟掉。

此時此刻,你就能全球互聯了,但是還有沒有結束,沒有。

有了這個埠,終於可以開心的和我朋友玩鬥地主了,當然,此時我傳送給我朋友電腦的資料不僅有ip頭、乙太網頭、還會有埠,ip頭確定了我朋友的ip位址也就是在**、乙太網頭確定了我朋友電腦的mac位址、埠確定了我朋友電腦上的哪個程式,因此我們可以得出乙個結論——ip頭+乙太網頭+埠 = 全世界獨一無二的電腦上的獨一無二的某個應用程式。

你以為傳輸層就這麼簡單嗎?沒有如果詳解還會有tcp和udp兩種應用程式間傳輸資料的協議,但是過於複雜,不詳解,其實只要記住tcp穩定、udp不穩定即可。還是略解下,前面說到tcp和udp是兩種傳輸資料的協議,其實簡單點說就是啥呢?就是udp就是規定了電腦a發資料給電腦b後,就不負責電腦b有沒有收到資料,反正發完了就絕交;tcp就是規定了電腦a發資料給電腦b後,還得讓電腦b發一條訊息給電腦a告訴它我已經收到了你傳送的資料,有問題,但方便理解,總不能說3次握手4次揮手讓你看不懂吧?

其實到這真的結束了,應用層很簡單了,無非就是規定了不同型別應用程式之間的資料組織格式。簡單點說無非就是相同的內容不同應用程式規定了不同的寫法罷了。

網路通訊不嚴謹且易懂的講無非就是這些,但你要記住,並不嚴謹,一門深奧的學科能這樣講解出來,一定是漏洞百出的,而且只供消遣,真想學些什麼東西,零碎化就能學的那應該都不是什麼好東西。

程序間資料通訊

如何實現程序間資料通訊技術 1 引言 在windows程式中,各個程序之間常常需要交換資料,進行資料通訊。win32 api提供了許多函式使我們能夠方便高效地進行程序間的通訊,通過這些函式我們可以控制不同程序間的資料交換,就如同在win16中對本地程序進行讀寫操作一樣。典型的win16兩程序可以通過...

列車實時資料通訊協議 TRDP 探索之路 一

前記 最近在開發trdp協議專案,需求是在三層交換機上支援trdp協議,故踏入不斷研讀協議深入原始碼之路。編譯 windows下可以使用vs工具直接編譯相應 linux編譯 cd trdp config chmod a x mv buildsettings posix template builds...

列車實時資料通訊協議 TRDP 探索之路 五

時隔n久,才發現trdp中的md一直沒有更新。距離專案已經好幾個月了,大致已經忘光啦。何時能達到張無忌學習太極拳劍的地步qaq。不過還是稍微總結一下吧 md大致也就是caller和replier的互動。需要做的工作便是加入監聽的comid,然後傳送call請求,剩下的便是在收包時做處理了。關於md的...