搞定計算機網絡面試

計算機網絡知識點整理

網絡分層 ⭐⭐

OSI 將網絡分爲七層:應用層、表示層、會話層、運輸層、網絡層、數據鏈路層、物理層。OSI 七層協議體系結構概念清除,理論完善,但是既複雜也不實用。

TCP/IP 是一個四層體系結構,包含應用層、運輸層、網際層和網絡接口層(網際層是爲了強調該層是爲了解決不同網絡的互聯問題),這種體系結構得到了廣泛應用。

但是 TCP/IP 從實質上講只有最上面三層,最下面的網絡接口層並沒有什麼具體內容,因此一般學習時結合 OSI 和 TCP/IP 的優點,採用一種五層協議的體系結構:

  • 應用層

    應用層的任務是通過應用進程之間的交互來完成特定網絡應用。

    應用層協議定義應用進程之間的通信和交互規則,進程即主機中正在運行的程序。應用層協議有域名系統 DNS、支持萬維網應用的 HTTP、支持電子郵件的 SMTP 等。

    應用層交互的數據單元是報文 (message)。

  • 運輸層

    運輸層的任務是負責向兩臺主機進程之間的通信提供通用的數據傳輸服務。

    運輸層的協議主要有傳輸控制協議 TCP,它提供面向連接的、可靠的數據傳輸服務,數據傳輸單位是報文段(segment);用戶數據報協議 UDP,它提供無連接的、盡最大努力的數據傳輸服務,數據傳輸單位是用戶數據報。

  • 網絡層

    網絡層的任務是負責爲分組交換網上的不同主機提供通信服務,在發送數據時網絡層把運輸層產生的報文段或用戶數據報封裝成分組或包進行傳送。網絡層的另一個任務是選擇合適的路由,使源主機運輸層傳下來的分組能夠通過網絡中的路由器找到目的主機。

    網絡層的協議有 IP、ARP、ICMP、IGMP、DHCP 等。

    網絡層使用的中間設備是路由器。

  • 數據鏈路層

    數據鏈路層的任務是將網絡層交下來的 IP 數據報組裝成幀,在兩個相鄰結點之間的鏈路上傳輸幀,每一幀包括數據和必要的控制信息(同步信息、地址信息、差錯控制等)。

    數據鏈路層的協議有 PPP、CAMA/CD 等。

    數據鏈路層使用的中間設備是網橋或橋接器。

  • 物理層

    物理層的任務是儘可能地屏蔽掉傳輸媒體和通信手段的差異,使物理層上面的數據鏈路層感覺不到這些差異,使其只需考慮本層的協議和服務。

    物理層所傳輸的數據單位是比特,發送方發送1或0,接收方也接收1或0,物理層需要考慮用多大的電壓代表1或0。

    物理層使用的中間設備是轉發器。


數據鏈路層的協議 ⭐

點對點協議 PPP

在通信線路質量較差的年代,使用高級數據鏈路控制 HDLC 作爲實現可靠傳輸的數據鏈路層協議,但現在 HDLC 已經很少使用了,對於點對點的鏈路,簡單得多的點對點協議 PPP 是目前使用得最廣泛的數據鏈路層協議。

PPP 協議的特點是簡單、只檢測差錯而不糾正差錯、不使用序號也不進行流量控制、可同時支持多種網絡層協議。


CSMA/CD 協議

以太網採用的是具有衝突檢測的載波監聽多點接入 CSMA/CD 協議,協議的要點是:發送前先監聽、邊發送邊監聽,一旦發現總線上出現了碰撞就立即停止發送。然後按照退避算法等待一段隨機時間後再次發送,因此每一個站在自己發送數據之後的一小段時間內存在遭遇碰撞的可能性。以太網上各站點都平等地爭用以太網信道。


網絡層的協議 ⭐⭐

網際協議 IP

網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一,一般指的是 IPv4。與 IP 協議配套使用的協議還有 ARP、ICMP 和 IGMP,IP 使用 ARP,ICMP 和 IGMP 要使用 IP。由於網際協議 IP 是用來使互連起來的許多計算機網絡能夠進行通信的,因此 TCP/IP 體系中的網絡層也稱網際層或 IP 層。

要解決 IP 地址耗盡的問題,根本方法是採用具有更大地址空間的新版本 IP 協議即 IPv6,向 IPv6 過渡可以使用雙協議棧或使用隧道技術。


地址解析協議 ARP

