1.當請求網站時,后台發生的操作
首先我們訪問一個網站,輸入目標網站的域名,但是本機不認識域名,機器之間不會用英語對話哈,他們的識別靠的是ip地址,
1.所以這時候要做域名解析,也就是從域名解析出目標ip地址的過程。首先機器會在本地存儲的hosts文件中查找常用的ip地址,如果沒有找到,則需要dns解析,dns是一個存儲域名和ip地址之間映射的數據庫系統,查找方式是向上分級查找,好這樣就可以找到目標的ip地址了,但是僅有目的地,還不知道怎么去,所以還需要知道中轉站點。
2.也就是我們發送的請求包需要通過哪些路由器,這個是由ospf路由算法協議決定的。Ospf算法可以幫助我們找到最佳的路由傳輸路線,有了路線之后就可以發送請求了。
3.ip協議決定了我們出發站和終點站,而ospf協議解決了路線問題,那么如何到達下一個站點呢?這個工作是由arp協議完成的,arp協議則負責路由之間的運送,尋找下一個路由。
4.以上工作都完成之后,我們仍然不能確保報文和消息發送過去后,被服務器穩定的接收到。這時候面向連接的可靠的tcp協議就發揮作用了,通過與服務器的三次握手建立一個穩定的連接。
5.終於和服務器建立穩定連接了,之后就可以發送請求了,此時http協議的請求信息將通過tcpip網絡模型的層層封裝,發送給服務器,服務器接受之后,解析並且做出響應,回送http響應包,到達本機后,本機再層層解封裝,到達應用層,被瀏覽器所使用。
6.得到的響應包中是一些HTML文件,其中可能會引用各種其他文件,針對這些web服務器端再加載相應的模塊,得到對應信息后經過瀏覽器的渲染,就呈現出我們所看到的頁面。
7.當不再需要交互時,則做出tcp的四次揮手,斷開與服務器的連接。
以下則是上述過程中工作的協議詳解
DNS地址解析協議:域名解析,也就是從域名解析出目標ip地址的過程。首先機器會在本地存儲的hosts文件中查找常用的ip地址,如果沒有找到,則需要dns解析,dns是一個存儲域名和ip地址之間映射的數據庫系統,查找方式是向上分級查找。
Ospf協議:開放式最短路徑優先(Open Shortest Path First,OSPF),是廣泛使用的一種動態路由協議,負責管控與形成區域網絡拓朴結構。
1.當網絡結構發生變化時,鏈路變化或者是路由器的增刪,相關的路由器會產生鏈路狀態廣播數據包(LSA),該數據包包括鏈路上的路由器狀態信息。
2.路由器之間通過泛洪機制交換鏈路狀態信息:泛洪機制,就是一方面接受ospf相鄰路由器傳來的信息,同時向相鄰的路由器發送狀態信息,根據其更新自己的連接情況數據庫。
3.以這種泛洪機制,逐漸收斂,從而形成一個完整的網絡路由器拓朴結構數據庫,同時結構內的各個路由器都已經均保持了一個該信息數據庫的副本。
4.形成路由表:所有的路由器根據連接信息計算出最短路徑,來形成各自的路由表,使用時就可以直接根據ospf形成的路由表確定傳輸路徑。
Ospf的傳輸有三種驗證方式:
1.無驗證:交換信息時沒有做相互認證。
2.口令驗證:交換信息時,利用口令做相互認證
3.密碼驗證:OSPF協議使用的簽名算法是MD5算法
針對ospf驗證方式的攻擊:
1.無驗證:交換信息時不做相互認證,攻擊者可以直接竊取信息。
2.口令驗證:由於在傳輸過程中,數據和口令都是以明文形式傳輸的,所以攻擊者可以利用線路分析儀竊取口令
3.密碼驗證:MD5簽名算法在04年被山大王小雲攻破,那么這種簽名認證也是不可靠的。
基於上述驗證攻擊之后,還有一種篡改報文攻擊。
路由器的ospf協議會定時相鄰路由器發送hello報文,以發現新鄰居或者維護現有鄰居信息,如果我們已經攻破了認證,那么就可以篡改這些hello報文,從而改變路由器的鄰居情況,例如刪除它的鄰居從而孤立它 。或者修改指定路由器身份,導致ospf需要頻繁的進行路由器選舉,從而消耗路由器的資源。
Arp協議:地址解析協議,即ARP(Address Resolution Protocol)
作用是將目標的ip地址解析成通信目標的物理地址(也就是mac地址),從而保證通信的順利進行。
Arp在請求時,本身是有一定緩存的,當請求訪問一個ip地址,arp會現在緩存中查找是否有記錄的ip地址和mac地址的映射,如果有則直接利用,如果沒有,再將本機的ip的mac和目標ip廣播到本地網絡上,本地網絡接受到數據包,將比對目標ip地址,如果符合,它將記錄發送方的ip和mac,同時返送自己的mac,這樣發送方就得到了目標的mac地址,從而保證通信的正常進行。
Arp欺騙攻擊:因為arp協議的工作前提時本地網絡上的各個主機是相互信任的,所以在存儲ip和mac映射時,不會加以認證。所以攻擊者可以利用這個信任,向其他主機發送偽裝的arp報文,而其他主機處於信任,會直接存儲報文中的映射,這樣就會影響ip地址和mac地址的映射,造成發送信息時無法到達預期主機或到達錯誤的主機。這種攻擊方式叫做arp欺騙。
Tcp協議:傳輸控制協議(TCP,Transmission Control Protocol)
是一種面向連接的、可靠的、基於字節流的傳輸層通信協議。
三次握手:申請連接方發送一個報文給服務器。
服務器收到后,因為此時發送方並不確定服務器已經穩定收到了自己的消息,所以服務器回送報文給發送方
發送方接受報文后,確定服務器可以收到自己的消息,但服務器此時不確定發送方可以收到自己的消息。
所以發送方再發送第三個報文,告知服務器,你的消息我也可以正常收到。
這樣三次報文交換,就可以相互確立一個穩定的信道。稱為建立連接的三次握手。
四次揮手:發送端請求斷開連接,發送一個fin服務器端收到后,因為此時緩沖區內可能還有未發送完成的數據,所以服務器發送一個ack,告知發送端你的終止請求我收到了,但是數據可能還沒發完,所以可能不會立馬關閉套接字,此時有一個等待。之后再發送fin的同步,表示我要關閉了。發送端收到后,回送一個相應ack,如此雙方就安全完整的斷開連接了,不用擔心有漏發的報文。
之所以建立連接需要三次握手,而斷開連接需要四次握手,是因為建立連接時的ack和syn可以同步發送,一個負責響應,一個負責同步。而斷開連接時,由於可能有報文尚未發送完畢,ack和fin之間,會有一個等待。先響應,后同步,相當於握手中的第二步,被分成了兩步。
2.ip地址和域名
什么是IP地址?ip地址是用來標識互聯網上計算機的一串數字,就相當於計算機在互聯網上的身份證。每台機器交互的時候利用ip地址來相互識別。
什么是域名?因為ip地址是全數字,由機器識別的,對於用戶來說不容易記憶,所以演化出了用符號化的地址來代替數字型的地址,這個符號化的地址就是域名。
什么是URL?統一資源定位符。俗稱“網址”
DNS:域名相比於IP地址來說比較好記憶,但是機器之間只能互相認識IP地址,所以我們需要將域名轉化為IP地址。
而這個轉化的工作我們將其稱為域名解析,域名解析需要由專門的服務器來完成,而DNS就是專門的域名解析服務器,域名的最終指向是IP。
URL:統一資源定位符。俗稱“網址”,網址的格式為:<協議>://<域名或IP>:<端口>/<路徑>。<協議>://<域名或IP>是必需的,<端口>/<路徑>有時可省略