小白級別,一台計算機如何把資料傳送給另一台計算機

2022-06-17 07:24:13 字數 3848 閱讀 7403

天各一方的兩台計算機是如何找到對方並進行資料傳輸的?這一切要從計算機網路中五層模型開始講起。五層模型有以下這些

了解五層模型基本上就知道一台計算機如何把資料傳送給另一台計算機了。不過標題也說了,這是小白級別,文章會省略許多繁瑣的細節。

一、物理層

如果兩台計算機要通訊,首先需要的就是把兩台計算機用線鏈結起來,例如用光纖、電纜、雙絞線等。就像這樣子

建立鏈結的目的就是為了通訊。由於計算機之間只能傳輸0和1這樣子的電訊號,所以我們傳送給其他計算機的資料最終都會轉化成一大串只包含0和1這樣的電訊號。

二、資料鏈路層

由於傳送過來的資料是一串只包含0和1的電訊號,我們根本看不懂,需要一些規定來識別這些電訊號。只需要將發過來的資料加頭加尾封裝成幀就能完成標識了。變成下面這樣子

幀首部裡的資訊主要是:要傳送給誰,誰傳送的,等等。幀尾部就是資料接收結束的資訊。

幀的資料部分也就是你要傳送給對方的資訊。當然如果你的資料比較大的話,會被封裝成多個幀進行傳送。

要傳送給誰,需要有個標識把。這個標識就是mac位址。對方的mac位址和自己的mac位址存放的位置都是在幀首部。

在計算機裡存在於網絡卡中

網路中每台裝置都有乙個唯一的網路標識,這個網路標識叫mac位址或網絡卡位址。這個位址是由網路裝置製造商生產時寫在硬體內部的。

假如知道對方的mac位址,計算機a要怎樣傳送資訊給計算機b呢?要知道計算機a不止連著計算機b,還連著其他計算機。就像這樣子

計算機a並不知道計算機b在**,所以只能把資訊傳送給所有計算機,這種一次給多台計算機傳送資料的方式我們稱為廣播。計算機收到資料後看一下幀頭里的mac位址,如果和自己的一樣就接收,如果不一樣就丟棄。就像我們平時聽到的廣播一樣,如果廣播裡喊的是自己的名字,我們就回應,如果不是自己的名字,就直接忽略。

不過現在還有個問題,我們並不知道對方的mac位址是什麼。

我們要怎麼在那麼多個mac位址找到我們要找的那乙個呢?這個時候需要通過arp協議來找對方的mac位址。arp協議的功能是通過對方ip位址獲取對方mac位址。不過ip位址是在網路層。在鏈路層這裡只需要知道通過arp協議可以獲得mac位址就行了。

三、網路層

說到網路層就得先講一下子網,前面也講到了子網。我們所處的網路是由無數的子網組成的。把乙個大的網路劃分成小的網路就叫做子網劃分,劃分出來的小的網路就叫做子網。

那為什麼要進行子網劃分呢?試想一下如果不進行子網劃分的話,計算機a每傳送一條資料,網路(範圍很大)上的其他計算機都會收到這條資料,這樣子想想就覺得不恰當,又比如反過來說,全世界的計算機都傳送一條資訊,你的計算機都會收到這條資訊,我想你的計算機分分鐘崩潰。所以需要進行子網劃分。

子網劃分的好處可以這樣子來看。計算機a傳送一條資料給計算機b,一開始只有自己所在的子網裡的計算機能夠收到這條資料,如果計算機b在自己所在的子網裡,就將資料傳送給計算機b,如果不在的話,就會將資料傳送給閘道器,讓閘道器進行**。

那麼如何判斷對方計算機是否和自己的計算機是否在同乙個子網呢?這就需要用到ip協議了。

ip協議規定網路上所有的裝置都必須有乙個獨一無二的ip位址。