由於 IP 協議使用了 ARP 協議,因此把 ARP 協議歸到網絡層,但 ARP 的作用是通過一個 ARP 高速緩存存儲本地局域網的各主機和路由器的 IP 地址到硬件地址的映射表,以從網絡層的 IP 地址解析出在數據鏈路層使用的硬件地址,因此也可以把 ARP 劃歸在數據鏈路層。與 ARP 對應的協議是 RARP,逆地址解析協議,作用是使只知道自己硬件地址的主機能夠找出 IP 地址,但被 DHCP 協議取代。


路由選擇協議 RIP/OSPF/BGP-4

路由選擇協議有兩大類:內部網關協議,如 RIP 和 OSPF;外部網關協議,如 BGP-4。

RIP 是分佈式的基於距離向量的路由選擇協議,只適用於小型互聯網。RIP 按照固定的時間間隔與相鄰路由器交換信息,交換的信息是當前路由表。OSPF 是分佈式的鏈路狀態協議,適用於大型互聯網,只在鏈路狀態發生變化時才向本自治系統中的所有路由器用洪泛法發送與本路由器相鄰的所有路由器的鏈路狀態信息。

BGP-4 是不同自治系統的路由器之間交換路由信息的協議,是一種路徑向量路由選擇協議。其目標是尋找一條能夠到達目的網絡且比較好的路由而不是最佳路由。


網際控制報文協議 ICMP

ICMP 報文作爲 IP 數據報的數據,加上首部後組成 IP 數據報發送出去,使用 ICMP 並非爲了實現可靠傳輸,ICMP 允許主機或路由器報告差錯情況和提供有關異常情況的報告。ICMP 報文的種類有兩種,即 ICMP 差錯報告報文和 ICMP 詢問報文。

ICMP 的一個重要應用就是分組間探測 PING,用來測試兩臺主機之間的連通性,PING 使用了 ICMP 回送請求與回送回答報文。


網際組管理協議 IGMP

IP 多播使用 IGMP 協議,IGMP 並非在互聯網範圍內對所有多播組成員進行管理,它不知道 IP 多播組包含的成員個數也不知道這些成員都分佈在哪些網絡上。

IGMP 協議是讓連接在本地局域網上的多播路由器知道本局域網上是否有主機上的某個進程參加或推出了某個多播組。


運輸層的協議 ⭐⭐⭐

用戶數據報協議 UDP

UDP 只在 IP 的數據報服務上增加了很少一點功能,就是複用和分用以及差錯檢測,其特點主要是:UDP是無連接的,發送數據之前不需要建立連接;UDP 使用盡最大努力交付,不保證數據傳輸的可靠性;UDP 是面向報文的,發送方 UDP 對應用程序交下來的報文在添加首部後就向下交付 IP 層;UDP 沒有擁塞控制;UDP 支持一對一、一對多、多對一和多對多的交互通信;UDP 的首部開銷小,只有 8 個字節,TCP 需要 20 字節。


傳輸控制協議 TCP (重點)

特點

  • TCP是面向連接的運輸層協議,所謂面向連接,就是指TCP在進行數據通信前需要先建立連接,主要是通過三次握手機制實現,在進行數據通信後,需要斷開連接,主要是通過四次揮手機制實現。

  • 每條TCP連接只能有兩個端點,每一條TCP連接都是兩個端點之間的通信。

  • TCP提供可靠的交付服務,通過TCP發送的數據無差錯,不丟失,不重複。

  • TCP是全雙工的通信,在發送端和接收端都設有緩存,發送方將數據發送到緩存後就可以做自己的事,接收方將數據放入緩存,上層應用程序會在合適的時機來獲取數據。

  • TCP是面向字節流的,所謂流就是流入進程或者從進程重流出的字節序列。雖然應用進程和TCP的交互是一次一個數據塊,但是TCP會將數據塊看成一連串無結構的字節流,不能保證發送的數據塊和接收的數據塊大小是一致的,但是字節流一定是完全一樣的。

如何保證可靠

TCP的發送的報文是交給IP層傳送的,而IP只能提供盡最大努力服務,所以TCP必須採取適當的措施才能使得兩個運輸層之間的通信變得可靠。理想的通信有兩個條件,第一是傳輸的數據不會出現差錯,第二是無論發生數據的速度有多快,接收端都來得及接收。但是在現實的網絡環境下幾乎是不可能實現的,TCP使用了重傳機制來解決傳輸數據出錯的問題,使用流量控制來降低發送端的速度,以便接收端來的及接收。

停止等待協議

每發送一個分組就停下來,等收到了對方對該分組的確認之後再繼續發送下一個分組。每發送完一個分組就設置一個超時計時器,如果在規定的時間內沒有收到分組的確認消息,就會進行超時重傳。在規定時間內收到了確認消息就會撤銷計時器。

