參考計算機網絡體系結構綜述(上) 計算機網絡體系結構綜述(下) 《計算機網絡(第七版)》謝希仁
OSI與TCP/IP參考模型
開放系統互連(OSI)參考模型是理論上的標準,TCP/IP參考模型是事實上的標準。
OSI模型將體系結構在功能上分爲7層,每層完成特定的網絡功能。
應用層:爲用戶的應用進程提供網絡通信服務。
表示層:數據的編碼,壓縮和解壓縮,加密和解密。
會話層:是用戶應用程序和網絡之間的接口,負責在網絡中的兩節點之間建立、維持和終止通信。
傳輸層:負責向兩臺主機中進程之間的通信提供通用的數據傳輸服務。通用指多種應用可以使用同一個運輸層服務,因此運輸層有複用和分用的功能。(把來自會話層的完整報文分割成數據段,構造協議數據單元,交給網絡層進行傳輸)。
網絡層:負責爲分組交換網上的不同主機提供通信服務。轉發,將分組從路由器的輸入端口轉移到合適的輸出端口;路由,通過路由算法確定分組從源到目的經過的路徑;連接建立,不是所有網絡都需要,某些網絡的重要功能,如虛電路。
數據鏈路層:將IP數據報加頭加尾構成幀,通常頭部加物理地址等信息,尾部加差錯檢測等信息。通過差錯控制、流量控制等方法,實現數據在不可靠的物理線路上的可靠傳遞。
物理層:在物理介質上正確、透明地傳送比特流(由1、0轉化爲電流強弱進行傳輸,到達目的地後再轉換爲1、0)。
一、應用層
1、Http和Https的區別(待確認)
Http協議運行在TCP之上,明文傳輸,客戶端與服務器端都無法驗證對方的身份;Https是身披SSL(Secure Socket Layer)外殼的Http,運行於SSL上,SSL運行於TCP之上,是添加了加密和認證機制的HTTP。二者之間存在如下不同:
端口不同:Http與Http使用不同的連接方式,用的端口也不一樣,前者是80,後者是443;
資源消耗:和HTTP通信相比,Https通信會由於加減密處理消耗更多的CPU和內存資源;
開銷:Https通信需要證書,而證書一般需要向認證機構購買;
Https的加密機制是一種共享密鑰加密和公開密鑰加密並用的混合加密機制。
2、Get與Post的區別
均是將數據提交到遠程服務器。
|
get |
post |
功能 | 常用於向服務器查詢某些信息 | 用於向服務器發送應該被保存的數據 |
數據存儲位置 |
URL後面,?分割URL和數據,&相連參數 |
請求體 |
數據大小 |
不超過2000字符 |
無限制 |
應用場景 |
非敏感數據和小數據 |
敏感數據和大數據,更安全 |
3、常見狀態碼及原因短語
1××:表示通知信息,如請求已被接受或正在處理。
2××:請求成功。
3××:重定向,要完成請求必須進行進一步處理。
4××:客戶端錯誤,請求不合法。
5××:服務器端錯誤,服務器失效無法完成請求。
狀態碼 |
描述 |
原因短語 |
200 |
請求成功。一般用於GET和POST方法 |
OK |
301 |
資源移動。所請求資源已移動,瀏覽器自動跳轉到新的URL |
Moved Permanently |
304 |
未修改。所請求資源未修改,瀏覽器讀取緩存數據 |
Not Modified |
400 |
請求語法錯誤,服務器無法理解 |
Bad Request |
404 |
未找到資源,可以設置個性“404頁面” |
Not Found |
500 |
服務器內部錯誤 |
Internal Server Error |
4、TCP和UDP分別對應的常見應用層協議
(1)TCP對應的應用層協議
HTTP:超文本傳送協議,瀏覽器如何向Web服務器請求文檔,服務器如何把文檔傳送給瀏覽器。默認端口號80。
SMTP:簡單郵件傳送協議,郵件服務器之間傳遞消息所使用的協議,客戶端是發送消息的服務器,服務器是接收消息的服務器。端口號25。
POP3:郵件讀取協議,用於從服務器獲取郵件。端口號110。
FTP:文件傳送協議。端口號21。
Telnet:遠程終端協議。用戶可在其所在地登錄到遠程的另一臺主機上,可將擊鍵傳到遠程主機,也能將遠程主機的輸出返回到用戶屏幕。支持BBS的服務器將23號端口打開,對外提供服務。
(2)UDP對應的應用層協議
DNS:域名解析,將域名地址轉換爲IP地址。端口號53。
SNMP:簡單網絡管理協議,管理網絡設備。端口號161。
TFTP:簡單文件傳輸協議。端口號69。
5、Session、Cookie與Application
6、從輸入網址到獲得頁面的過程
https://www.jianshu.com/p/23b388f8e5aa
(1)DNS域名解析,獲取IP地址
在瀏覽器緩存、hosts文件、路由器緩存中查找url對應的IP地址。
如果沒有找到,則發起一個DNS請求到本地域名服務器,在其緩存中進行查找。
如果沒有,本地DNS服務器向根DNS服務器發起請求,根DNS服務器返回頂級DNS服務器的地址;本地DNS服務器向頂級DNS服務器發起請求,頂級DNS服務器返回權限DNS服務器的地址;本地DNS服務器向權限DNS服務器發起請求,權限DNS服務器查詢到域名對應的IP後,將IP地址返回給本地DNS服務器;本地DNS服務器接收後將其保存到緩存中,以備下次查詢。本地DNS服務器將IP地址返回給客戶主機瀏覽器。
(2)瀏覽器向Web服務器發送HTTP請求
瀏覽器以一個隨機的端口(1024~65535)向服務器的Web程序端口(HTTP協議使用80/8080端口,HTTPS使用443端口)發起TCP連接請求。三次握手後,建立TCP連接。
建立連接後,發送一個HTTP請求,包含請求行、請求頭、請求正文。
(3)服務器處理請求,返回HTTP響應
後端服務器從固定的端口接收到TCP報文後,對HTTP協議進行解析,然後將相應的數據封裝爲HTTP Request對象,供上層使用。
HTTP響應,包括狀態行、響應頭、響應正文。
(4)瀏覽器顯示頁面信息
用戶請求的HTML文檔通過瀏覽器的網絡層到達渲染引擎後,渲染工作開始。
-
瀏覽器把HTML代碼解析成一個DOM樹,根節點是document對象,每個標籤都是一個節點,包括display:none的標籤和JS動態添加的元素等。(遇到對js、css文件及圖片等靜態資源的引用,則重複上述步驟並向服務器請求這些資源)
-
瀏覽器把所有樣式解析成樣式結構體,去掉瀏覽器不能識別的樣式。
-
DOM樹和樣式結構體組合後構建render樹,其中的每個節點都有樣式,render樹不包括display:none的節點、head節點等。根據CSS2的標準,render樹中的每個節點都稱爲Box。
-
render樹構建完畢後,瀏覽器根據render樹繪製頁面。
7、DNS的工作原理
1:應用進程將待解析的域名放在DNS請求報文中,以UDP數據報的形式發送給本地域名服務器,本地域名服務器查找到相應域名的IP地址後(主機向本地域名服務器的查詢一般都是採用遞歸查詢),就將該域名的IP地址信息放入應答報文中返回給客戶進程。
2:如果主機所詢問的本地域名服務器不知道被查詢域名的IP地址,那麼本地域名服務器就以DNS客戶的身份,向其他域名服務器繼續發送查詢請求報文(本地域名服務器向根域名服務器的查詢通常採用迭代查詢)。
3:當根域名服務器收到本地域名服務器的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地域名服務器:“你下一步應當向哪一個域名服務器查詢”。然後讓本地域名服務器進行後續的查詢。
二、傳輸層
1、TCP與UDP的區別
二者均是傳輸層協議。
TCP | UDP |
面向連接 | 無連接 |
點對點(一對一) | 支持一對一、一對多、多對一、多對多的通信模式 |
可靠的 | 不可靠,盡最大努力交付 |
擁塞控制、流量控制 | 沒有擁塞控制 |
面向字節流 | 面向報文 |
首部開銷大(20個字節) | 首部開銷小(8個字節) |
全雙工、發送方/接收方緩存 |
2、TCP協議的三次握手與四次揮手
(1)TCP連接建立過程中採用“三次握手機制”
第一次握手:客戶端發出連接請求報文段,其中將SYN標誌位置爲1表示要建立連接,選擇一個初始序列號seq=x,不攜帶數據但消耗一個序號。之後TCP客戶進程進入SYN-SENT(同步已發送)狀態。
第二次握手:服務器收到連接請求報文段後,如同意建立連接,向客戶端發送確認。在確認報文段中將SYN位和ACK位都置1,確認號是ack=x+1,選擇一個初始序號seq=y,不攜帶數據但消耗一個序號。TCP服務器進程進入SYN-RCVD(同步收到)狀態。
第三次握手:TCP客戶進程收到服務器的確認後,檢查ack是否是x+1,ACK是否是1。如果正確,向服務器發送確認報文段,其中ACK置1,確認號ack=y+1,序號seq=x+1,可以攜帶數據,但如果不攜帶數據則不消耗序號。服務器檢查ack是否爲y+1,ACK是否爲1,如果正確則連接建立成功,客戶端和服務器進入ESTABLISHED(已建立連接)狀態。
(2)TCP連接釋放過程中採用“四次揮手機制”
第一次揮手:客戶端的應用進程發出連接釋放報文段,停止發送數據。FIN置1,序號seq=u,是前面已經傳送過的數據的最後一個字節的序號加1,不攜帶數據但消耗一個序號。客戶端進入FIN-WAIT-1(終止等待1)狀態,等待服務器的確認。
第二次揮手: 服務器收到連接釋放報文段後發出確認。ACK置1,確認號ack=u+1,序號seq=v,是服務器前面已經傳送過的數據的最後一個字節的序號加1。服務器進入CLOSE-WAIT(關閉等待)狀態。從客戶端到服務器的連接釋放了。
客戶端收到來自服務器端的確認後,進入FIN-WAIT-2(終止等待)狀態,等待服務器發出連接釋放報文段。
第三次揮手:若服務器已經沒有要向客戶端發送的數據,發出連接釋放報文段。FIN置1,序號seq=w,確認號ack=u+1。服務器進入LAST-ACK(最後確認)狀態,等待客戶端的確認。
第四次揮手:客戶端收到服務器的連接釋放報文段後,發出確認。ACK置1,確認號ack=w+1,序號seq=u+1。進入TIME-WAIT(時間等待)狀態,經過2MSL後,進入CLOSED狀態。
服務器只要收到客戶端發出的確認,就進入CLOSED狀態。
3、TCP連接爲什麼需要三次握手?
客戶端最後還要發送一次確認,主要是爲了防止已失效的連接請求報文段突然又送到了服務器,產生錯誤。
假定客戶端發出連接請求報文段,在某個網絡結點長時間滯留,延誤到連接釋放以後的某個時間纔到達服務器。這是一個早已失效的報文段,但服務器收到後會誤以爲客戶端又發出一次新的連接請求,於是向客戶端發出確認報文段,同意建立連接。假定不採用第三次握手,新的連接就建立了。
由於現在客戶端並沒有發出建立連接的請求,因此不會理睬服務器的確認,但服務器卻誤以爲新的連接已經建立,一直等待客戶端發數據,服務器的資源被浪費。但如果採用三次握手的方法,客戶端不會向服務器發出確認,就不會建立連接。
4、TCP協議如何來保證傳輸的可靠性(待確認)
數據包校驗:目的是檢測數據在傳輸過程中的任何變化,若校驗出包有錯,則丟棄報文段並且不給出響應,這時TCP發送數據端超時後會重發數據;
對失序數據包重排序:既然TCP報文段作爲IP數據報來傳輸,而IP數據報的到達可能會失序,因此TCP報文段的到達也可能會失序。TCP將對失序數據進行重新排序,然後才交給應用層;
丟棄重複數據:對於重複數據,能夠丟棄重複數據;
應答機制:當TCP收到發自TCP連接另一端的數據,它將發送一個確認。這個確認不是立即發送,通常將推遲幾分之一秒;
超時重發:當TCP發出一個段後,它啓動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段;
流量控制:TCP連接的每一方都有固定大小的緩衝空間。TCP的接收端只允許另一端發送接收端緩衝區所能接納的數據,這可以防止較快主機致使較慢主機的緩衝區溢出,這就是流量控制。TCP使用的流量控制協議是可變大小的滑動窗口協議。
5、TCP的擁塞處理
擁塞控制是防止過多數據注入網絡中,使網絡中的路由器或鏈路不致過載。LastByteSent-LastByteAcked<=CongWin(擁塞窗口),擁塞窗口動態調整改變發送速率。
慢啓動:TCP連接建立時,擁塞窗口爲1。可用帶寬可能遠遠高於初始,希望速率快速增長(指數型),每個RTT收到每個ACK將擁塞窗口翻倍。
擁塞避免:當擁塞窗口達到丟包事件前值的1/2時(ssthresh變量),將指數型增長切換爲線性增長,即每個RTT將擁塞窗口增加1。
快重傳、快恢復:收到3個重複ACKs,說明發生丟包,收到失序的報文段。此時不用等到超時,立即重傳對方未收到的報文段。將擁塞窗口設置爲丟包前擁塞窗口的1/2,然後線性增長。
超時事件:直接將擁塞窗口設爲1,然後指數增長,達到ssthresh後再線性增長。
三、網絡層
1、IP地址的分類
IP地址就是給互聯網上的每一臺主機或路由器的每個接口分配一個在全世界範圍內的唯一的32位的標識符,方便在互聯網上尋址。
IP地址空間劃分爲A、B、C、D、E五類,其中A、B、C是基本類,D、E類作爲多播和保留使用,爲特殊地址。
每個IP地址包括兩個標識碼,即網絡號和主機號。同一個物理網絡上的所有主機都使用同一個網絡號,網絡上的一個主機(包括工作站、服務器和路由器等)有一個主機號與其對應。IP地址特點如下:
A類地址:以0開頭,第一個字節範圍0~127;
B類地址:以10開頭,第一個字節範圍128~191;
C類地址:以110開頭,第一個字節範圍192~223;
D類地址:以1110開頭,第一個字節範圍爲224~239;
E類地址:以1111開頭。
2、特殊的IP地址
特殊IP地址,不能用於標識具體的IP接口。
NetID |
HostID |
作爲IP分組源地址 |
作爲IP分組目的地址 |
用途 |
全0 |
全0 |
可以 |
不可以 |
在本網範圍內表示本機,在路由表中用於表示默認路由(相當於表示整個Internet網絡) |
全0 |
特定值 |
不可以 |
可以 |
表示本網內某個特定主機 |
全1 |
全1 |
不可以 |
可以 |
本網廣播地址(路由器不轉發)受限 |
特定值 |
全0 |
不可以 |
不可以 |
網絡地址,表示一個網絡 |
特定值 |
全1 |
不可以 |
可以 |
直接廣播地址,對特定網絡上的所有主機進行廣播 |
127 |
非全0或非全1的任何數 |
可以 |
可以 |
用於本地軟件環回測試,稱爲環回地址 |
私有(Private)IP地址,只用於內部網絡。
Class |
NetIDs |
Blocks |
A |
10 |
1 |
B |
172.16to172.31 |
16 |
C |
192.168.0to192.168.255 |
256 |
3、IP地址與物理地址
物理地址是數據鏈路層和物理層使用的地址,IP地址是網絡層和以上各層使用的地址,是一種邏輯地址。ARP協議用於IP地址與物理地址的對應。
4、ARP協議工作原理
1:對於每臺主機,其ARP緩存區都有一個ARP列表,存儲着網絡中IP地址和MAC地址的對應關係
2:當源主機向目的主機發送數據時,首先檢查自己的ARP列表中是否有目的主機IP地址對應的MAC地址,如果有,直接發送信息
3:如果沒有,就向本網段的所有主機廣播發送ARP數據包,數據包中包括源主機IP地址,MAC地址及目的主機IP地址
4:本地網絡的所有主機收到該ARP數據包後,首先檢查目的主機IP地址是否和自身IP地址相同,若不同,忽略該數據包;若相同,將源主機IP地址和MAC地址加入到自身ARP列表中,如果列表中已存在該對應關係,則覆蓋,然後發送一個ARP響應包給源主機,告知它就是源主機想找的MAC地址。
5:源主機接到ARP相應包後,首先將目的主機MAC地址加入到其ARP列表,並利用此信息發送消息。若源主機一直沒有收到ARP響應包,表示ARP查詢失敗。
5、RARP協議
RARP是逆地址解析協議,作用是完成硬件地址到IP地址的映射,主要用於無盤工作站,因爲給無盤工作站配置的IP地址不能保存。
工作流程:在網絡中配置一臺RARP服務器,裏面保存着IP地址和MAC地址的映射關係,當無盤工作站啓動後,就封裝一個RARP數據包,裏面有其MAC地址,然後廣播到網絡上去,當服務器收到請求包後,就查找對應的MAC地址的IP地址,並將其裝入響應報文中發回給請求者。因爲需要廣播請求報文,因此RARP只能用於具有廣播能力的網絡。
6、NAT、DHCP、DNS協議的作用
NAT協議:網絡地址轉換(NAT,Network AddressTranslation)屬接入廣域網(WAN)技術,
是一種將私有(保留)地址轉化爲合法IP地址的轉換技術,它被廣泛應用於各種類型Internet接入方式和各種類型的網絡中。原因很簡單,NAT不僅完美地解決了lP地址不足的問題,而且還能夠有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。
DHCP協議:動態主機設置協議(Dynamic Host ConfigurationProtocol, DHCP)
是一個局域網的網絡協議,使用UDP協議工作,主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作爲對所有計算機作中央管理的手段。
DNS協議:DNS 是域名系統 (Domain Name System) 的縮寫,是因特網的一項核心服務,它作爲可以將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。
四、網絡接口層
10:交換機、路由器、網關、網橋的概念及各自用途?
交換機用於局域網,利用主機的 MAC 地址進行數據傳輸,而不需要關心 IP 數據包中的 IP 地址,它工作於數據鏈路層。
路由器識別網絡是通過 IP 數據包中 IP 地址的網絡號進行的,所以爲了保證數據包路由的正確性,每個網絡都必須有一個唯一的網絡號。路由器通過 IP 數據包的 IP 地址進行路由選擇的(將數據包遞交給哪個下一跳路由器),路由器工作於網絡層。
網關就是連接兩個網絡的設備,能在不同協議間移動數據。作用於網絡層以上。
網橋是一個局域網與另一個局域網之間建立連接的橋樑。屬於數據鏈路層的一種設備。
4.路由設備與相關層
物理層:中繼器(Repeater,也叫放大器),集線器。
數據鏈路層:網橋,交換機。
網絡層:路由器。
網關:網絡層以上的設備。
5.常見的路由選擇協議,以及它們的區別
常見的路由選擇協議有:RIP協議、OSPF協議。
RIP協議:底層是貝爾曼福特算法,它選擇路由的度量標準(metric)是跳數,最大跳數是15跳,如果大於15跳,它就會丟棄數據包。
OSPF協議:底層是迪傑斯特拉算法,是鏈路狀態路由選擇協議,它選擇路由的度量標準是帶寬,延遲。
五、網絡安全
1、客戶端不斷進行請求鏈接會怎樣?DDos(Distributed Denial of Service)攻擊?
2、XSS攻擊
3、SQL 注入XSS 攻擊