網絡day01-TCP/IP協議層

一、OSI七層協議和TCP/IP 四層協議程序員

物理層:定義了多種與物理介質相關的協議,如電壓、光強度、鏈接器尺寸或導線的金屬成份等。
數據鏈路層:包含了控制物理層的協議,定義如何訪問和共享介質、如何標識介質上的設備、如何在介質上發送數據以前完成數據成幀。典型的數據鏈路層協議有:IEEE802.3/以太網、幀中繼、ATM。
Internet層(網絡層):定義數據包格式和地址格式,進行路由選擇。
主機到主機層(傳輸層):包含了控制網絡層的協議(如數據鏈路層控制物理層),數據鏈路層與傳輸層都定義了流控和差錯控制機制,區別在於數據鏈路層控制兩臺設備的物理介質上的流量,而傳輸層控制的是邏輯鏈路上的流量,這種邏輯鏈路可能跨越多個物理鏈路。
應用層:經常使用於向用戶應用提供訪問網絡的接口,但也有些路由協議使用應用層,例如BGP使用TCP協議,RIP使用UDP協議。數據庫

二、 IP包頭編程

三、ARP地址解析協議緩存

當一臺設備須要發現另外一臺設備的數據鏈路標識符(MAC地址)時,它將創建一個ARP請求數據包。這個ARP請求數據包中包含目標設備的IPv4地址以及請求設備的源IPv4地址和MAC地址,而後ARP請求數據包被封裝在數據幀中,其中帶有源MAC地址和目標廣播地址。
當同一廣播域設備收到此數據包時,其餘全部設備會丟棄此數據包,只有目標設備會向源地址發送ARP響應數據包,並提供它的MAC地址。服務器

主機A:IP地址172.16.0.1(mac地址aaaa.aaaa.aaaa),查詢主機B:IP地址172.16.0.2(MAC地址bbbb.bbbb.bbbb)過程
ARP請求包,由A發出:
發送者源MAC地址    發送者源IP地址   目標MAC地址    目標IP地址
aaaa.aaaa.aaaa       172.16.0.1    0000.0000.0000    172.16.0.2網絡

ARP響應包,由B發出:
發送者源MAC地址  發送者源IP地址   目標MAC地址   目標IP地址
bbbb.bbbb.bbbb   172.16.0.2    aaaa.aaaa.aaaa  172.16.0.1工具

命令ui

Router#show arp    //查詢ARP表 Cisco路由器保存ARP表項的時間爲4個小時(14400S),這個缺省值能夠修改
Router(config)#int f0/0
Router(config-if)#arp timeout 1800  //ARP超時時間改成1800S

Router(config)#arp 172.16.1.1 0000.00a4.b74c snap    //靜態綁定ARP,並採用SNAP封裝類型
Router(config)#clear arp         //刪除ARP表中的動態表項

ARP協議還有幾種變形:
代理ARP
無端ARP
反向ARPspa

四、代理ARP代理

代理ARP也被叫作混雜ARP,代理ARP被路由器用來向主機代表自身可用的一種手段。
例如,主機A192.168.1.1向主機B192.168.2.1請求數據包,可是它沒有配置網關信息,所以也不知道如何去往路由器,這時它會向主機B發送一個ARP請求數據包。
本地路由器收到ARP請求數據包,而且本地路由器知道如何去往主機B,因而路由器將回復以上請求,把本身的MAC地址做爲ARP回覆數據包中的MAC地址,事實上本地路由器欺騙了主機A,讓主機A認爲路由器的接口就是主機B的接口,最終全部發向主機B的數據包都被髮送到路由器。

在IOS系統中,缺省狀況下代理ARP功能是打開的,能夠在每一個接口下關閉此功能。

no ip proxy-arp

五、無端ARP

主機使用本身的IPv4地址做爲目標地址發送ARP請求,這種ARP請求叫作無端ARP,主要有三個用途:
一、檢查重複地址。一臺設備能夠向本身的IPv4地址發送ARP請求,若是收到ARP響應則證實存在重複地址。
二、通告一個新的MAC地址。當一臺設備收到一個ARP請求,若是ARP緩存中已有發送者的IP地址,那麼與此IP地址對應的MAC地址將會被髮送者新的MAC地址所更新。
三、運行HSRP協議的路由器若是從其餘路由器變成主路由器,它會發送一個無端ARP來更新該子網主機上的ARP緩存。

