TCP IP協議原理學習筆記(1)

2021-03-31 08:56:32 字數 4109 閱讀 8042

最近學習了網路的原理,在此做乙個學習小結。

要知道為什麼會出現ip協議首先必須明白兩個概念:1,什麼是網路。2,什麼是網際網路。

什麼是網路?我的理解是,在網路中的主機做乙個幀的傳送,幀不通過路由**就能到達的主機的集合組成乙個網路。簡單點就是所有主機都是兩兩相連的。

什麼是網際網路?簡單一點說就是網路的互連。幾個網路聯起來,就是網際網路。

為了形象表示,用下圖來說明區別:

圖一表示網路,而圖二表示網路互連。他們的區別在哪呢?

圖一裡面的如果主機1發出幀,需要主機3做出響應,那麼2,3,4主機都會收到這個幀。這些主機收到幀後,把幀裡面的目標實體地址與本地的實體地址相比較,如果是就做出響應。不是就不做任何答覆。這樣就只有主機3做出響應。

在圖二裡面,就完全不一樣了。主機1要到達主機3,就不能傳送幀,而是要傳送ip資料報。因為只有主機2和路由器才收到主機1發的幀,但是路由器並不提供幀的**。所以路由器和主機2都丟掉了幀,這樣主機3就無法收到主機1的呼叫。那麼ip資料報怎麼就能達到呢?又要引入乙個概念,arp對映,其實就是ip位址和網絡卡實體地址的繫結。(這裡假設10.0代表網路1網路的號,10.1代表網路2的網路號)主機1發往主機3的步驟:(1),判斷主機3是否在同一網路裡面。結果不在。(2),找到路由器的ip(一般路由器都設定成了閘道器)作出arp對映,就找到了路由器的實體地址。(3)把找到的路由器的實體地址填到幀的首部,把ip資料報放在幀的資料部分,而後發出。(4)路由器收到訊息並做出響應。(5)路由器提出ip資料報查詢目的ip位址。(6)路由器裡面有主機3的ip位址 ,所以能夠做出arp對映,找到主機3的實體地址,。(7)用主機3的實體地址填寫幀的首部,把收到ip包放入幀的資料部分。傳送幀。注意,這時主機1,2,3,4都能收到路由器傳送的幀,但只有主機3才做出響應。這樣主機1的訊息就能達到主機3了。是不是有點驚奇。我就是這麼覺得的。

現在再來看,幀是基於物理線路的,所以必須兩兩相連才能互發幀。那麼inter***為什麼不做成網路,而是以網際網路的形式出現呢?是不是因為世界上所有的計算機不可能兩兩相連,所以必須是網際網路呢?

答案其實並不是這樣!

這裡又要引出乙個概念:網路的型別。(注意是網路的型別,而不是網際網路的型別。網路和網路互聯是決然不同的。我原來出現的錯誤理解經常就是出現在這裡)網路可分為:乙太網,令牌網,等等(我只記得這兩個)。他們都是對幀的傳送時間做的規定。 乙太網中,主機檢測網路是否在閒置狀態,如果是就傳送幀,如果不是就等待一段時間再檢測。而令牌則是對令牌的傳遞,有令牌的才能傳送。這樣就避免了衝突。大家風水輪流轉,這是個平均主意。

現在再來回答剛才的問題,在inter***裡面有很多不同型別的網路,這些不同型別的網路決不可能在乙個網路裡面。還有另外乙個主要原因:如果inter***在乙個網路裡面,並且假設是乙太網。那麼inter***上的幾十億個主機都來搶這乙個匯流排。那麼,管他什麼10m光纖,就算是10mmm光纖都不頂用。這樣就出現了網路互連的概念。網路互聯,可以讓不同的網路自己傳遞自己的資訊。而不干擾其他的網路.。只有某個網路裡面的主機要訪問另乙個網路裡面的主機時,才需要跨越網路。

