㈠ 計算機網路從 IP 到 IP 的通信是怎麼完成的
開發離不開計算機網路,計算機網路很重要,但不是所有的網路知識對軟體開發都是有用的。
我們知道,網路是分層的,OSI 體系中分了 7 層,但實際上使用的 TCP/IP 體系中分了 4 層,學習的時候為了方便,我們還是把物理層、數據鏈路層分開學的,所以是 5 層。
開發時我們會用 IP、TCP、HTTP 等協議來完成計算機之間的通信,網頁運行時還會涉及到 DNS 等協議,這些協議都是在網路層之上的,也就是基於 IP 到 IP 的傳輸來完成各種協議的數據通信。
那之下的部分呢?IP 到 IP 的通信是如何實現的?
這就涉及到物理層、數據鏈路層還有網路層的知識了,這些知識對實際的開發沒啥用,因為代碼里已經默認了 IP 和 IP 之間是可以通信的,但是了解這些可以讓我們對網路有一個全面的理解。這部分涉及到網路硬體、涉及到通信原理,還是挺有意思的。
這篇文章就淺談下 IP 和 IP 之間的通信的知識。
把不同的計算機連接起來,可以做數據通信,可以共享軟體、硬體,這就叫做計算機網路。
這種連接方式有很多種,自然也就有不同的網路。比如撥號上網,是利用電話通信的網路來傳輸數據的,就像打電話一樣,所以叫撥號,只不過傳輸的數據不是通話數據。比如衛星上網,是利用衛星信號來傳輸數據,這也是一種網路。
這兩種都是用的現有的網路來實現計算機通信。而我們自己組建的網路都是用網線連接的,這種是最常見的網路。
比如這樣:
這種通過一根線把所有的計算機連接起來的網路連接方式叫做乙太網。
在講乙太網之前,不知道大家是否已經感受到了網路分層的好處:
不管是利用電信網路的撥號上網,還是利用衛星通信的衛星上網,或者是用網線連接起來的乙太網,這些不同結構的網路都能很自然的融合在一起,就是因為做了很好的分層,只要實現了 IP 協議,那麼不管網路是怎麼實現的,都能實現更上層協議的通信。
這就像軟體開發領域的面向介面編程的思想,只要你能實現 IP 到 IP 的通信,不管你是怎麼傳輸的數據,都可以。
多台計算機已經用網線連接起來了,那怎麼通信呢?
直接通過這條網線傳遞數據就行,只不過現在是一個發其餘的都能接收到,要讓目標計算機能接收,那就得標識下目的地址是啥,所以乙太網的數據幀格式是這樣的:
除了數據外,額外加上了目的地址、原地址等信息。
這樣每台計算機接收到網路傳過來的數據之後,判斷下是否目的地址是自己,是就接收,否則丟棄。這樣就實現了網路通信。
這就是一個網路了?就這么簡單?
這確實是一個小型網路,但還不完善。如果多台計算機同時發消息怎麼辦,數據不就混在一塊了?
所以要做是否沖突的檢測,現在乙太網用的方式是這樣:想要通過網路發消息時,先檢測下網路中有沒有電信號,沒有的話就發,有的話就等待 1.x 秒,x 是隨機的,如果到了時間還有沖突,那就等待 2.x 秒、4.x 秒、8.x 秒,通過這樣的方式來避免沖突,實現准確的通信,這叫做「指數退避」。
這樣確實不會沖突了,但是還有問題,如果計算機連了很多,雖然能准確的通信,但時不時就沖突的話效率也太低了。
能不能減少沖突呢?
連在一起的乙太網的計算機因為是廣播通信的,所以可能可能沖突,這叫做一個「沖突域」。如果能把大的沖突域給拆小,那不就能減少沖突的概率了?
這就是交換機做的事情了:
幾台電腦之間加一個交換機來隔開,這樣傳輸消息的時候,如果是同一個小網段內的通信,會直接傳給目標計算機,不會傳到其他網段里去,本網段沒有該 mac 地址的時候才傳到其他網段,這樣就 把大的網路分成了一個個小的網段,減少了沖突的概率,提高了網路傳輸效率,這就是交換機的意義。
這樣,我們就組建了一個乙太網。
現在一個個的網路都是分散的,不管是乙太網,還是用電信網路連接的網路,或者是衛星連接的網路,那自然有需求把這些分散的網路給連接起來,這就是互聯網,也就是把網路連接起來的網路。
互聯網也有很多,比如軍隊的各種網路會建立一個互聯網,教育的各種網路會建立互聯網,互聯網和互聯網之間還可以連接,最大的互聯網就是網際網路 internet,大到全世界的很多網路都會連入的那種。但也有的互聯網是不接入 internet 的,比如軍用的互聯網。
那這些網路之間是怎麼標識和連接的呢?
標識網路自然就需要編號,並且網路內的主機也需要編號,也就是需要指定網路號 + 主機號,這就是 IP 地址。
IP 地址最開始是 32 位的,叫做 IPv4(後來擴充成了 128 位的,叫做 IPv6)。
比如這樣就是一個 IPv4 的地址:
為了好記,我們把它分為了四段,每段 8 位,就成了這樣:
210.73.140.2
這分為 4 段的 32 位地址里有網路號也有主機號。如果把第一段當作網路號,那剩下的三段就是主機號,可以標識 1600 多萬台計算機,如果把前兩段當作網路號,那可以標識 6 萬多台計算機,如果把前三段當作網路號,那隻有最後一段用於標識主機,可以標識 254 台計算機。這樣就分為了 ABC 三類網路。
講完了 IP 地址,再回來講最大的互聯網 internet。
internet 是連接全球很多網路的互聯網,那自然有個主幹網,然後下面接入各個國家的網路。每個國家都有專門的接入 internet 的網路提供商(ISP internet service provider),比如中國有聯通、移動、鐵通等 ISP,由他們接入 internet,我們再接入他們的網路。
那網路之間是怎麼連接的呢?
就是通過路由器, 路由器連接多個網路,負責根據 IP 地址選擇把數據傳到某個網路 。
很多同學分不清路由器和交換機的區別,其實很好區分:交換機是網路內部隔離沖突域、提高網路效率用的,根據 mac 地址轉發消息。路由器是負責在不同的網路之間轉發數據,根據 IP 地址確定網路和主機然後轉發。
IP 地址里記錄了網路號和主機號,所以根據網路號就能確定是哪個網路,那怎麼根據主機號確定哪台主機呢?
在這個網路里廣播一次不就行了?把 IP 地址傳遞給網路的每一台主機,如果是自己的,那就返回自己的 mac 地址,這樣路由器就知道該把消息傳給誰了。這種從 IP 到 mac 地址的查詢過程叫做 ARP(Address Resolution Protocol 地址解析)協議。
至此,我們就完成了從 IP 到 IP 的通信,再上面的協議我們就比較熟了,也就是 TCP、HTTP 這些,這些是我們軟體開發整天用的協議。
計算機網路是分層的,OSI 體系結構分了 7 層,實際用的 TCP/IP 體系結構分了 4 層,為了學習方便我們還是作為 5 層來看。
分層的好處就是每一層都可以靈活的替換實現方案,比如只要你實現了 IP 到 IP 的通信,不管你是衛星連接的網路、電信連接的網路還是乙太網,都可以,對上層的各種協議沒影響。
衛星、電話網路等都是已有的網路,我們自己組建的網路一般都是按照乙太網的方式,也就是一根網線連接所有計算機的方式,叫做匯流排式。
乙太網內是廣播通信的,為了避免沖突,會通過指數退避的方式來發消息,但這會降低傳輸效率,所以引入了交換機來隔離沖突域,也就把網路分成了不同的網段,交換機遇到同一網段的通信是不會傳遞到其他網段的,這樣就減少了沖突的概率。
網路和網路之間連接起來就叫做互聯網,互聯網有很多種,全球最大的互聯網是 internet,但也不是所有的互聯網都在 internet 里,比如軍用互聯網就不會連入 internet。
internet 有主幹網來連接各個國家和地區的網路,每個國家都有負責接入 internet 的互聯網服務提供商 ISP,比如中國的聯通、移動、鐵通等運營商。
網路的標識是通過 IP,也就是網路號 + 主機號構成,然後由路由器負責通過 IP 來做網路之間的數據轉發。
路由器實現轉發要先根據 IP 種的主機號來查出 mac 地址,對應的查詢協議叫做 ARP 協議,也是通過廣播的方式實現的。
這樣就實現了 internet 上任意兩台主機的 IP 到 IP 的通信。
我們平時軟體開發時用的 IP、TCP、HTTP、DNS 等協議,都是在這些基礎之上實現的。網路層之下的知識,確實對我們開發沒啥幫助,但了解下還是挺有意思的。
㈡ 怎樣用一根網線連接兩台電腦,並相互傳輸文件
用一根網線連接兩台電腦,並相互傳輸文件的具體操作方法如下:
1、將兩台電腦直接用網線相連。
拓展資料:
文件傳輸(file transfer)是將一個文件或其中的一部分從一個計算機系統傳到另一個計算機系統。將一個文件或其中的一部分從一個計算機系統傳到另一個計算機系統。它可能把文件傳輸至另一計算機中去存儲。
或訪問遠程計算機上的文件,或把文件傳輸至另一計算機上去運行(作為一個程序)或處理(作為數據),或把文件傳輸至列印機去列印。由於網路中各個計算機的文件系統往往不相同,因此,要建立全網公用的文件傳輸規則,稱作文件傳輸協議(FTP)。
㈢ 網路數據是如何在TCP/IP各層之間傳輸的
邏輯鏈路控制層(Logic Link Control,LLC )
LLC對兩個節點中的鏈路進行初始化,防止連接中斷,保持可靠的通信。
介質訪問控制層((Media Access Control,MAC )也就是平常說的MAC層。
MAC層用來檢驗包含在每個楨中的地址信息。
在下面會分析到。還要明白一點路由器是在網路層的,而網卡在數據鏈路層。
我們知道,ARP(Address Resolution Protocol,地址轉換協議)被當作底層協議,用於IP地址到物理地址的轉換。在乙太網中,所有對IP的訪問最終都轉化為對網卡MAC地址的訪問。如果主機A的ARP列表中,到主機B的IP地址與MAC地址對應不正確,由A發往B數據包就會發向錯誤的MAC地址,當然無法順利到達B,結果是A與B根本不能進行通信。
首先我們分析一下在同一個網段的情況。假設有兩台電腦分別命名為A和B,A需要相B發送數據的話,A主機首先把目標設備B的IP地址與自己的子網掩碼進行「與」操作,以判斷目標設備與自己是否位於同一網段內。如果目標設備在同一網段內,並且A沒有獲得與目標設備B的IP地址相對應的MAC地址信息,則源設備(A)以第二層廣播的形式(目標MAC地址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備(A)與目標設備(B)的IP地址。同一網段中的所有其他設備都可以收到並分析這個ARP請求報文,如果某設備發現報文中的目標IP地址與自己的IP地址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC地址信息。為了減少廣播量,網路設備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次 ARP的請求與響應過程中,通信雙方都把對方的MAC地址與IP地址的對應關系保存在各自的ARP表中,以在後續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的映射關系。