同時需要注意三點:①計時器設置的超時時間應該稍微長於分組的往返時間,如果時間太長通信效率就會很低,如果時間過短會產生不必要的重傳,浪費網絡資源。②爲每一個分組都設有一個副本,以便超時重傳時使用,當收到了分組的確認後再進行清除。③分組和確認分組都必須進行編號,這樣才能明確是哪一個分組收到了確認。

ARQ協議

假設分組的確認丟失了,發送方在設定的超時時間內沒有收到確認,不知道是自己發送的分組丟失還是接收方的確認丟失,因此發送方需要重傳分組。當接收方收到了分組後就丟失這個分組,重新發送確認。

還有一種情況是分組沒有丟失但是晚到了,發送端會受到重複確認,會收下並且丟棄,接收端仍然會收到重複的分組,同樣丟棄並確認。

上述確認和重傳機制,即ARQ automatic repeat request,自動重傳請求,接收端不需要向發送端發送重傳請求,當超過指定時間時發送端會自動進行超時重傳。

效率問題

停止等待協議的優點是簡單,缺點是信道利用率太低。信道利用率爲TD/(TD+RTT+TA),TD是發送分組的時間,T2是發送確認分組的時間,RTT是往返時間,當RTT遠大於TD時通信效率就會非常低。爲了提高傳輸效率,可以採用流水線傳輸,例如連續ARQ協議和窗口滑動機制。

連續ARQ

連續ARQ規定每收到一個確認就把發送窗口向前滑動一個分組的位置,接收方一般採用累積確認的方式,就是說接收方不必對收到的分組逐個確認,只需要對按序到達的最後一個分組進行確認。優點是實現容易,即使確認丟失也不必重傳,確認是不能向發送方反映出接收方已經正確收到的所有分組的消息。例如發送方發生了5個分組,第3個分組丟失了,接收方只能確認前2個,發送方必須把後面3個都重新發送。

滑動窗口機制

滑動窗口以字節爲單位。發送端有一個發送窗口,窗口重的序號是允許發送的序號,窗口的後沿是已經發送並且確認的序號,窗口的前沿是不允許發送的序號。窗口的後沿可能不動(代表沒有收到新的確認),也有可能前移(代表收到了新的確認),但是不會後移(不可能撤銷已經確認的數據)。窗口的前沿一般是向前的,也有可能不動(表示沒有收到新的請求或對方的接收窗口變小),也有可能收縮,但是TCP強烈不建議這麼做,因爲發送端在收到通知前可能已經發送了很多數據,此時如果收縮窗口可能會產生錯誤。

滑動窗口的狀態需要3個指針p1,p2和p3。p1之前的序號表示已經發送並且確認的,p1到p2的序號表示已經發送但還沒有確認的,p2到p3表示允許發送的序號,也叫可用窗口,p1到p3表示發送窗口,p3之後的序號表示不可發送的。

發送緩存用來暫時存放發送應用程序傳給發送方TCP準備發送的數據和已經發送但還沒確認的數據。

接收緩存用來暫時存放按序到達的但尚未被應用程序讀取的數據,未按序到達的數據。

注意三點:①發送窗口根據接收窗口設置,但並不總是一樣大,還要根據網絡的擁塞情況調整。②對於不按序到達的數據,TCP通常存放在接收窗口,等到字節流缺少的字節收到後再按序交付上層應用程序。③接收方必須有累積確認功能,可以減小傳輸開銷,可以在合適的時候發送確認,也可以在自己有數據需要發送時捎帶確認。但是接收方不能過分推遲發送確認,不能超過0.5秒。


流量控制

一般我們都希望發送數據的速度儘可能快,但如果發送數據的速度過快,接收端來不及接收,就可能導致數據丟失的問題。所謂流量控制,就是根據接收端的接收能力,動態地調整發送端的發送速度,確保接收端來的及接收。流量控制主要是通過滑動窗口機制實現的。

發送窗口不能超過接收方的接收窗口,在0窗口通知後可能會出現死鎖問題,接收方的接收緩衝又有了一些存儲空間,但該通知丟失了,發送方和接收方互相等待消息。TCP爲每一個連接設有一個持續計時器,只要收到了0窗口通知就啓動計時器,到時候發送1字節大小的0窗口探測報文,如果仍是0就重置計時器,如果不是0就打破了死鎖的僵局。


擁塞控制

當網絡中對資源的需求超過了資源的可用量,就叫做擁塞。當吞吐量明顯小於理想的吞吐量時就出現了輕度擁塞,當吞吐量隨着負載的增加反而下降時,網絡就進入了擁塞狀態。當吞吐量降爲0時,網絡已無法正常工作,進入了死鎖。擁塞控制就是儘量減少注入網絡的數據,減輕網絡中的路由器和鏈路的負擔。