講完了網際網路的概念,就要開始講講ip協議了。幀是在網路裡面傳播的單位,而ip包則是在網際網路裡面傳播的單位。幀是用實體地址做為門牌號碼,而ip包則用ip位址作為門牌號碼。ip位址是用4個八位組(4個位元組)點分來表示,例:10.1.0.11。

那麼是不是每個主機的ip位址可以隨意設定呢?在網際網路裡面是不行的,這裡又兩個原因:乙個是二義性,另乙個是無法實現傳遞。當ip可以隨意設定的時候來看下面乙個圖:

主機1如果想要傳送資料報給主機3。那麼資料報就先傳送給路由器1,通過路由器1**給路由器2,路由器2再發給主機3。這是理想情況,但有個問題。就是路由器1怎麼知道把資料報是發給路由器2,而不發給路由器3呢?這裡有兩種辦法:

1. 主機1的ip資料報裡面包涵所有到達主機3所經過的路由器ip位址。

2. 路由器1的選路表中包涵要到達主機3所要投遞的路由器位址。

這兩種辦法在小型的區域網中,還是可行的。但是放在inter***中,那將代表inter***的末日到來了。

為了適應inter***的需要,ip位址有了新的解釋。ip位址可分為網路段和主機段。ip的網路可分為a,b,c三類。a類中ip的第乙個bit為0,用前8位表示網路號。b類中第乙個bit為1,第二個為0,用前16位表示網路號。c類中第乙個bit為1,第二個為1,用前24位表示網路號。這樣路由器在分析ip位址時就先提出前兩位bit,判斷出應該提出ip中的多少位來表示網路號,然後根據路由表中網路號對應的另乙個路由器的ip位址來傳送該資料報。再來看和上面類似的圖,不過這次的ip位址是按照網路段和主機段來劃分的。

現在如果主機1要傳送資料報給主機2。首先路由器2受到資料報,並分析目的ip位址2.0.0.2,2.0.0.2是個a類位址,第乙個點號前面的代表網路號,得到網路號為2。路由器1的路由表中包涵了網路號為2所要傳送的路由器2的ip位址。則路由器1把該資料報傳送給路由器2。路由器2收到ip資料報,查詢目的ip並分析ip的網路號,發現該網路號和自己的網路號相同,則再分析ip位址的全段。發現和主機2的ip位址一致,就把該資料報發給主機2。

這樣,乙個資料報的傳遞就成功了。一切是那麼自然。但隨著網路的增加(注意是網路的增加,不是主機的增加),又會出現問題。看下圖:

在這樣的網路中,再來看主機1傳送ip資料報給主機2的經過。前幾個步驟和上面是一樣的,但當資料報到達路由器2後就不同了。路由器2發現已經在本網了,但沒有乙個和它相連的主機ip號和目的號碼一樣。這樣它就不能再**了,資料報將被丟掉。那麼該怎麼辦呢?

一般的做法是把主機2和主機6組成的網路作為路由器2所在網路的乙個子網。為路由器4分配乙個網路號。但在inter***上ip位址中只有乙個網路號,並且這個網路號已經分配路由器2中,哪來另乙個網路號?這裡又出現了乙個新的概念,子網掩碼。子網掩碼和ip位址一樣,由32位組成,用點分發表示。在子網掩碼中為1的位表示網路號。在圖中,路由器2把子網掩碼設定為255.255.0.0。這樣,使得在路由器2的網路中,網路號又有了新的解釋,它是以第二個點號前面的兩個位元組表示網路號。那麼在路由器2就可以為路由器4分配乙個網路位址就是2.1。

