序言
沒保存,電腦沒動放着去吃飯,結果win7就休眠了,啟動雖然網頁度還在,可以我的博文沒保存啊,心痛,只能在重頭來了,只能說博文應該改進改進,如果直接關了,應該幫用戶自動保存草稿的。重新寫的。反正今天下午的任務在這里擺着。加油
----WZY
一、回顧
TCP/IP協議棧:物理層、鏈路層、網絡層、傳輸層、應用層(會話層+表示層+應用層)
物理層:通過比特流在線路中傳輸來完成我們傳輸數據的目的,傳輸的方式很多種,傳輸的介質也很多中,光纖等
鏈路層:數據幀,在數據包(報)上加mac地址形成數據幀,其中的CRC檢測原理用來檢測數據的完整性,這一層用到的協議有PPP(點到點協議)、例如家中的撥號上網, CSMA/CD協議(廣播協議),在局域網中用的很多。其中會發生一系列的問題,和解決問題的辦法。
網絡層:數據包(報),加上源ip地址和目標ip地址了。這一層的協議有四種,ARP(地址解析協議)、RARP(逆地址解析協議)、ICMP(網際控制報文協議)、IGMP(網際組管理協議)。這四種協議只是和IP協議配套使用,。在一章還能學到的是數據包的結構是怎么樣的。什么是ip地址,為什么需要ip地址,怎么分配和區分ip地址的,這這一節我們度會講解到。
傳輸層:這里會講解到端口。常見的80端口,我們學習javaWeb時,使用Tomcat中,看到的是8080端口,瀏覽器使用的是80端口,這一節就會講到端口是干嘛用的。
應用層:待續。
二、網絡層
1、基礎知識
什么是ip地址?
不就是一連串數組加.組成的嗎,比如我們常常設置路由器時登錄192.168.1.1。這個就是ip地址。那到底是什么樣的呢?
ip地址就是32位,也就是4個字節組成,因為32位太長了,我們不好識別,所以每次將其分為8位一組,分成4組,然后在根據每組換算成10進制數組,組與組之間用.分隔開來,舉個例子,11111111,11111111,11111111,11111111就可以用255,255,255,255來表示了,所以每一組都是從0到255之間。現在在來看192.168.1.1這個ip地址,也能將其換成2進制來表示,只不過那樣太麻煩,讓人不易於看懂,所以就將其用10進制來表示。
ip地址的意義在哪里呢?要上網就需要一個ip地址,這個ip地址不能和別人一樣,獨一無二,因為在網絡上通信就是通過ip地址來找到你這台主機的,但是這個ip地址不是固定的,比如你在家撥號上網,是A這個ip地址,下一次撥號,可能就不是A,變成B了,這要看你所在的網絡給你分配了什么ip地址。如何通過ip查找到你,這個問題后面來討論。
ip地址的分類?
既然每個人的ip地址度不一樣,那一台主機怎么通過ip地址找到另一台主機的呢,茫茫人海,不可能一個個查找把,所以就有專門的人來管理和分配這個ip地址,
看看以前怎么分的地址(了解)
分類編址 = <網絡號>+<主機號>
網絡號由你所連的網決定,學校的局域網,公司的局域網,城市的廣域網等,就是相當於先市、在區、在到村這樣的。跟快遞一樣,你ip地址肯定也得這樣分,先找到大的,然后慢慢一層層找下去。
A類地址:網絡號有8位,第一位固定為0,127種,主機號有24位,那么就能給該類地址划分16777215個ip地址把,也就1千多萬個地址,意思就是比如你需要組建一個有1千多萬台主機的網絡,那么你就要去分配一個A類地址,要求給你一個網絡號,然后其中1千多萬的ip地址就由你自己分配了,最多也就只能分配127個這樣的網絡
B類:網絡號、主機號16位,就能有65535個網絡號和65535個主機號了。
C類:網絡號有24位,也就能夠分配1000多萬個網絡,但是主機號只有8位,也就是只能夠自己分配254台主機最多
D類:用於多播,多播后面講
E類:留着以后用
這就是我們老早以前所使用的ip地址,就是這樣分的,這樣看起來很合理啊,你看B類中,有那么多種,肯定夠分了把,但是會暴露出一個問題就是,C類地址只能分配254台主機,現在中小型網絡那么多,度超過了254台電腦,如果A公司有1000台電腦,那他肯定要去分配B類地址,就造成了幾萬個的ip地址浪費了。這顯然不是很合理。
划分子網 = <網絡號>+<子網號>+<主機號>
這是ip地址分類的第二大步,中間加了一個子網號,這樣就加大了對上面的A類和B類地址的使用率。也就減少了A類和B類地址的浪費,但是也有問題就是C類地址不管怎么划分,他所容納的主機太小了,隨着網路的擴增,人人度使用電腦,那么A類和B類遲早度會用光,所以就用到了我們現在的IP地址
無分類編址 = <網路前綴>+<主機號> 這個就是我們現在用的ip地址的算法。
這個一看,跟第一種分類編址一樣呀,其實很大的不同就在於分類編址的網絡號不能變,是固定長度,而無分類編址通過網絡前綴可變化,就能根據你需要多少個主機號來自由給你分配網絡前綴了。
網絡前綴:也就是用不定長的一連串1來表示ip地址的網絡號。什么意思呢?
網絡前綴:255.0.0.0 ip地址:192.168.1.1 那么該ip地址的前8位就屬於網絡號。
網絡前綴:255.224.0.0 ip地址:192.255.1.1 因為255是8個1,224是111 00000 ,所以前11位表示網絡號,也就是這個ip地址是處於192.224.0.0這個網絡中,在這個網絡中,能包含21個1轉換為10進制這么多的主機。
這個網絡前綴我們也稱子網掩碼,所以現在知道ip地址和我們的子網掩碼什么意思了嗎。
例如:已知ip地址141.14.72.24,所在網絡的子網掩碼是255.255.192.0,試求其網絡地址?
子網掩碼:255.255.192.0 11111111,11111111,11000000,00000000
ip地址:141.14.72.24 10001101,00001110,01001000,00011000
所以根據子網掩碼知道ip地址的前18位為網絡號,網絡地址就為:10001101.00001110.01000000.00000000 轉換為10進制就是141.14.64.0, 能夠存納14位1也就是16383台主機。(別問我怎么算的,肯定拿二進制轉換器啊,不可能自己手算把,哈哈,二進制轉10進制這么多怎么手算呢,記住特殊的,8個1就是255)
ip地址和MAC地址的區別?
mac地址:物理地址
ip地址:網絡中的地址
這兩者的關系是什么呢?在網絡中我們通過主機的ip地址,先找到他的網絡地址,到達了網絡地址后,然后通過該網絡中的老大(路由器)來分析一下這個ip地址是你網路中的哪個主機,這時,老大(路由器)就通過該目標ip地址改到對應主機的mac地址,既然知道了mac地址,就能找到該計算機了。就好比什么呢。路由器是每次分配給你的ip地址不一樣,但是你的mac地址肯定不會變,所以就根據ip地址找到你的mac地址。但是怎么找到的呢?就要通過網絡層中的ARP(地址解析協議)協議了。
知道了基礎的知識后,現在來講解網絡層的幾個協議
RARP:逆地址解析協議(現在度不單獨講這個了,所以我在圖中畫在紅色圓圈內部,因為RARP已經被DHCP協議給包含了,DHCP協議在后面會講解到),所以我們下面講的就4個協議。
二、ARP協議
地址解析協議:通過ip地址來解析主機的mac地址,是怎么個過程呢,拿局域網來說,一個局域網中有很多主機,主機A想和局域網中的主機B通話,但是只知道對方的ip地址,所以他就通過發廣播,給局域網中所有的主機,問這個ip地址是誰,主機B收到了這個信息,通過網絡適配器(網卡)就發現自己是這個ip地址,然后就把自己的mac地址發給源主機,這樣就知道了mac地址,就能夠通信了。
類似的,在跨網絡中就不是直接發廣播了,先通過ip地址找到對應的網絡地址,如何找到的對應的網絡地址呢,通過路由器,每個路由器度有三層。網絡層、鏈路層、物理層,也就是說最高能夠識別網絡層中的東西來,那么路由器也就有ARP協議了,每個路由器度能識別出目標ip地址在哪個路由器上,這其中涉及到了很多算法,我們這里不做更多的解釋,簡單來說,路由器能根據目標ip地址找到下一跳路由器的mac地址,然后一步一步跳下去,直到找到目標ip地址的網絡地址的路由器,然后通過該路由器來找到目標ip地址的mac地址,這樣就能夠找到目標主機了。這就是ARP協議。
發送方是主機,要把IP數據報發送到本網絡上的另一個主機。這時用 ARP 找到目的主機的硬件地址。
發送方是主機,要把 IP 數據報發送到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機。這時用 ARP 找到目的主機的硬件地址。
發送方是路由器,要把 IP 數據報轉發到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
三、IP協議
IP協議通過看一下IP數據包(報)的格式就知道IP協議是干嘛的了,就是來規定數據報的格式,以及定義的功能
固定部分:20個字節,一行是4個字節,有5行,自己看清楚
版本:占4位,IP協議的版本,通信雙方的IP協議版本要一致,普遍用IPv4,以后可能會用IPv6.
首部長度:占4位,可表示的最大十進制為15,單位是32位字(4個字節),表示首部最長為60個字節,也就是說除去固定部分的20個字節,可選字段和填充最多能是40個字節。
區分服務:占8位,1個字節。有些要傳輸的數據要立馬傳達到對面,比如視頻,語音這樣的,不能跟郵件慢慢吞吞的達到對方一樣,需要立馬送達,這就是為什么需要這個區分服務了
總長度:占16位,2個字節。占首部+數據部分 的總長度是多少。數據幀最長不能超過1500個字節,數據包就不能一次性發太大,如果發的太大就要選擇分片處理了。
標識:占16位,2個字節,一個計數器,每產生一個數據包,計數器就加1,當數據包被分片時,下面將會說到分片問題,所有分片后的數據包的標識度一樣。這樣相同的標識的數據包片就能夠重新組合到一起
標志:占3位,第一位暫時沒意義,第二位DF:不能分片的意思,為1時,不能分片,為0就可以分片 第三位MF 還有分片的意思,為0代表這是若干數據包中的最后一片
片偏移:占13位,在較長的分組在分片后,某片在原分組中的相對位置,幾個例子,1111,1111,1111,1111 這16位,分成4個數據包分片來發,第一個數據包分片的片偏移為1,第二個為5,第三個為9,第四個為13,就是這個意思,片偏移以8個字節為偏移單位,也就是說,每個分片的長度一定是8字節的整數倍,上面是以位來舉例說明問題,實際上單位是8個字節為單位。
生存時間:也就是ping命令中顯示的TTL字段,跳數限制,每經過一個路由器,就減1,當跳到0后,就丟棄該數據包。window系統的起始TTL為32、Linux64、xp:128
協議:占8位,數據包中數據部分使用的是什么協議,方便目的主機的IP層知道講數據部分上交給哪個處理。(也就是下一章要將的TCP還是UDP協議)
首部檢驗和:占16位。這個字段只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。
源地址:占32為,也就是源IP地址
目標地址:占32位,也是IP地址
可選部分:為了使整個數據包為整數個字節而設置的。
四、ICMP協議
這個比較簡單,就兩部分ICMP差錯報告報文、ICMP詢問報文 這個挺使用的,比如我們經常用來測試網絡連接暢通的ping命令等
ICMP差錯報告報文:檢測在傳送數據的過程中,發生的錯誤,如果發生了錯誤,會通過該協議返回給源主機一個帶有錯誤原因的數據包
終點不可達:發送數據后,路由器或主機不能完成交付數據報時,就會往源主機發送終點不可達報文
源點抑制:當路由器或主機由於網絡擁塞而丟棄數據報時,返回一個源點抑制報文
超時:
參數問題,在ip數據包中的首部有的字段不正確時,丟棄該報,返回參數問題報文
改變路由(重定向):路由器把改變路由報文發送給主機,讓主機下次直接經過改變后的路由器。
ICMP詢問報文:
回送請求和回答:主機向特定目標發出詢問,收到此報文必須返回一個ICMP回送回答報文。用於測試目的站是否可達。
時間戳請求和回答:請某個路由器或主機回答當前的日期和時間,用於進行時鍾的同步和測量時間。
五、IGMP協議
用於多播,解釋一下多播是什么把。
廣播:老師在台上講課,你們能隨時看到老師的電腦屏幕,因為采用的廣播,每個人度能接受到老師屏幕上所有的數據包
多播:在一個局域網中,有三個多播組,A、B、C,A在放java視頻,B在放C++視頻,C在放娛樂視頻,如果你想看Java視頻,那么你就調到A這個多播組中學習java視頻,學習累了,你就可以換到C這個多播組中看看娛樂節目,這就是多播的意思,相對廣播來說,自己需要什么就調什么,而不是跟廣播一樣,被動接受,他播到哪,就只能看到哪,多播能自由控制速度。
單播:50個人想看視頻,就得發送50個數據包。多播的話就發一個,然后通過路由器轉發50分給不同的人,
六、總結
注意:每個路由器度有一個路由表,並且主機也有記錄ip地址和對應mac地址的功能。並不是每次通信度需要發廣播詢問。
問題一: 分析從主機A找到主機B的過程?
1、A先在自己的網絡中發送廣播,通過ARP協議。問所有的主機,誰知道10.0.0.3這個ip地址的主機是誰,同時把自己的主機ip地址和mac地址一起發送,主機B發現自己是10.0.03這個ip地址,就把自己的mac地址發回去
2、主機A發現有人回應,就知道在自己本網絡中,然后就找到了目標主機,開始通訊
問題二:分析從主機A找到主機E的過程
1、主機A先發廣播看自己本網絡沒有該主機,沒有,然后就給ip地址為10.0.0.1這個路由器F1發信號獲得路由器的mac地址,然后給他發信號叫該路由器F1幫我們查找ip地址為12.0.0.3的主機。這個路由器的ip地址就網關,所以每台計算機上度要有三個東西,ip地址,子網掩碼,網關。
2、路由器因為知道所有的網絡在哪里,通過子網掩碼和ip地址,就能夠算出該ip地址在哪一個網段中,路由器就一跳一跳的經過路由器,知道找到對應網段的路由器F2
3、找到F2后,F2就以同樣的方式通過ip地址找到對應的mac地址,就這樣找到了。
省略了路由器如何找的這一步,這個可以自己看書,其中有很多中方式,很多種算法,我們就知道我們給ip地址和子網掩碼給路由器,路由器就知道下一跳給誰,知道找到對應網段
問題三:分析從主機A到主機E數據的形式。
傳輸層(還沒講):講各個數據段划分序號
網絡層:加上ip地址
數據鏈路層:加上mac地址和CRC檢測的FCS
物理層:轉化為比特流傳輸
集線器:只認識物理層,用來轉發比特流
交換機:能認識數據鏈路層,所以交換機有mac地址表,能夠記錄各種mac地址,下一次就能選擇性的轉發數據了
路由器,能認識網絡層,有路由表,所以能夠通過ip地址找到對應網段。