計算機網絡——網絡層
一、虛擬線路與數據報線路
1、 在網絡層提供有連接的計算機網絡為虛電路網絡; 如因特網;它需要VC(虛擬電路)號,用於建立虛擬電路的報文稱為信令報文,相關的協議稱為信令協議;
無連接的網絡為數據報網絡;如ATM、幀中繼等;
2、 由於虛電路的建立和釋放需要占用一定的時間,因此虛電路方式不適合站點之間具有頻繁連接和交換短小數據的應用,例如:交互式的通信。
二、路由器的工作原理
1、路由器的交換結構有三種:1、 過內存型 2、總線型(一次只能有一個分組占用總線) 3、互聯網絡交換(這個最好啦)
2、對於輸出端口來說,分組排隊占滿內存時需要進行丟棄,有一個就需要主動隊列管理算法(AQM)進行管理,策略為隨機早期檢測(RED);
三、IP協議
1、 網絡層的分組被稱為數據報;
2、 (http://blog.csdn.net/ce123_zhouwei/article/details/17453033)
版本:占4位,指IP協議的版本.通信雙方使用的IP協議版本必須一致.日前廣泛使用的 IP協議版本號為 4 (即 IPv4).IPv6 目前還處於起步階段.
首部長度:占 4 位,可表示的最大十進制數值是15.請註意,這個字段所表示數的單位是32位字 (1個32位字長是4 字節),因此,當 IP 的首部長度為 1111 時 (即十進制的 15),首部長度就達到 60字節.當 IP 分組的首部長度不是4字節的整數倍時,必須利用最後的填充字段加以填充.因此數據部分永遠在 4字節的整數倍開始,這樣在實現 IP協議時較為方便.首部長度限制為 60字節的缺點是有時可能不夠用.這樣做的目的是希望用戶盡量減少開銷.最常用的首部長度就是 20 字節 (即首部長度為 0101),這時不使用任何選項.
服務類型:
總長度:總長度指首都及數據之和的長度,單位為字節.因為總長度字段為 16位,所以數據報的最大長度為 2^16-1=65 535字節.在IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據字段的最大長度,即最大傳送單元 MTU (Maximum Transfer Unit).當一個數據報封裝成鏈路層的幀時,此數據報的總長度 (即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值,否則要分片;
標識 (Identification):占 16位.IP軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加 1,並將此值賦給標識字段.但這個"標識"並不是序號,因為 IP是無連接的服務,數據報不存在按序接收的問題.當數據報由於長度超過網絡的 MTU 而必須分片時,這個標識字段的值就被復制到所有的數據報的標識字段中.相同的標識字段的值使分片後的各數據報片最後能正確地重裝成為原來的數據報.
標誌 (Flag):占3 位,但目前只有2位有意義. 標誌字段中的最低位記為 MF(More Fragment).MF=1即表示後面"還有分片"的數據報.MF=0表示這已是若幹數據報片中的最後一個.標誌字段中間的一位記為DF(Don‘t Fragment),意思是"不能分片",只有當 DF=0時才允許分片.
片偏移:占 13位.較長的分組在分片後,某片在原分組中的相對位置.也就是說,相對用戶數據字段的起點,該片從何處開始.片偏移以 8個字節為偏移單位,這就是說,每個分片的長度一定是 8字節(64位)的整數倍.
生存時間:占 8位,生存時間字段常用的英文縮寫是TTL(Time To Live),其表明數據報在網絡中的壽命.由發出數據報的源點設置這個字段.其目的是防止無法交付的數據報無限制地在因特網中兜圈子,因而白白消耗網絡資源.最初的設計是以秒作為 TTL的單位.每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間.若數據報在路由器消耗的時間小於 1 秒,就把TTL值減 1.當 TTL值為 0時,就丟棄這個數據報.
(註意:ip6已經廢除了它了,不安全(分片攻擊),並且吧,麻煩)
協議:占 8 位.協議字段指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程.詳細資料請看文章最後的註釋.
IP選項: ip6也廢它了,因為吧,有它的存在的話,首部不固定,不好;
3、 IP中的廣播地址為:255.255.255.255,網絡內的小組的主機都可以收到;
四、 動態主機配置協議:
DHCP;主機發送采用UDP、端口號為67, 服務器回復采用 UDP、68端口;工作模式為客戶機/服務器模式;(http://tonyguo.blog.51cto.com/379574/163475/)
1. 尋找DHCP Server。
當DHCP客戶機第一次登錄網絡的時候(也就是客戶機上沒有任何IP地址數據時),它會通過UDP 67端口向網絡上發出一個DHCPDISCOVER數據包(包中包含客戶機的MAC地址和計算機名等信息)。因為客戶機還不知道自己屬於哪一個網絡,所以封包的源地址為0.0.0.0,目標地址為255.255.255.255,然後再附上DHCP discover的信息,向網絡進行廣播。
DHCP discover的等待時間預設為1秒,也就是當客戶機將第一個DHCP discover封包送出去之後,在1秒之內沒有得到回應的話,就會進行第二次DHCP discover廣播。若一直沒有得到回應,客戶機會將這一廣播包重新發送四次(以2,4,8,16秒為間隔,加上1-1000毫秒之間隨機長度的時間)。如果都沒有得到DHCP Server的回應,客戶機會從169.254.0.0/16這個自動保留的私有IP地址中選用一個IP地址。並且每隔5分鐘重新廣播一次,如果收到某個服務器的響應,則繼續IP租用過程。
2. 提供IP地址租用
當DHCP Server監聽到客戶機發出的DHCP discover廣播後,它會從那些還沒有租出去的地址中,選擇最前面的空置IP(它會選一個沒有用的,然後ping ,沒有主機回復ICMP,則表示真的沒有用),連同其它TCP/IP設定,通過UDP 68端口響應給客戶機一個DHCP OFFER數據包(包中包含IP地址、子網掩碼、地址租期等信息)。此時還是使用廣播進行通訊,源IP地址為DHCP Server的IP地址,目標地址為255.255.255.255。同時,DHCP Server為此客戶保留它提供的IP地址,從而不會為其他DHCP客戶分配此IP地址。
由於客戶機在開始的時候還沒有IP地址,所以在其DHCP discover封包內會帶有其MAC地址信息,並且有一個XID編號來辨別該封包,DHCP Server響應的DHCP OFFER封包則會根據這些資料傳遞給要求租約的客戶。
DHCP從地址池中選擇IP地址,以如下優先級進行選擇:
1、當前已經存在的Ip Mac的對應關系
2、Client以前的IP地址
3、讀取Discovery報文中的Requested Ip Address Option的值,如果存在並且IP地址可用
4、從配置的Subnet中選擇IP地址:
3. 接受IP租約
如果客戶機收到網絡上多臺DHCP服務器的響應,只會挑選其中一個DHCP OFFER(一般是最先到達的那個),並且會向網絡發送一個DHCP REQUEST廣播數據包(包中包含客戶端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務器地址等),告訴所有DHCP Server它將接受哪一臺服務器提供的IP地址,所有其他的DHCP服務器撤銷它們的提供以便將IP地址提供給下一次IP租用請求。此時,由於還沒有得到DHCP Server的最後確認,客戶端仍然使用0.0.0.0為源IP地址,255.255.255.255為目標地址進行廣播。
事實上,並不是所有DHCP客戶機都會無條件接受DHCP Server的OFFER,特別是如果這些主機上安裝有其它TCP/IP相關的客戶機軟件。客戶機也可以用DHCP REQUEST向服務器提出DHCP選擇,這些選擇會以不同的號碼填寫在DHCP Option Field裏面。客戶機可以保留自己的一些TCP/IP設定。
4. 租約確認
當DHCP Server接收到客戶機的DHCP REQUEST之後,會廣播返回給客戶機一個DHCP ACK消息包,表明已經接受客戶機的選擇,並將這一IP地址的合法租用以及其他的配置信息都放入該廣播包發給客戶機。
客戶機在接收到DHCP ACK廣播後,會向網絡發送三個針對此IP地址的ARP解析請求以執行沖突檢測,查詢網絡上有沒有其它機器使用該IP地址;如果發現該IP地址已經被使用,客戶機會發出一個DHCP DECLINE數據包給DHCP Server,拒絕此IP地址租約,並重新發送DHCP discover信息。此時,在DHCP服務器管理控制臺中,會顯示此IP地址為BAD_ADDRESS。
如果網絡上沒有其它主機使用此IP地址,則客戶機的TCP/IP使用租約中提供的IP地址完成初始化,從而可以和其他網絡中的主機進行通訊。
五、 IP分類
上面的私有地址與下面的 NAT 有關;
而 169.254.X.x與上面 提到的DHCP協議有關;
六、網絡地址轉換(NAT)
- 就是一個子網內的IP設為私有的, 對外是隱藏的;
- 原理為:路由器中的NAT服務器裏有一個NAT轉換表, 子網內的主機發送數據時, 使用端口a加源IP b(私有IP), 到達NAT時,NAT服務器會把源IP 與端口都換了, 改為公開有IP 與一個它自己決定的端口, 它們 之間的映射就是NAT轉換表了;這這是原理;
A類、b類、C類的IP私有地址在5中上面已經說明了;
七、網際控制報文協議ICMP:
- 最典型的用途為差錯報告;
- ICMP的類型:
- ping 原理: 使用ICMP, 發送一個 8 0 的回顯請求; 它是不需要端口的,因為它用的是ICMP消息,主機收到 ping消息以後 , 到達本機的IP層協議後,IP層檢查後,將有用的信息提取後交給ICMP協議(不用UDP和TCP,所以不用端口);
- tracerout 原理:它發送一系列的不可UDP消息 ,它的端口是不會到達的(對不對應吧),然後呢,IP數據報裏的TTL分別為1, 2, 3,*** ,到達路由器時,如果TTL變為0了,路由器就回復 11 0 的TTL過期(另外包括路由器名與IP), 當到達 要訪問的主機時,由於端口找不到,此時也會用ICMP協議發送一個3 3 的端口不可達消息;
八、選路算法
根據算法的全局性還是局部性,可以分為全局選路算法(又稱為鏈路狀態算法LS) 與局部選路算法(典型的為距離向量選路算法DV);
路由選擇分層次的: 自治系統內部選路協議與自治系統間的選路協議;
內部: RIP(路由選擇信息協議), 是一個距離向量協議, 使用UDP、52端口; OSRF:開放最短路徑優先協議, 鏈路狀態協議,使用IP、89端口;
之間: BGP協議,還是不是單純的適量距離協議,也不是單純的鏈路狀態協議, 使用TCP;
計算機網絡——網絡層