天天看點

面經筆記本(計網&&web篇)面經筆記本(計網&&web篇)

面經筆記本(計網&&web篇)

基礎篇

TCP三向交握四次揮手?

(參考:https://www.cnblogs.com/bj-mr-li/p/11106390.html)

面經筆記本(計網&&web篇)面經筆記本(計網&&web篇)

三次握手:

第一次握手:建立連接配接時,用戶端發送SYN包(syn=x),SIN置為1,發送到伺服器,等待伺服器确認;

第二次握手:伺服器收到SYN包,确認客戶的SYN後,ACK置為1,ack=x+1,表示确認收到消息,同時自己也發送一個SYN包(syn=k),等待用戶端确認;

第三次握手:用戶端收到伺服器的SYN+ACK包,向伺服器發送确認包ACK(ack=k+1),此包發送完畢,TCP連接配接成功,完成三次握手。

四次揮手:

第一次揮手:用戶端A發送一個FIN+SYN(syn=x),用來關閉客戶A到伺服器B的資料傳送。

第二次揮手:伺服器B收到這個FIN,它發回一個ACK(ack=x+1)。

第三次揮手:伺服器B關閉與用戶端A的連接配接,發送一個FIN+SYN(syn=y)給用戶端A。

第四次揮手:用戶端A發回ACK封包确認,并将确認并發回一個ACK(ack=x+1)。

為什麼建立連接配接協定是三次握手,而關閉連接配接卻是四次握手呢?

三次握手中,第二次從伺服器到用戶端的握手,是可以在發送确認封包的同時發送請求封包的。但是四次揮手中,第二次和第三次揮手不能同時發送,因為伺服器接收到用戶端的結束請求時可能還沒做好準備,中間需要一段時間完成未完成的資料傳輸之後才能發送結束請求。

第三次沒有收到ACK包會怎樣?

   由于Server沒有收到ACK确認,是以會重發之前的SYN+ACK(預設重發五次,之後自動關閉連接配接)

如果已經建立了連接配接,但用戶端出現了故障怎麼辦?

   伺服器每收到一次用戶端的請求後都會重新複位一個計時器,時間通常是設定為2小時,若兩小時還沒有收到用戶端的任何資料,伺服器就會發送一個探測封包段,以後每隔75秒鐘發送一次。若一連發送10個探測封包仍然沒反應,伺服器就認為用戶端出了故障,接着就關閉連接配接。

cookie與session?

cookie是伺服器在本地機器上存儲的小段文本,并随每一個請求發送至同一伺服器,cookie是儲存在用戶端的。

cookie分為會話cookie和持久cookie

  會話cookie:不設定過期時間,隻要關閉浏覽器視窗cookie就消失了。會話cookie不儲存在硬碟上,儲存在記憶體裡。

  持久cookie:設定過期時間,浏覽器就會把cookie儲存到硬碟上,關閉後再次打開浏覽器,這些cookie依然有效直到超過設定的過期時間。存儲在硬碟上的cookie可以在不同的浏覽器程序間共享。

  

  利用持久Cookie自動登入:當使用者在某個網站注冊後,就會收到一個惟一使用者ID的cookie。客戶後來重新連接配接時,這個使用者ID會自動傳回,伺服器對它進行檢查,确定它是否為注冊使用者且選擇了自動登入,進而使使用者無需給出明确的使用者名和密碼,就可以通路伺服器上的資源。

Session定義

  Session是在伺服器端儲存使用者資料。浏覽器第一次發送請求時,伺服器自動生成了Session ID來唯一辨別這個并傳回給浏覽器。浏覽器第二次發送請求會将前一次伺服器傳回的Session ID放在請求中一并發送到伺服器上,伺服器從請求中提取出Session ID,并和儲存的所有Session ID進行對比,找到這個使用者的資訊。一般這個Session ID會有個時間限制,預設30分鐘逾時後毀掉這次Session ID。

  

總的來說Cookie 在用戶端(浏覽器、易僞造、不安全),Session 在伺服器端(會消耗伺服器資源)

HTTP與HTTPS有什麼差別?

   HTTP協定傳輸的資料都是未加密的,也就是明文的,是以使用HTTP協定傳輸隐私資訊非常不安全,為了保證這些隐私資料能加密傳輸,于是網景公司設計了SSL(Secure Sockets Layer)協定用于對HTTP協定傳輸的資料進行加密,進而就誕生了HTTPS。簡單來說,HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定,要比http協定安全。

HTTPS和HTTP的差別主要如下:

1、https協定需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文本傳輸協定,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協定。

3、http和https使用的是完全不同的連接配接方式,用的端口也不一樣,前者是80,後者是443。

4、http的連接配接很簡單,是無狀态的;HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定,比http協定安全。