計算機網絡

1、網絡協議

發送請求的過程是從最頂層(應用層)出發,每一層負責封裝屬於本身的信息到請求中,最後將一整個請求發送給對方。
接收請求的過程是從最底層(網絡接口層)開始,每一層的協議負責解析屬於本身的東西,好比網際層(IP)處理ip信息,傳輸層(TCP)處理點對點的端口,應用層(HTTP)處理Request或Response的Line\Header\Body。web

 

2、TCP(Transmission Control Protocol,傳輸控制協議)

TCP是一種面向鏈接(鏈接導向)的、可靠的基於字節流的傳輸層通訊協議。TCP將用戶數據打包成報文段,它發送後啓動一個定時器,另外一端收到的數據進行確認、對失序的數據從新排序、丟棄重複數據。
TCP的特色有:
算法

    • TCP是面向鏈接的運輸層協議
    • 每一條TCP鏈接只能有兩個端點,每一條TCP鏈接只能是點對點的
    • TCP提供可靠交付的服務
    • TCP提供全雙工通訊。數據在兩個方向上獨立的進行傳輸。所以,鏈接的每一端必須保持每一個方向上的傳輸數據序號。
    • 面向字節流。面向字節流的含義:雖然應用程序和TCP交互是一次一個數據塊,但TCP把應用程序交下來的數據僅僅是一連串的無結構的字節流。

 

一、TCP頭格式

(1)   Source Port(源端口號):數據發起者的端口號,16bit。
(2)   Destination Port(目的端口號):數據接收者的端口號,16bit。
(3)   Sequence Number(順序號碼,Seq):用於在數據通訊中解決網絡包亂序(reordering)問題,以保證應用層接收到的數據不會由於網絡上的傳輸問題而亂序(TCP會用這個順序號碼來拼接數據),32bit。
(4)   Acknowledgment Number(確認號碼,ack):是數據接收方指望收到發送方在下一個報文段的順序號碼(Seq),所以確認號碼應當是上次已成功收到順序號碼(Seq)加1,32bit。
(5)   Offset(TCP報文頭長度):用於存儲報文頭中有多少個32bit(上圖的一行),存儲長度爲4bit,最大可表示(2^3+2^2+2^1+1)*32bit=60bytes的報文頭。最小取值5,5*32bit=20bytes。
(6)   Reserved(保留):6bit, 均爲0
(7)   TCP Flags(TCP標誌位)每一個長度均爲1bit
          CWR:壓縮,TCP Flags值0x80。
          ECE:擁塞,0x40。
          URG:緊急,0x20。當URG=1時,表示報文段中有緊急數據,應儘快傳送。
          ACK:確認,0x10。當ACK = 1時,表明這是一個確認的TCP包,取值0則不是確認包。
          PSH:推送,0x08。當發送端PSH=1時,接收端儘快的交付給應用進程。
          RST:復位,0x04。當RST=1時,代表TCP鏈接中出現嚴重差錯,必須釋放鏈接,再從新創建鏈接。
          SYN:同步,0x02。在創建鏈接是用來同步序號。SYN=1, ACK=0表示一個鏈接請求報文段。SYN=1,ACK=1表示贊成創建鏈接。
          FIN:終止,0x01。當FIN=1時,代表此報文段的發送端的數據已經發送完畢,並要求釋放傳輸鏈接。
(8)   窗口:用來控制對方發送的數據量,通知發放已肯定的發送窗口上限。
(9)   檢驗和:該字段檢驗的範圍包括頭部和數據這兩部分。由發端計算和存儲,並由收端進行驗證。
(10) 緊急指針:緊急指針在URG=1時纔有效,它指出本報文段中的緊急數據的字節數。
(11) TCP選項:長度可變,最長可達40字節瀏覽器

 

二、TCP協議中的三次握手和四次揮手

 

Seq:是發送方當前報文的順序號碼。
ack:是發送方指望對方在下次返回報文中給回的Seq。緩存

 