擁塞控制是一個全局性的問題,它涉及網絡中的所有路由器和主機,而流量控制只是一個端到端的問題,是兩個端點之間通信量的控制。

擁塞控制有開環和閉環手段,開環就是在設計網絡時事先將有關發生阻塞的因素考慮到,缺點是系統一旦開始運行就不能更改。閉環則是基於反饋環路動態處理,監測網絡以便檢測擁塞發生的時間和地點,把擁塞發生的信息傳送到可採取行動的地方,調整網絡系統的運行解決問題。

擁塞控制主要有四個方法,慢開始,擁塞避免,快重傳和快恢復。

所謂慢開始,就是基於窗口的擁塞控制,發送端設有一個擁塞窗口,擁塞窗口取決於網絡的擁塞程度,發送窗口就等於擁塞窗口,初始時爲了防止注入過多的數據引起網絡擁塞,所以將擁塞窗口值設爲1,然後逐漸增大擁塞窗口,逐漸增大發送窗口,每經過一次傳輸輪次,擁塞窗口就加倍。有一個慢開始門限,當小於該值時就使用慢開始,等於時既可以使用慢開始也可以使用擁塞避免,大於該值時使用擁塞避免。

擁塞避免就是每經過一個往返時間RRT將擁塞窗口的值增加1,而不是像慢開始那樣加倍地增大擁塞窗口。慢開始不是指窗口增大的速度慢,而是在TCP開始發生報文時先設置擁塞窗口爲1,使發送方開始只發送一個報文段,相比一下將許多報文注入到網絡慢。

但是有時候個報文段丟失,而網絡中並沒有出現擁塞,錯誤地導致慢開始,降低了傳輸效率。這時應該使用快重傳來讓發送方儘早知道出現了個別分組的丟失,快重傳要求接收端不要等待自己發送數據時再捎帶確認,而是要立即發送確認。即使收到了亂序的報文段後也要立即發出對已收到報文段的重複確認。當發送端連續收到三個重複的確認後就知道出現了報文段丟失的情況,就會立即重傳,快重傳可以使整個網絡的吞吐量提升約20%。

當發送方知道了只是丟失了個別報文段使,不會使用慢開始,而是使用快恢復來設置阻塞窗口的值,並開始執行擁塞避免算法。


三次握手

TCP是全雙工通信,任何一方都可以發起建立連接的請求,假設A是客戶端,B是服務器。

初始時A和B均處於CLOSED狀態,B會創建傳輸進程控制塊TCB,然後處於LISTEND狀態,監聽端口是否收到了TCP請求以便及時響應。

當A要發生數據時,就向B發送一個連接請求報文,TCP規定連接請求報文的SYN=1,ACK=0,SYN表示synchronization,ACK表示acknowledgement,SYN不可以攜帶數據,但要消耗一個序號,此時A發送的序號seq假設爲x。發送完之後,A就進入了SYN-SENT同步已發送狀態。

當B收到了A的連接請求報文後,如果B同意建立連接,會發送給A一個確認連接請求報文,其中SYN=1,ACK=1,ack=x+1,seq=y,ack的值爲A發送的序號加1,ACK可以攜帶數據,如果不攜帶的話,則不消耗序號。發送完之後,B進入SYN-RCVD同步已接收狀態。

當A收到了B的確認連接請求報文後,還要對該確認再進行一次確認,報文的ACK=1,ack=y+1,seq=x+1,發送之後A處於established狀態,當B接收到該報文後也進入established狀態。

之所以要進行三次握手,是因爲第二次握手時A知道了自己的發送和接收是沒有問題的,而第三次握手時B才能知道自己的發送和接收也都是沒有問題的。同時三次握手防止了已失效的連接請求問題,假設這樣一種正常情況,A發送的第一個連接請求報文丟失了,之後超時重傳,建立了連接,通信之後釋放了連接。但假設A第一個發送的連接請求報文並沒有丟失,而是在網絡中某結點停滯了,之後又到達了B。如果是兩次握手,此時B會以爲是A請求建立連接,同意之後並不會收到任何數據,因爲A已經關閉了,此時B的資源就會被白白浪費。


四次揮手

當A已經沒有要發送的數據了,決定釋放連接,就會發送一個終止連接報文,其中FIN=1,seq=u,u的值爲之前A發送的最後一個序號+1。此時A進入FIN-WAIT-1狀態。