在這裡先提個問題,路由器4的子網掩碼是不是也必須設定成255.255.0.0呢?這個問題的答案是否定的。看看資料傳遞的過程就知道了。當路由器2收到髮網本網的ip後,再用子網掩碼來找到網路號為2.1。然後在路由表中找到網路號2.1所對應的路由器4的ip位址。這樣就會把資料報發給路由器4。路由器4收到資料報後,就會遇到乙個問題,路由器4的本網位址是2,還是2.1?答案是2。每個路由器的本地**的設定都是按照ip位址中規定的網路段來設定的。所以當路由器4收到資料報後,首先按照ip位址的網路分類方法提出ip位址為2.1.0.2的網路號2,發現和本地的網路號相同,然後就提出ip位址的全段,在路由表中查到2.1.0.2位址所對應的主機2。這樣就把資料報發給了主機2。

從上個例子中可以得到乙個結論:子網掩碼並不能增加ip位址的數量,只能增加網路的數量。增加網路的數量優點是明顯的,它可以降低網路的負荷並且使得組網更加靈活。但它又有乙個很大的缺點:降低了ip位址的可移動性。網路越多,ip位址的可移動性就越差。你不可能把屬於乙個網路裡面的主機移動到另乙個網路裡面,並且不改變它的ip位址。如果這樣做了,那麼就永遠都接收不到要發給自己的資料報。

還有乙個只得一提的問題就是共享ip上網。在inter***中不僅僅只有ip的網路號可以代表乙個網路,乙個ip位址其實也可以代表乙個網路(只不過不是很合法)。在現實生活中,經常都遇到這樣的情況。乙個adsl,連上幾家使用者,共享上網。這裡面用到了乙個nat(網路位址轉換)技術。這個技術把資料的傳遞分為兩個部分,乙個是資料的向內傳,另乙個是資料的向外傳。

當主機1傳送乙個資料報給伺服器時,伺服器首先檢查目的ip網路段是不是內部網路。如果是就不向外部傳送,直接在內部網路查詢ip位址進行傳送。如果部是外部網路,就向電信傳送資料報,但這時要做2個操作:1,在nat轉換表中填入乙個記錄。nat轉換表中有兩列:一列是內inter***上的主機ip位址,另一列是內網的主機ip位址。把主機1的請求的ip填入前一列,把主機1的ip填入後一列。 2,改變ip資料報中源ip的位址,把外部ip位址(219.139.206.157)填入資料報中源ip位址部分。然後發出。

當資料外網的資料傳進來時,伺服器先檢查ip資料報是從**發進來的。然後對照nat轉換表找到網內目的ip的位址。再把目的ip的位址填入ip資料報中,發給目的主機。nat原理就是這樣。但其實現並不這麼簡單,包涵許多控制來維護網路的突發性意外。

這是我對ip協議的乙個小結,講的都是我原來比較困惑的地方。把它放到網路上,希望對一些朋友有點幫助。另外,如果其中有錯誤的地方,也可以提出來,大家共同進步。下次再寫第二篇,小結tcp協議和它對上層應用提供的服務。

zigbee 原理學習筆記(1)

pan personal area network 個人區域網路 wpan personal area network 無線個人區域網路 wapan網路為近距離返回內的裝置建立無線連線,把幾公尺範圍內的多個裝置 通過無線方式連線在一起使他們可以互相通訊甚至介入區域網或者網際網路。ieee 802.1...

Http協議原理學習

http協議用於在internet上傳送和接收訊息。http協議是一種請求 應答式的協議 客戶端傳送乙個請求,伺服器返回該請求的應答,所有的請求與應答都是http包。http協議使用可靠的tcp連線,預設埠是80。http的第一 個版本是http 0.9,後來發展到了http 1.0,現在最新的版本...

TCP IP協議學習筆記

最近正在上網路協議分析的課程,課程已經接近尾聲,因此做一些總結性的記錄。為什麼要進行分層呢 我們思考這樣乙個問題 我打算實現乙個qq,我需要解決哪些問題呢?假設qq伺服器現在已經知道了我要登入,然後他傳送給我乙個訊息告訴我說他就是qq的伺服器,那麼我可以相信他嗎?會不會是其他的搗蛋鬼冒充qq伺服器給...