3、HTTP(HyperText Transfer Protocol,超文本傳輸協議)

HTTP是一個應用層協議,雖然在2015年已推出HTTP/2版本,並被主要的web瀏覽器和web服務器支持。但目前使用最普遍的仍是HTTP/1.1版本。安全

CLOSED: 這個沒什麼好說的了,表示初始狀態。
LISTEN: 這個也是很是容易理解的一個狀態,表示服務器端的某個SOCKET處於監聽狀態,能夠接受鏈接了。
SYN_RECV: 這個狀態表示接受到了SYN報文,在正常狀況下,這個狀態是服務器端的SOCKET在創建TCP鏈接時的三次握手會話過程當中的一箇中間狀態,很短暫,基本 上用netstat你是很難看到這種狀態的,除非你特地寫了一個客戶端測試程序,故意將三次TCP握手過程當中最後一個ACK報文不予發送。所以這種狀態 時,當收到客戶端的ACK報文後,它會進入到ESTABLISHED狀態。
SYN_SENT: 這個狀態與SYN_RECV遙想呼應,當客戶端SOCKET執行CONNECT鏈接時,它首先發送SYN報文,所以也隨即它會進入到了SYN_SENT狀 態,並等待服務端的發送三次握手中的第2個報文。SYN_SENT狀態表示客戶端已發送SYN報文。
ESTABLISHED:這個容易理解了,表示鏈接已經創建了。服務器

 

FIN_WAIT_1: 這個狀態要好好解釋一下,其實FIN_WAIT_1和FIN_WAIT_2狀態的真正含義都是表示等待對方的FIN報文。而這兩種狀態的區別 是:FIN_WAIT_1狀態其實是當SOCKET在ESTABLISHED狀態時,它想主動關閉鏈接,向對方發送了FIN報文,此時該SOCKET即 進入到FIN_WAIT_1狀態。而當對方迴應ACK報文後,則進入到FIN_WAIT_2狀態,固然在實際的正常狀況下,不管對方何種狀況下,都應該馬 上回應ACK報文,因此FIN_WAIT_1狀態通常是比較難見到的,而FIN_WAIT_2狀態還有時經常能夠用netstat看到。
FIN_WAIT_2:上面已經詳細解釋了這種狀態,實際上FIN_WAIT_2狀態下的SOCKET,表示半鏈接,也即有一方要求close鏈接,但另外還告訴對方,我暫時還有點數據須要傳送給你,稍後再關閉鏈接。
TIME_WAIT: 表示收到了對方的FIN報文,併發送出了ACK報文,就等2MSL後便可回到CLOSED可用狀態了。若是FIN_WAIT_1狀態下,收到了對方同時帶 FIN標誌和ACK標誌的報文時,能夠直接進入到TIME_WAIT狀態,而無須通過FIN_WAIT_2狀態。
CLOSING: 這種狀態比較特殊,實際狀況中應該是不多見,屬於一種比較罕見的例外狀態。正常狀況下,當你發送FIN報文後,按理來講是應該先收到(或同時收到)對方的 ACK報文,再收到對方的FIN報文。可是CLOSING狀態表示你發送FIN報文後,並無收到對方的ACK報文,反而卻也收到了對方的FIN報文。什 麼狀況下會出現此種狀況呢?其實細想一下,也不可貴出結論:那就是若是雙方几乎在同時close一個SOCKET的話,那麼就出現了雙方同時發送FIN報 文的狀況,也即會出現CLOSING狀態,表示雙方都正在關閉SOCKET鏈接。 
網絡