B收到該報文後,發送給A一個確認報文,ACK=1,ack=u+1,seq=v,v的值爲B之前發送的最後一個序號+1。此時A進入了FIN-WAIT-2狀態,但B進入了CLOSE-WAIT狀態,但連接並未完全釋放,B會通知高層的應用層結束A到B這一方向的連接,此時TCP處於半關閉狀態。

當B發送完數據後,準備釋放連接時就向A發送連接終止報文,FIN=1,同時還要重發ACK=1,ack=u+1,seq=w(在半關閉狀態B可能又發送了一些數據)。此時B進入LAST-ACK狀態。

A收到連接終止報文後還要再進行一次確認,確認報文中ACK=1,ack=w+1,seq=u+1。發送完之後進入TIME-WAIT狀態,等待2MSL之後進入CLOSED狀態,B收到該確認後也進入CLOSED狀態。

MSL是最大報文段壽命,之所以要等待2MSL是爲了保證A發送的最後一個ACK報文能被B接收,如果A發送的確認報文丟失,B沒有收到就會超時重傳之前的FIN+ACK報文,而如果A在發送了確認報文之後就立即釋放連接就無法收到B超時重傳的報文,因而也不會再一次發送確認報文段,B就無法正常進入CLOSED狀態。第二點原因是2MSL時間之後,本連接中的所有報文就都會從網絡中消失,防止出現三次握手中的已失效的請求報文問題,影響下一次的TCP連接。

之所以不是三次揮手是因爲服務器TCP是全雙工的,當A發送完數據之後可能B還沒有發送完,當B發送完所有的數據之後纔會關閉B到A方向的連接。

除此之外,TCP還設有一個保活計時器,用於解決服務器故障的問題,服務器每收到一次客戶的數據就重新設置保活計時器,時間爲2小時。如果2小時內沒有收到就間隔75秒發送一次探測報文,連續10次都沒有響應後就關閉連接。


應用層的協議 ⭐⭐⭐

域名解析系統 DNS

DNS 被設計爲一個聯機分佈式數據庫系統,並採用客戶服務器方式。DNS 使大多數名字都在本地進行解析,僅少量解析需要在互聯網上通信,因此 DNS 的效率很高。由於 DNS 是分佈式系統,即使單個計算機出現了故障也不會妨礙到整個 DNS 系統的正常運行。

域名的解析過程

主機向本地域名服務器的查詢一般都採用遞歸查詢,遞歸查詢指如果主機所詢問的本地域名服務器不知道被查詢域名的 IP 地址,那麼本地域名服務器就以 DNS 客戶的身份向其他根域名服務器繼續發出查詢請求報文。遞歸查詢額結果是要查詢的 IP 地址,或者是報錯,表示無法查詢到所需的 IP 地址。

本地域名服務器向根域名服務器查詢通常採用迭代查詢,迭代查詢指當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要麼給出所要查詢的 IP 地址,要麼告訴它該向哪一個域名服務器進行查詢。本地域名服務器也可以採用遞歸查詢,這取決於最初的查詢請求報文設置的查詢方式。


文件傳送協議 FTP

FTP 使用 TCP 可靠的運輸服務,FTP 使用客戶服務器方式,一個 FTP 服務器進程可以同時爲多個客戶進程提供服務,在進行文件傳輸時,FTP 的客戶和服務器之間要建立兩個並行的 TCP 連接:控制連接和數據連接,實際用於傳輸文件的是數據連接。


超文本傳輸協議 HTTP (重點)

HTTP是超文本傳輸協議,規範了瀏覽器如何向萬維網服務器請求萬維網文檔,服務器如何向瀏覽器發送萬維網文檔。從層次的角度看,HTTP是面向事務的應用層協議,是瀏覽器和服務器之間的傳送數據文件的重要基礎。

特點

HTTP是無狀態的,之所以說無狀態是因爲HTTP對事務沒有記憶性。同一個客戶第二次訪問同一個服務器,服務器的響應結果和第一次是一樣的。HTTP的無狀態簡化了服務器的設計,允許服務器支持高併發的HTTP請求。如果要解決無狀態的問題,可以使用cookie和session。Cookie相當於服務器給瀏覽器的一個通行證,是一個唯一識別碼,服務器發送的響應報文包含 Set-Cookie 首部字段,客戶端得到響應報文後把 Cookie 內容保存到瀏覽器中。客戶端之後對同一個服務器發送請求時,會從瀏覽器中取出 Cookie 信息並通過 Cookie 請求首部字段發送給服務器,服務器就可以識別是否是同一個客戶。Session是服務器的會話技術,是存儲在服務器的。區別:①Cookie只能存儲ASCII 碼字符串,而 Session 則可以存儲任何類型的數據,因此在考慮數據複雜性時首選Session。②Cookie 存儲在瀏覽器中,容易被惡意查看。如果非要將一些隱私數據存在 Cookie 中,可以將 Cookie 值進行加密,然後在服務器進行解密。③對於大型網站,如果用戶所有的信息都存儲在 Session 中,那麼開銷是非常大的,因此不建議將所有的用戶信息都存儲到 Session 中。