在IOS系統中缺省狀況下是關閉的,能夠經過命令ip gratuitous-arps來激活它。

六、反向ARP

反向ARP能夠實現IP地址到已知硬件地址的映射。如無盤工做站在啓動時可能不知道本身啓動時的IPv4地址,經過RARP程序能夠容許它們改善ARP請求,其中硬件地址爲設備的硬件編入地址。RARP服務器將會向這些設備回覆相應的IPv4地址。
RARP在很大程度上已經被DHCP和自舉協議BOOTP的擴展協議所替代。並且這兩種協議還能夠提供IPv4地址之外的更多信息,並且還能夠跨越本地數據鏈路。

 七、ICMP

網絡控制消息協定(英文:Internet Control Message Protocol,ICMP)是網路協議族的核心協議之一。它用於TCP/IP網絡中發送控制消息,提供可能發生在通訊環境中的各類問題反饋,經過這些信息,令管理者能夠對所發生的問題做出診斷,而後採起適當的措施解決。

ICMP依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議,如TCP和UDP顯著不一樣:它通常不用於在兩點間傳輸數據。它一般不禁網絡程序直接使用,除了ping和traceroute這兩個特別的例子。 IPv4中的ICMP被稱做ICMPv4,IPv6中的ICMP則被稱做ICMPv6。

ICMP是在RFC 792中定義的互聯網協議族之一。一般用於返回錯誤信息或是分析路由。ICMP錯誤消息老是包括了源數據並返回給發送者。 ICMP錯誤消息的例子之一是TTL值過時。每一個路由器在轉發數據包的時候都會把ip包頭中的TTL值減一。若是TTL值爲0,「TTL在傳輸中過時」的消息將會回報給源地址。 每一個ICMP消息都是直接封裝在一個IP數據包中的,所以,和UDP同樣,ICMP是不可靠的。

雖然ICMP是包含在IP數據包中的,可是對ICMP消息一般會特殊處理,會和通常IP數據包的處理不一樣,而不是做爲IP的一個子協議來處理。在不少時候,須要去查看ICMP消息的內容,而後發送適當的錯誤消息到那個原來產生IP數據包的程序,即那個致使ICMP訊息被傳送的IP數據包。

不少經常使用的工具是基於ICMP消息的。traceroute是經過發送包含有特殊的TTL的包,而後接收ICMP超時消息和目標不可達消息來實現的。ping則是用ICMP的"Echo request"(類別代碼:8)和"Echo reply"(類別代碼:0)消息來實現的。

八、TCP

TCP是面向鏈接的通訊協議,經過三次握手創建鏈接,通信完成時要拆除鏈接,因爲TCP是面向鏈接的因此只能用於端到端的通信。
TCP提供的是一種可靠的數據流服務,採用「帶重傳的確定確認」技術來實現傳輸的可靠性。TCP還採用一種稱爲「滑動窗口」的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。
若是IP數據包中有已經封好的TCP數據包,那麼IP將把它們向‘上’傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的鏈接。TCP數據包中包括序號和確認,因此未按照順序收到的包能夠被排序,而損壞的包能夠被重傳。
TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。
面向鏈接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)須要高度的可靠性,因此它們使用了TCP。DNS在某些狀況下使用TCP(發送和接收域名數據庫),但使用UDP傳送有關單個主機的信息。

九、UDP

UDP是面向無鏈接的通信協議,UDP數據包括目的端口號和源端口號信息,因爲通信不須要鏈接,因此能夠實現廣播發送。
UDP通信時不須要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程序員編程驗證。
UDP與TCP位於同一層,但它無論數據包的順序、錯誤或重發。所以,UDP不被應用於那些使用虛電路的面向鏈接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務須要交換的信息量較小。使用UDP的服務包括NTP(網絡時間協議)和DNS(DNS也使用TCP)。
欺騙UDP包比欺騙TCP包更容易,由於UDP沒有創建初始化鏈接(也能夠稱爲握手)(由於在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨着更大的危險。


相關文章
相關標籤/搜索