CLOSE_WAIT: 這種狀態的含義實際上是表示在等待關閉。怎麼理解呢?當對方close一個SOCKET後發送FIN報文給本身,你係統毫無疑問地會迴應一個ACK報文給對 方,此時則進入到CLOSE_WAIT狀態。接下來呢,實際上你真正須要考慮的事情是察看你是否還有數據發送給對方,若是沒有的話,那麼你也就能夠 close這個SOCKET,發送FIN報文給對方,也即關閉鏈接。因此你在CLOSE_WAIT狀態下,須要完成的事情是等待你去關閉鏈接。
LAST_ACK: 這個狀態仍是比較容易好理解的,它是被動關閉一方在發送FIN報文後,最後等待對方的ACK報文。當收到ACK報文後,也便可以進入到CLOSED可用狀態了。併發

 

 爲何TIME_WAIT狀態還須要等2MSL後才能返回到CLOSED狀態?性能

這是由於:雖然雙方都贊成關閉鏈接了,並且握手的4個報文也都協調和發送完畢,按理能夠直接回到CLOSED狀態(就比如從SYN_SEND狀態到ESTABLISH狀態那樣);可是由於咱們必需要假想網絡是不可靠的,你沒法保證你最後發送的ACK報文會必定被對方收到,所以對方處於LAST_ACK狀態下的SOCKET可能會由於超時未收到ACK報文,而重發FIN報文,因此這個TIME_WAIT狀態的做用就是用來重發可能丟失的ACK報文,並保證於此。學習

 

TCP保證可靠性:

(1)序列號、確認應答、超時重傳

數據到達接收方,接收方須要發出一個確認應答,表示已經收到該數據段,而且確認序號會說明了它下一次須要接收的數據序列號。若是發送發遲遲未收到確認應答,那麼多是發送的數據丟失,也多是確認應答丟失,這時發送方在等待必定時間後會進行重傳。這個時間通常是2*RTT(報文段往返時間)+一個誤差值。

(2)窗口控制與高速重發控制/快速重傳(重複確認應答)

TCP會利用窗口控制來提升傳輸速度,意思是在一個窗口大小內,不用必定要等到應答才能發送下一段數據,窗口大小就是無需等待確認而能夠繼續發送數據的最大值。若是不使用窗口控制,每個沒收到確認應答的數據都要重發。

使用窗口控制,若是數據段1001-2000丟失,後面數據每次傳輸,確認應答都會不停地發送序號爲1001的應答,表示我要接收1001開始的數據,發送端若是收到3次相同應答,就會馬上進行重發;但還有種狀況有多是數據都收到了,可是有的應答丟失了,這種狀況不會進行重發,由於發送端知道,若是是數據段丟失,接收端不會放過它的,會瘋狂向它提醒......

(3)擁塞控制

若是把窗口定的很大,發送端連續發送大量的數據,可能會形成網絡的擁堵(你們都在用網,你在這狂發,吞吐量就那麼大,固然會堵),甚至形成網絡的癱瘓。因此TCP在爲了防止這種狀況而進行了擁塞控制。

慢啓動:定義擁塞窗口,一開始將該窗口大小設爲1,以後每次收到確認應答(通過一個rtt),將擁塞窗口大小*2。

擁塞避免:設置慢啓動閾值,通常開始都設爲65536。擁塞避免是指當擁塞窗口大小達到這個閾值,擁塞窗口的值再也不指數上升,而是加法增長(每次確認應答/每一個rtt,擁塞窗口大小+1),以此來避免擁塞。

將報文段的超時重傳看作擁塞,則一旦發生超時重傳,咱們須要先將閾值設爲當前窗口大小的一半,而且將窗口大小設爲初值1,而後從新進入慢啓動過程。

快速重傳:在遇到3次重複確認應答(高速重發控制)時,表明收到了3個報文段,可是這以前的1個段丟失了,便對它進行當即重傳。

而後,先將閾值設爲當前窗口大小的一半,而後將擁塞窗口大小設爲慢啓動閾值+3的大小。

這樣能夠達到:在TCP通訊時,網絡吞吐量呈現逐漸的上升,而且隨着擁堵來下降吞吐量,再進入慢慢上升的過程,網絡不會輕易的發生癱瘓。

 

採用慢開始和擁塞避免算法的時候

1. 一旦cwnd>慢開始門限,就採用擁塞避免算法,減慢增加速度