結構

HTTP報文分爲HTTP請求報文和響應報文,請求報文由請求行(請求方法,請求資源的URL和HTTP的版本)、首部行和實體(通常不用)組成。響應報文由狀態行(狀態碼,短語和HTTP版本)、首部行和實體(有些不用)組成。


方法

GET:主要同於獲取資源,用於訪問被URI統一資源標識符識別的資源。

POST:主要用於傳遞信息給服務器。

參數:GET和POST的請求都能使用額外的參數,但是 GET 的參數是以查詢字符串出現在 URL 中,而POST的參數存儲在實體主體中。不能因爲 POST 參數存儲在實體主體中就認爲它的安全性更高,因爲照樣可以通過一些抓包工具查看。

安全性:安全的HTTP方法不會改變服務器狀態,也就是說它只是可讀的。GET方法是安全的,而POST卻不是,因爲 POST 的目的是傳送實體主體內容,這個內容可能是用戶上傳的表單數據,上傳成功之後,服務器可能把這個數據存儲到數據庫中,因此狀態也就發生了改變。

發送數據:XMLHttpRequest是一個 API,在Ajax中大量使用。它爲客戶端提供了在客戶端和服務器之間傳輸數據的功能。它提供了一個通過URL 來獲取數據的簡單方式,並且不會使整個頁面刷新。這使得網頁只更新一部分頁面而不會打擾到用戶。

使用XMLHttpRequest時,GET請求發送一個TCP數據包,瀏覽器同時發送HTTP header和data,服務器響應狀態碼200。POST每次發送兩個TCP數據包,瀏覽器先發送HTTP header,服務器收到後返回100(continue),瀏覽器再繼續發送data,服務器響應200。

PUT 上傳文件 DELETE 刪除文件 OPTIONS 查看當前URL支持的HTTP方法 HEAD 獲取首部


流程

①先檢查輸入的URL是否合法,然後查詢瀏覽器的緩存,如果有則直接顯示。

②通過DNS域名解析服務解析IP地址,先從瀏覽器緩存查詢、然後是操作系統和hosts文件的緩存,如果沒有查詢本地服務器的緩存。

③通過TCP的三次握手機制建立連接,建立連接後向服務器發送HTTP請求,請求數據包。

④服務器收到瀏覽器的請求後,進行處理並響應。

⑤瀏覽器收到服務器數據後,如果可以就存入緩存。

⑥瀏覽器發送請求內嵌在HTML中的資源,例如css、js、圖片和視頻等,如果是未知類型會彈出對話框。

⑦瀏覽器渲染頁面並呈現給用戶。


HTTP1.1

HTTP1.0使用的是非持續連接,每次請求文檔就有2倍的RTT開銷,另外客戶和服務器每一次建立新的TCP連接都要分配緩存和變量,這種非持續連接會給服務器造成很大的壓力。

HTTP1.1使用的是持續連接,服務器會在發送響應後在一段時間內繼續保持這條連接,使同一個瀏覽器和服務器可以繼續在這條連接上傳輸後續的HTTP請求和響應報文。HTTP1.1的持續連接有兩種工作方式,非流水線和流水線方式。非流水線方式就是客戶在收到前一個響應後才能發送下一個請求,流水線方式是客戶收到響應前就能連着發送新的請求。


HTTPS

特點

HTTP有很大的安全隱患:使用明文進行通信,內容可能會被竊聽。不驗證通信方的身份,通信方的身份有可能遭遇僞裝。無法證明報文的完整性,報文有可能遭篡改。

HTTPS是以安全爲目標的HTTP通道,S代表security,讓HTTP先和SSL通信,再由SSL和TCP 通信,也就是說 HTTPS使用了隧道進行通信。通過使用 SSL,HTTPS 具有了加密(防竊聽)、認證(防僞裝)和完整性保護(防篡改)。

HTTP的端口是80,而HTTPS的端口是443。

流程

加密算法主要有對稱加密和非對稱加密,對稱加密的運算速度快,但安全性不高。非對稱密鑰加密,加密和解密使用不同的密鑰。公開密鑰所有人都可以獲得,通信發送方獲得接收方的公開密鑰之後,就可以使用公開密鑰進行加密,接收方收到通信內容後使用私有密鑰解密。

