1. 程式人生 > >http與tcp面試題5

http與tcp面試題5

1.HTTPS的加密方式是什麼,講講整個加密解密流程。

 加密方式:

1)、對稱密碼演算法:指加密和解密使用相同的金鑰,速度高,可加密內容較大,用來加密會話過程中的訊息。典型演算法DES、AES、RC5、IDEA(分組加密)RC4。

  2)、非對稱密碼演算法:又稱為公鑰加密演算法,是指加密和解密使用不同的金鑰,加密速度較慢,但能提供更好的身份認證技術,用來加密對稱加密的金鑰(公開的金鑰用於加密,私有的金鑰用於解密)典型的演算法RSA、DSA、DH。

   3)、雜湊演算法:將檔案內容通過此演算法加密變成固定長度的值(雜湊值),這個過程可以使用金鑰也可以不使用。這種雜湊變化是不可逆的,也就是說不能從雜湊值程式設計原文,因此雜湊變化通道常用語驗證原文是否被篡改。典型的演算法MD5、SHA、BASE64、CRC等。
注意:SSL協議在建立鏈路時,SSL首先對對稱加密的金鑰進行對公加密,鏈路建立好之後,SSL對傳輸內容使用對稱加密。

2.Http和Https有什麼區別。

Https在Http的基礎上加入了SSL/TSL協議,SSL依靠證書來驗證伺服器的身份,併為伺服器與瀏覽器之間的通訊加密。

3.TCP/IP如何保證可靠性,說說TCP頭的結構。

 (1)、三次握手。
      (2)、將資料截斷為合理的長度。應用資料被分割成TCP認為最合適傳送的資料塊。
      (3)、超時重發。
      (4)、對於收到的請求,給予確認響應。
      (5)、校驗出包有錯,丟棄報文段,不響應。
      (6)、對失序資料進行重新排序,傳送於客戶端。
      (7)、能夠丟棄重複資料。
      (8)、流量控制。TCP連線的兩端都有快取大小控制,接收端只允許傳送端傳送自己快取剩餘大小的資料。有效防止快取溢位。
      (9)、擁塞控制。當網路阻塞時,減少資料的傳送。

TCP頭結構:
   (1)、源埠(source port)16位的欄位,定義了傳送這個報文段的主機中的應用程式的埠號。
   (2)、目的埠(destination port)16位的欄位,定義了接收這個報文段的主機中的應用程式的埠號。
   (3)、序列號(sequence number)32位的欄位,定義了指派給本報文段第一個資料位元組的編號。為了保證連線性,要傳送的每一個位元組都要編上號。序號可以告訴終點,報文段中的第一個位元組是這個序列中的哪一個位元組。在建立連線是,雙方使用各自的隨機數生成器生產一個初始序號(inital squence number,ISN),通常兩個方向上的ISN是不同的。
   (4)、確認號(acknowledgment nimber)32位欄位定義了報文段的接收方期望從對方接收的位元組編碼。如果報文段的接收方成功地接收了對方發來的編號為x的位元組,那麼它就返回x+1作為確認號,確認可以和資料捎帶在一起傳送。
   (5)、頭部長度(Hlen)(header length)這個4位元組欄位指出TCP段的頭部長度,以32位欄位來衡量,頭部長度並不規定並可以根據選項欄位中設定的引數面改變。
   (6)、保留(reserved)這個保留欄位佔用6位,它被保留以提供將來使用。
   (7)、URG 緊急資料(urgent data)---這是一條緊急資訊。
   (8)、ACK 確認已收到段
   (9)、PSH 請求在緩衝區尚未填滿時傳送訊息,注意TCP可以等待緩衝區填滿之後再發送段,如果需要立即傳送,應用程式必須利用push引數來通知協議。
   (10)、RST 申請重置連線。
   (11)、SYN 此訊息用於在建立連線時同步傳輸資料的計時器。
   (12)、FIN 該屬性申明發送端已經發送出被傳輸資料的最後一個位元組。
   (13)、視窗大小(window)16位欄位,這個欄位定義的是傳送TCP的視窗大小,以位元組為單位。視窗最大長度是65535位元組,這個值通常被稱為接收視窗(rwnd),並由接收方來決定。這種情況下,傳送方必須服從接收方的指示。
   (14)、校驗和(checksum)16位欄位包含的是檢驗和,檢驗和是差錯控制的手段之一。
   (15)、緊急指標(urgent point)該欄位佔用2位元組,與URG程式碼位一起使用並且申明及時使存在著緩衝區溢位也必須緊急接收的資料末端。因此,如果有些資料需要不按照順序被送往目的應用程式,那麼傳送端的應用程式必須利用緊急資料引數通知TCP。
   (16)、選項(option)該欄位為變長且可以忽略。他的最大長度為3位元組,用於解決一些輔助任務----比如,選擇最大段長。選項可以位於TCP頭部的末端,其長度必須是8的倍數。
   (17)、填充(padding)該欄位長度不固定,這是個用於補充頭部欄位使得它的長度為32位字的整數倍的一個偽欄位9