2. 一旦出現丟包的狀況,就從新進行慢開始,減慢增加速度

採用快恢復和快重傳算法的時候

1. 一旦cwnd>慢開始門限,就採用擁塞避免算法,減慢增加速度

2. 一旦發送方連續收到了三個重複確認,就採用擁塞避免算法,減慢增加速度

 

 

HTTP協議和HTTPS協議區別以下:

1)HTTP協議是以明文的方式在網絡中傳輸數據,而HTTPS協議傳輸的數據則是通過TLS加密後的,HTTPS具備更高的安全性

2)HTTPS在TCP三次握手階段以後,還須要進行SSL 的handshake,協商加密使用的對稱加密密鑰

3)HTTPS協議須要服務端申請證書,瀏覽器端安裝對應的根證書

4)HTTP協議端口是80,HTTPS協議端口是443

HTTPS優勢:

HTTPS傳輸數據過程當中使用密鑰進行加密,因此安全性更高

HTTPS協議能夠認證用戶和服務器,確保數據發送到正確的用戶和服務器

HTTPS缺點:

HTTPS握手階段延時較高:因爲在進行HTTP會話以前還須要進行SSL握手,所以HTTPS協議握手階段延時增長

HTTPS部署成本高:一方面HTTPS協議須要使用證書來驗證自身的安全性,因此須要購買CA證書;另外一方面因爲採用HTTPS協議須要進行加解密的計算,佔用CPU資源較多,須要的服務器配置或數目高

 

 

 

HTTP返回碼

HTTP協議的響應報文由狀態行、響應頭部和響應包體組成,其響應狀態碼整體描述以下:

1xx:指示信息--表示請求已接收,繼續處理。

2xx:成功--表示請求已被成功接收、理解、接受。

3xx:重定向--要完成請求必須進行更進一步的操做。

4xx:客戶端錯誤--請求有語法錯誤或請求沒法實現。

5xx:服務器端錯誤--服務器未能實現合法的請求。

常見狀態代碼、狀態描述的詳細說明以下。

200 OK:客戶端請求成功。

206 partial content服務器已經正確處理部分GET請求,實現斷點續傳或同時分片下載,該請求必須包含Range請求頭來指示客戶端指望獲得的範圍

300 multiple choices(可選重定向):被請求的資源有一系列可供選擇的反饋信息,由瀏覽器/用戶自行選擇其中一個。

301  moved permanently(永久重定向):該資源已被永久移動到新位置,未來任何對該資源的訪問都要使用本響應返回的若干個URI之一。

302 move temporarily(臨時重定向):請求的資源如今臨時從不一樣的URI中得到,

304:not modified :若是客戶端發送一個待條件的GET請求而且該請求以經被容許,而文檔內容未被改變,則返回304,該響應不包含包體(便可直接使用緩存)。

403 Forbidden:服務器收到請求,可是拒絕提供服務。

t Found:請求資源不存在,舉個例子:輸入了錯誤的URL。

 

IP地址做用,以及MAC地址做用

MAC地址是一個硬件地址,用來定義網絡設備的位置,主要由數據鏈路層負責。而IP地址是IP協議提供的一種統一的地址格式,爲互聯網上的每個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差別。

 

 

搜索baidu,會用到計算機網絡中的什麼層?每層是幹什麼的

瀏覽器中輸入URL

瀏覽器要將URL解析爲IP地址,解析域名就要用到DNS協議,首先主機會查詢DNS的緩存,若是沒有就給本地DNS發送查詢請求。DNS查詢分爲兩種方式,一種是遞歸查詢,一種是迭代查詢。若是是迭代查詢,本地的DNS服務器,向根域名服務器發送查詢請求,根域名服務器告知該域名的一級域名服務器,而後本地服務器給該一級域名服務器發送查詢請求,而後依次類推直到查詢到該域名的IP地址。DNS服務器是基於UDP的,所以會用到UDP協議。

 