非對稱密鑰除了用來加密還可以用來進行簽名。因爲私有密鑰無法被其他人獲取,因此通信發送方使用其私有密鑰進行簽名,通信接收方使用發送方的公開密鑰對簽名進行解密,就能判斷這個簽名是否正確。非對稱加密的運算速度慢,但是更安全。HTTPS採用混合的加密機制,使用非對稱密鑰加密用於傳輸對稱密鑰來保證傳輸過程的安全性,之後使用對稱密鑰加密進行通信來保證通信過程的效率。

  • 瀏覽器和服務器建立TCP連接後,會發送一個證書請求,其中包含了自己可以實現的算法列表和一些必要信息,用於商議雙方使用的加密算法。

  • 服務器收到請求後會選擇加密算法,然後返回證書,包含了服務器的信息,域名、申請證書的公司、加密的公鑰以及加密的算法等。

  • 瀏覽器收到之後,檢查簽發該證書的機構是否正確,該機構的公鑰簽名是否有效,如果有效就生成對稱密鑰,並利用公鑰對其加密,然後發送給服務器。

  • 服務器收到密鑰後,利用自己的私鑰解密。之後瀏覽器和服務器就可以基於對稱加密對數據進行加密和通信。


電子郵件系統協議 SMTP/POP3/IMAP

一個電子郵件系統有三個主要組成構件,即用戶代理、郵件服務器、以及郵件協議。

從用戶代理把郵件傳送到郵件服務器,以及在郵件服務器之間的傳送都要使用 SMTP,但用戶代理從郵件服務器讀取郵件時則要使用 POP3 或 IMAP 協議。

基於萬維網的電子郵件使用戶可以利用瀏覽器收發電子郵件,用戶瀏覽器和郵件服務器之間使用 HTTP 協議,而郵件服務器之間的傳送仍然使用 SMTP 協議。


簡單網絡管理協議 SNMP

SNMP 由三部分組成,SNMP 本身,負責讀取和改變各代理中的對象名及其狀態數值;管理信息結構 SMI,定義命名對象和對象類型的通用規則,以及把對象之間值進行編碼的基本編碼規範 BER;管理信息庫 MIB,在被管理的實體中創建命名對象並規定其類型。


WEB安全 ⭐⭐

概述

計算機網絡面臨的威脅主要有被動攻擊和主動攻擊。

被動攻擊指攻擊者從網絡上竊聽他人的通信內容,也叫截獲。在被動攻擊中,攻擊者只是觀察和分析某一協議數據單元PDU而不干擾信息流。攻擊者可以通過觀察PDU的協議控制信息部分,瞭解正在通信的協議的地址和身份,通過研究PDU的長度和發送頻度,瞭解所交換的數據的某種性質。這種攻擊又叫做流量分析。

主動攻擊包括:

  • 篡改:攻擊者故意篡改網絡上傳輸的報文,包括徹底中斷傳送的報文,甚至把完全僞造的報文發給接收端,這種攻擊方式也叫做更改報文流。

  • 惡意程序:計算機病毒,能夠傳染其他程序的程序,主要通過修改其他程序來把自身或自身的變種複製進去完成。計算機蠕蟲,通過網絡通信能把自己從一個結點發往另一個節點並且自動啓動運行的程序。特洛伊木馬,它執行的功能並非聲稱的功能而是惡意程序,例如一個編譯程序除了完成編譯任務外還偷偷地複製源程序。邏輯炸彈,當運行環境滿足某種特殊條件時就會執行特殊功能的程序,例如當日期爲22號且爲週三的時候就會刪除所有文件。後門入侵,指利用系統實現中的漏洞通過網絡入侵系統。流氓軟件,一種未經用戶同意就在用戶計算機上安裝並損害用戶利益的軟件。

  • 拒絕服務DoS:攻擊者向互聯網上某個服務器不停地發送大量分組,使其無法提供正常服務甚至完全癱瘓。如果從互聯網成百上千的網站一起攻擊一個網站就叫做分佈式拒絕服務DDoS,有時也叫網絡寬帶攻擊。

  • ARP欺騙:在使用以太網交換機的網絡中,攻擊者向某個以太網交換機發送大量的僞造源MAC的地址,以太網交換機收到這樣的幀就把虛假的MAC源地址填入到交換表中,由於僞造的數量很大很快就填滿了表,導致以太網交換機無法正常工作。

對於主動攻擊可以採取適當的措施檢測,對於被動攻擊通常是檢測不出來的。根據這些特點,得出計算機網絡安全的主要目標如下:①防止報文內容分析和流量分析。②防止惡意程序。③防止更改報文流和拒絕服務。