ip位址是乙個32位的二進位制數,通常被分割為4個「8位二進位制數」。ip位址通常用「點分十進位制」表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進位制整數。例:點分十進ip位址(100.4.5.6),實際上是32位二進位制數(01100100.00000100.00000101.00000110)。

每台計算機都有乙個ip位址,這個ip位址被分為兩部分,前面一部分代表網路部分,後面一部分代表主機部分。並且網路部分和主機部分所占用的二進位制位是不固定的。

如果兩台計算機的網路部分一樣,我們就說這兩台計算機在同乙個子網中。例如192.168.6.1和192.168.6.2,假如這兩個ip位址的網路部分為24位,主機部分則為8位。它們的網路部分都為192.168.6。所以它們處於同乙個子網中。

那如何知道網路部分和主機部分佔幾位。

這需要另乙個東西---子網掩碼

子網掩碼和ip位址一樣是32位(具有一一對應的關係),網路部分對應的子網掩碼都是1,主機部分對應的子網掩碼都是0。如上們的ip位址。網路部分為24位的話對應的子網掩碼就是11111111.11111111.11111111.00000000,即255.255.255.0。

用子網掩碼和ip位址進行與(and)運算就可以知道網路部分是什麼。

有了ip協議的知識之後,再來看一下arp協議。

arp協議是通過ip位址得到mac位址的一種協議。也是以廣播的形式傳送乙個資料報,資料報裡包含對方的ip位址,首先需要判斷對方的ip位址和自己的ip位址是否在同乙個子網中,如果不在乙個閘道器裡,需要交給閘道器進行**。如果在同乙個閘道器裡,只需要再判斷資料報裡的ip位址是否和自己的ip位址一樣就行了,如果和自己的ip位址一樣,就把自己的mac位址發回給對方,如果不是,就丟棄。

就像這樣子

五、應用層

應用層可以為使用者提供具體服務,是與我們最緊密相關的一層。我們從傳輸層收到的資料格式有很多,例如.txt.jpg,png.mp4等等。而應用層就是幫助我們完成分析這些資料格式。

六、最後用幾幅圖來總結一下以上內容。

應用層:

一開始只有計算機a向計算機b之間通訊

計算機b收到101101101011後根本就看不懂。

資料鏈路層:

於是鏈路層上場了,將資料封裝成幀

這下計算機b收到資訊後總算能看出一點頭緒了。

但之後不久計算機a又連了計算機c和計算機d。

計算機a此時又想傳送資訊給計算機b。計算機c和計算機d並不想接受計算機a發給計算機b的資訊。於是產生了mac位址來進行處理,當計算機c和計算機d發現mac位址和自己的mac位址不一樣時就將資料報拋棄。

網路層:

但是計算機a並不知道計算機b的mac位址是啥。於是產生了arp協議。通過arp協議能夠獲取計算機b的mac位址。arp協議是通過ip位址得到mac位址的一種協議。

就這樣計算機a得到了計算機b的mac位址,於是可以開始進行資料交流了。

7 實現一台計算機

前面實現了多個數加法 減法器,計數器,儲存器。這裡我們就要利用這些成果,實現乙個新的更好用的加法器。人們都是懶惰的,因此如果要讓你把100個數放到前面實現的加法器中相加,這是非常不好的,因為一旦中間一步出錯,則要清零後重新從頭輸入。因此我們可以利用ram的先儲存後訪問特性,把需要相加的值預先寫入到儲...

第一台計算機

世界上第一台電子計算機其實是abc atanasoff berry computer,阿塔納索夫 貝瑞計算機 eniac是第二台。之前很多紀錄聲稱第一台電子計算機叫 eniac 電子數字積分計算機的簡稱,英文全稱為 electronic numerical integrator and calcul...

Problem D 給我一台計算機吧!

time limit 1 sec memory limit 128 mb submit 2194 solved 1906 submit status web board cpu主頻和主存容量是衡量一台計算機效能主要指標。請定義 1.cpu類 只有乙個int型別的資料成員以表示其主頻,並請根據輸出和給...