獲得IP地址後,瀏覽器就要與服務器創建一個http鏈接。所以要用到http協議,http協議報文格式上面已經提到。http生成一個get請求報文,將該報文傳給TCP層處理,因此還會用到TCP協議。若是採用https還會使用https協議先對http數據進行加密。TCP層若是有須要先將HTTP數據包分片,分片依據路徑MTU和MSS。TCP的數據包而後會發送給IP層,用到IP協議。IP層經過路由選路,一跳一跳發送到目的地址。固然在一個網段內的尋址是經過以太網協議實現(也能夠是其餘物理層協議,好比PPP,SLIP),以太網協議須要直到目的IP地址的物理地址,有須要ARP協議。

 

 

一、客戶端瀏覽器經過DNS解析到www.baidu.com 的IP地址220.181.27.48,經過這個IP地址找到客戶端到服務器的路徑。客戶端瀏覽器發起一個HTTP會話到220.181.27.48,而後經過TCP進行封裝數據包,輸入到網絡層。
二、在客戶端的傳輸層,把HTTP會話請求分紅報文段,添加源和目的端口,如服務器使用80端口監聽客戶端的請求,客戶端由系統隨機選擇一個端口如5000,與服務器進行交換,服務器把相應的請求返回給客戶端的5000端口。而後使用IP層的IP地址查找目的端。
三、客戶端的網絡層不用關心應用層或者傳輸層的東西,主要作的是經過查找路由表肯定如何到達服務器,期間可能通過多個路由器,這些都是由路由器來完成的工做,我不做過多的描述,無非就是經過查找路由表決定經過那個路徑到達服務器。
四、客戶端的鏈路層,包經過鏈路層發送到路由器,經過鄰居協議查找給定IP地址的MAC地址,而後發送ARP請求查找目的地址,若是獲得迴應後就可使用ARP的請求應答交換的IP數據包如今就能夠傳輸了,而後發送IP數據包到達服務器的地址。

 

 

其中:

一、DNS協議,http協議,https協議屬於應用層

應用層是體系結構中的最高層。應用層肯定進程之間通訊的性質以知足用戶的須要。這裏的進程就是指正在運行的程序。應用層不只要提供應用進程所須要的信息交換和遠地操做,並且還要做爲互相做用的應用進程的用戶代理,來完成一些爲進行語義上有意義的信息交換所必須的功能。應用層直接爲用戶的應用進程提供服務。

二、TCP/UDP屬於傳輸層

傳輸層的任務就是負責主機中兩個進程之間的通訊。因特網的傳輸層可以使用兩種不一樣協議:即面向鏈接的傳輸控制協議TCP,和無鏈接的用戶數據報協議UDP。面向鏈接的服務可以提供可靠的交付,但無鏈接服務則不保證提供可靠的交付,它只是「盡最大努力交付」。這兩種服務方式都頗有用,備有其優缺點。在分組交換網內的各個交換結點機都沒有傳輸層。

三、IP協議,ARP協議屬於網絡層

網絡層負責爲分組交換網上的不一樣主機提供通訊。在發送數據時,網絡層將運輸層產生的報文段或用戶數據報封裝成分組或包進行傳送。在TCP/IP體系中,分組也叫做IP數據報,或簡稱爲數據報。網絡層的另外一個任務就是要選擇合適的路由,使源主機運輸層所傳下來的分組可以交付到目的主機。
四、數據鏈路層

當發送數據時,數據鏈路層的任務是將在網絡層交下來的IP數據報組裝成幀,在兩個相鄰結點間的鏈路上傳送以幀爲單位的數據。每一幀包括數據和必要的控制信息(如同步信息、地址信息、差錯控制、以及流量控制信息等)。控制信息使接收端可以知道—個幀從哪一個比特開始和到哪一個比特結束。控制信息還使接收端可以檢測到所收到的幀中有無差錯。
五、物理層