安全的計算機網絡有4個目標:①保密性,只有信息的發送方和接收方看得懂信息,這是最基本的要求,需要利用密碼技術實現。②端點鑑別,鑑別信息的發送方和接收方的真實身份,對於主動攻擊非常重要。③信息完整性,確保信息的內容沒有被篡改過,和端點鑑別密不可分。④運行安全性,通過訪問控制來控制權限,規定每個用戶的訪問權限。


密碼體制

對稱密碼密鑰體制

加密密鑰和解密密鑰使用相同的密碼體制,例如數據加密標準DES,保密性取決於對密鑰的保密,而算法是公開的。在DES之後提出了高級加密標準AES來取代DES。

公鑰密碼體制

又叫公開密鑰密碼體制,加密和解密使用不同的密鑰。產生的主要原因是對稱密碼密鑰體制的密鑰分配問題,如果事先約定密鑰,就會給密鑰的管理和分配帶來很大的不便。另一個原因是對於數字簽名的需要,許多應用中人們需要通過對純數字的電子信息簽名,表明該信息是由某個特定的人產生的。


數字簽名

確保實現以下功能:①報文鑑別,接收者能夠覈實發送者的身份。②報文的完整性,接收者可以確信收到的報文沒有被人篡改過。③不可否認,發送方事後不能抵賴對報文的簽名。


鑑別

**報文鑑別:**鑑別所收到的報文的確是報文發送者自己發送的,而不是其他人僞造或篡改的,包含了端點鑑別和報文完整性的鑑別,通過密碼散列函數如MD5、SHA-1,報文鑑別碼等實現。

**實體鑑別:**僅鑑別發送報文的實體,可以是一個人也可以是進程和服務器,這就是端點鑑別。報文鑑別需要對每一個報文進行鑑別,實體鑑別是在系統接入的全部時間內對和自己通信的對方實體驗證一次。


網絡層安全協議

IPsec,不是一個單獨的協議而是IP層提供網絡通信安全的協議族,沒有限定用戶使用哪種加密和鑑別算法,是一個框架,允許通信雙方選擇合適的算法和參數,爲保證互操作性,實現了一套加密算法。

可以劃分爲三部分:①IP數據報格式的2個協議,鑑別首部AH和封裝安全有效載荷ESP。AH可以提供源點鑑別和數據完整性,但是不能保密,而ESP三者皆可。②有關算法的協議。③互聯網密鑰交換協議IKE。使用AH或ESP的數據報又叫IP安全數據報,有兩種工作方式:運輸方式,在整個運輸層的報文段前後加上若干控制信息,再加上IP首部構成IP安全數據報。隧道形式,在原始IP數據報的前後添加若干控制信息,再加上新的IP首部構成一個IP安全數據報。


運輸層安全協議

SSL安全套接字層/TLS 運輸層安全

SSL是Netscape開發的安全協議,廣泛用於基於萬維網的各種網絡應用,SSL作用於端系統的應用層HTTP和運輸層之間,在TCP之上建立一個安全的連接通道,爲TCP傳輸的數據提供安全保障。SSL的服務:①SSL服務器鑑別,允許用戶鑑別服務器的身份,支持SSL客戶端通過驗證服務器證書,鑑別服務器身份並獲取公鑰。②SSL客戶鑑別,SSL可選的安全服務,允許服務器證實客戶身份。③加密的SSL會話,對客戶和服務器發送的所有報文進行加密,並檢測報文是否被篡改。


防火牆與入侵檢測

惡意用戶或軟件通過網絡利用系統的漏洞進行入侵,包括病毒、木馬、DoS等。之前討論的所有安全機制都不能有效的解決這些問題。

防火牆

一種訪問控制技術,嚴格控制進出網絡的分組,禁止任何不必要的通信,從而減少潛在侵入的發生。防火牆是一種特殊編程的路由器,安裝在一個網點和網絡中的其餘部分之間,目的是實施訪問控制策略。策略是由防火牆單位自行制定的,一般防火牆內的網絡叫做可信任網絡,防火牆之外的網絡叫做不可信網絡。防火牆的主要技術分爲分組過濾和應用網關。

入侵檢測IDS

防火牆應用於入侵發生前,但防火牆不可能組織所有入侵,所以需要第二道防線也就是入侵檢測,應用於入侵發生時。①基於特徵的入侵檢測,維持一個已知攻擊特徵的數據庫,每個特徵是一個於某種入侵活動相關聯的規則集,缺點是隻能檢測已知攻擊,對未知攻擊束手無策。②基於異常的入侵檢測,通過觀察正常運行的網絡流量,學習正常流量的統計特性和規律,當檢測到網絡中的流量不合規律時就認爲可能發生了入侵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章