物理層的任務就是透明地傳送比特流。在物理層上所傳數據的單位是比特。傳遞信息所利用的一些物理媒體,如雙絞線、同軸電纜、光纜等,並不在物理層以內而是在物理層的下面。所以也有人把物理媒體當作第0層。

 

 

DNS域名系統,簡單描述其工做原理。

當DNS客戶機須要在程序中使用名稱時,它會查詢DNS服務器來解析該名稱。客戶機發送的每條查詢信息包括三條信息:包括:指定的DNS域名,指定的查詢類型,DNS域名的指定類別。基於UDP服務,端口53. 該應用通常不直接爲用戶使用,而是爲其餘應用服務,如HTTP,SMTP等在其中須要完成主機名到IP地址的轉換。

 

 

TCP和UDP的區別?

TCP提供面向鏈接的、可靠的數據流傳輸,而UDP提供的是非面向鏈接的、不可靠的數據流傳輸。
TCP傳輸單位稱爲TCP報文段,UDP傳輸單位稱爲用戶數據報。
TCP注重數據安全性,UDP數據傳輸快,由於不須要鏈接等待,少了許多操做,可是其安全性卻通常。
TCP對應的協議和UDP對應的協議
TCP對應的協議:
(1) FTP:定義了文件傳輸協議,使用21端口。
(2) Telnet:一種用於遠程登錄的端口,使用23端口,用戶能夠以本身的身份遠程鏈接到計算機上,可提供基於DOS模式下的通訊服務。
(3) SMTP:郵件傳送協議,用於發送郵件。服務器開放的是25號端口。
(4) POP3:它是和SMTP對應,POP3用於接收郵件。POP3協議所用的是110端口。
(5)HTTP:是從Web服務器傳輸超文本到本地瀏覽器的傳送協議。
UDP對應的協議:
(1) DNS:用於域名解析服務,將域名地址轉換爲IP地址。DNS用的是53號端口。
(2) SNMP:簡單網絡管理協議,使用161號端口,是用來管理網絡設備的。因爲網絡設備不少,無鏈接的服務就體現出其優點。
(3) TFTP(Trival File Transfer Protocal),簡單文件傳輸協議,該協議在熟知端口69上使用UDP服務。

 

TCP保證數據順序,UDP不保證。

UDP適用於一次傳輸少許數據,對安全性要求不高的情形。

 

 

瞭解交換機、路由器、網關的概念,並知道各自的用途 

1)交換機
在計算機網絡系統中,交換機是針對共享工做模式的弱點而推出的。交換機擁有一條高帶寬的背部總線和內部交換矩陣。交換機的全部的端口都掛接在這條背 部總線上,當控制電路收到數據包之後,處理端口會查找內存中的地址對照表以肯定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪一個端口上,經過內部 交換矩陣迅速將數據包傳送到目的端口。目的MAC若不存在,交換機才廣播到全部的端口,接收端口迴應後交換機會「學習」新的地址,並把它添加入內部地址表 中。
交換機工做於OSI參考模型的第二層,即數據鏈路層。交換機內部的CPU會在每一個端口成功鏈接時,經過ARP協議學習它的MAC地址,保存成一張 ARP表。在從此的通信中,發往該MAC地址的數據包將僅送往其對應的端口,而不是全部的端口。所以,交換機可用於劃分數據鏈路層廣播,即衝突域;但它不 能劃分網絡層廣播,即廣播域。
交換機被普遍應用於二層網絡交換,俗稱「二層交換機」。
交換機的種類有:二層交換機、三層交換機、四層交換機、七層交換機分別工做在OSI七層模型中的第二層、第三層、第四層盒第七層,並所以而得名。
2)路由器
路由器(Router)是一種計算機網絡設備,提供了路由與轉送兩種重要機制,能夠決定數據包歷來源端到目的端所通過 的路由路徑(host到host之間的傳輸路徑),這個過程稱爲路由;將路由器輸入端的數據包移送至適當的路由器輸出端(在路由器內部進行),這稱爲轉 送。路由工做在OSI模型的第三層——即網絡層,例如網際協議。
路由器的一個做用是連通不一樣的網絡,另外一個做用是選擇信息傳送的線路。 路由器與交換器的差異,路由器是屬於OSI第三層的產品,交換器是OSI第二層的產品(這裏特指二層交換機)。
3)網關
網關(Gateway),網關顧名思義就是鏈接兩個網絡的設備,區別於路由器(因爲歷史的緣由,許多有關TCP/IP 的文獻曾經把網絡層使用的路由器(Router)稱爲網關,在今天不少局域網採用都是路由來接入網絡,所以如今一般指的網關就是路由器的IP),常常在家 庭中或者小型企業網絡中使用,用於鏈接局域網和Internet。 網關也常常指把一種協議轉成另外一種協議的設備,好比語音網關。
在傳統TCP/IP術語中,網絡設備只分紅兩種,一種爲網關(gateway),另外一種爲主機(host)。網關能在網絡間轉遞數據包,但主機不能 轉送數據包。在主機(又稱終端系統,end system)中,數據包需通過TCP/IP四層協議處理,可是在網關(又稱中介系 統,intermediate system)只須要到達網際層(Internet layer),決定路徑以後就能夠轉送。在當時,網關 (gateway)與路由器(router)尚未區別。
在現代網絡術語中,網關(gateway)與路由器(router)的定義不一樣。網關(gateway)能在不一樣協議間移動數據,而路由器(router)是在不一樣網絡間移動數據,至關於傳統所說的IP網關(IP gateway)。
網關是鏈接兩個網絡的設備,對於語音網關來講,他能夠鏈接PSTN網絡和以太網,這就至關於VOIP,把不一樣電話中的模擬信號經過網關而轉換成數字信號,並且加入協議再去傳輸。在到了接收端的時候再經過網關還原成模擬的電話信號,最後才能在電話機上聽到。
對於以太網中的網關只能轉發三層以上數據包,這一點和路由是同樣的。而不一樣的是網關中並無路由表,他只能按照預先設定的不一樣網段來進行轉發。網關最重要的一點就是端口映射,子網內用戶在外網看來只是外網的IP地址對應着不一樣的端口,這樣看來就會保護子網內的用戶。

 

 

什麼是對稱加密和非對稱加密:

對稱加密: 加密和解密的祕鑰使用的是同一個.
非對稱加密: 與對稱加密算法不一樣,非對稱加密算法須要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。
對稱加密算法: 密鑰較短,破譯困難,除了數據加密標準(DES),另外一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密性好,且對計算機性能要求也沒有那麼高.

優勢:

    算法公開、計算量小、加密速度快、加密效率高

缺點:

    在數據傳送前,發送方和接收方必須商定好祕鑰,而後 使雙方都能保存好祕鑰。其次若是一方的祕鑰被泄露,那麼加密信息也就不安全了。另外,每對用戶每次使用對稱加密算法時,都須要使用其餘人不知道的惟一祕鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成爲雙方的負擔。

常見的對稱加密算法有: DES、3DES、Blowfish、IDEA、RC四、RC五、RC6 和 AES 

非對稱加密算法: 公開密鑰與私有密鑰是一對,若是用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;若是用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。由於加密和解密使用的是兩個不一樣的密鑰,因此這種算法叫做非對稱加密算法。

非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把做爲公用密鑰向其它方公開;獲得該公用密鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方;甲方再用本身保存的另外一把專用密鑰對加密後的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密後的任何信息。

優勢:

    安全

缺點:

    速度較慢

常見的非對稱加密算法有: RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

Hash算法(摘要算法)

Hash算法特別的地方在於它是一種單向算法,用戶能夠經過hash算法對目標信息生成一段特定長度的惟一hash值,卻不能經過這個hash值從新得到目標信息。所以Hash算法經常使用在不可還原的密碼存儲、信息完整性校驗等。

常見的對稱加密算法有: MD二、MD四、MD五、HAVAL、SHA

相關文章
相關標籤/搜索