1、http的請求報文和響應報文?
http請求報文:請求行(請求方法+url)、請求頭,請求體
http響應報文:狀態行(http版本+狀態碼)、響應頭、響應體
2、常用的http請求類型?
請求類型很多:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
最常用:get,post
3、http和https的區別,為什么https更加安全,ssl加密是怎樣的?
1)http是直接和tcp通信,https=http+ssl加密
2)http端口號為80,https端口號為443
3)https基於傳輸層、http基於應用層
4)https對於搜索引擎更友好,利於seo,百度、谷歌等搜索引擎優先索引https網頁
ssl加密:發送密文的一方使用對方的公鑰進行加密處理“對稱的密鑰”,然后對方用自己的私鑰解密拿到“對稱的密鑰”,這樣可以確保交換的密鑰是安全的前提下,使用對稱加密方式進行通信。
所以,HTTPS采用對稱加密和非對稱加密兩者並用的混合加密機制。
4、如何理解get和post的區別?
1)get請求參數跟在url后面,有長度限制(瀏覽器長度限制,如果是內部的get請求則不限制長度),post請求參數封裝在請求頭中,無長度限制。
2)get請求參數暴露,安全性保密性沒有post高
3)get請求會被瀏覽器緩存起來,post請求內容不會被緩存
5、有人說post比get安全,這種說法對嗎?
選擇性使用,GET對數據進行查詢,POST主要對數據進行增刪改,get請求不會對服務端數據產生任何影響;因此只要不用get傳輸保密信息,它還是安全的。
6、http的常用響應碼有哪些?502和504的區別?405和415的區別?302和301的區別?
1xx(臨時響應)
2xx (成功)
3xx (重定向)
301 (永久移動) 請求的網頁已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。
302 (臨時移動) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以后的請求。
4xx(客戶端請求錯誤)
405 (方法禁用)禁用請求中指定的方法。
415 (不支持的媒體類型)請求的格式不受請求頁面的支持。
5xx(服務器錯誤)
502 (錯誤網關)服務器作為網關或代理,從上游服務器收到無效響應。
504 (網關超時) 服務器作為網關或代理,但是沒有及時從上游服務器收到請求。
7、cookie和session的區別?cookie從哪里來?cookie失效時間由哪些方法控制?
1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
5、所以個人建議:
將登陸信息等重要信息存放為session
其他信息如果需要保留,可以放在cookie中
能通過Web Server或者客戶端瀏覽器來獲取到Cookie。多數瀏覽器能夠配置允許用戶訪問Cookies,但是注意不同的站點之間的Cookie是不能共享的。
Cookie有一個屬性expires,設置其值為一個時間,那么當到達此時間后,此cookie失效
過Okhttp的攔截器去進行持久化cookie
8、瀏覽器f5和強制刷新ctrl+f5的區別是什么?
1.F5使用緩存,並且只有在資源內容發生變化的時候才會去更新資源
當刷新一個頁面的時候,瀏覽器會嘗試使用各種類型的緩存,並且會發送If-Modified-Since頭到服務器,如果服務器返回304 Not Modified,那么瀏覽器會使用本地的緩存;如果服務器返回200 OK和資源內容,那么瀏覽器會使用返回的資源內容,並把資源內容進行緩存,待下次使用。
2.CTRL-F5 強制更新頁面資源的緩存
MSIE會發送Cache-Control: no-cache頭,Firefox和Chrome除了發送Cache-Control: no-cache頭之外,還會發送Pragma: no-cache頭。Opera比較另類,不發送任何和緩存相關的頭。
9、http緩存機制是怎樣的,如何合理地緩存http?
Http緩存主要分為兩種:強緩存和協商緩存
1)強緩存基本原理是:所請求的數據在緩存數據庫中尚未過期時,不與服務器進行交互,直接使用緩存數據庫中的數據。
Expire 其指定了一個日期/時間, 在這個日期/時間之后,HTTP響應被認為是過時的。但是它本身是一個HTTP1.0標准下的字段,所以如果請求中還有一個置了 “max-age” 或者 “s-max-age” 指令的Cache-Control響應頭,那么 Expires 頭就會被忽略。
Cache-Control通用消息頭用於在http 請求和響應中通過指定指令來實現緩存機制。其常用的幾個取值有:
private:客戶端可以緩存
public:客戶端和代理服務器都可以緩存
max-age=xxx:緩存的內容將在xxx 秒后失效
s-max-age=xxx:同s-max-age,但僅適用於共享緩存(比如各個代理),並且私有緩存中忽略。
no-cache:需要使用協商緩存來驗證緩存數據
no-store:所有內容都不會緩存,強緩存和協商緩存都不會觸發
must-revalidate:緩存必須在使用之前驗證舊資源的狀態,並且不可使用過期資源。
2)當強緩存過期未命中或者響應報文Cache-Control中有must-revalidate標識必須每次請求驗證資源的狀態時,便使用協商緩存的方式去處理緩存文件。
協商緩存主要原理是從緩存數據庫中取出緩存的標識,然后向瀏覽器發送請求驗證請求的數據是否已經更新,如果已更新則返回新的數據,若未更新則使用緩存數據庫中的緩存數據。
10、請求頭中一般有什么?
1)Accept 作用: 瀏覽器端可以接受的媒體類型 例:Accept :text/html
2)Accept-Encoding: 作用: 瀏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支持壓縮,支持什么壓縮方法(gzip,deflate)
3)Accept-Language 作用: 瀏覽器申明自己接收的語言。 例:Accept-Language: en-us
4)Connection 例如: Connection: keep-alive 當一個網頁打開完成后,客戶端和服務器之間用於傳輸HTTP數據的TCP連接不會關閉,如果客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經建立的連接
5)Host(發送請求時,該報頭域是必需的) 作用: 請求報頭域主要用於指定被請求資源的Internet主機和端口號,它通常從HTTP URL中提取出來的
6)Referer 作用:當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器我是從哪個頁面鏈接過來的
7)User-Agent 作用:告訴HTTP服務器, 客戶端使用的
操作系統和瀏覽器的名稱和版本.
11、什么是正向代理,反向代理,中間人攻擊?

正向代理即是客戶端代理, 代理客戶端, 服務端不知道實際發起請求的客戶端.
反向代理即是服務端代理, 代理服務端, 客戶端不知道實際提供服務的服務端
正向代理的用途:
(1)訪問原來無法訪問的資源,如google
(2) 可以做緩存,加速訪問資源
(3)對客戶端訪問授權,上網進行認證
(4)代理可以記錄用戶訪問記錄(上網行為管理),對外隱藏用戶信息
反向代理的作用:
(1)保證內網的安全,阻止web攻擊,大型網站,通常將反向代理作為公網訪問地址,Web服務器是內網
(2)負載均衡,通過反向代理服務器來優化網站的負載
中間人攻擊:
中間人攻擊(Man-in-the-Middle Attack, MITM)是一種由來已久的網絡入侵手段,並且當今仍然有着廣泛的發展空間,如SMB會話劫持、DNS欺騙等攻擊都是典型的MITM攻擊。簡而言之,所謂的MITM攻擊就是通過攔截正常的網絡通信數據,並進行數據篡改和嗅探,而通信的雙方卻毫不知情。
12、uri和url的區別?
URI 是統一資源標識符,而 URL 是統一資源定位符。每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統一資源名稱 (URN),它命名資源但不指定如何定位資源
13.tcp和udp的區別?
1、TCP是面向連接的(在客戶端和服務器之間傳輸數據之前要先建立連接),UDP是無連接的(發送數據之前不需要先建立連接)
2、TCP提供可靠的服務(通過TCP傳輸的數據。無差錯,不丟失,不重復,且按序到達);UDP提供面向事務的簡單的不可靠的傳輸。
3、UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性比較高的通訊或廣播通信。隨着網速的提高,UDP使用越來越多。
4、沒一條TCP連接只能是點到點的,UDP支持一對一,一對多和多對多的交互通信。
5、TCP對系統資源要去比較多,UDP對系統資源要求比較少
6、UDP程序結構更加簡單
7、TCP是流模式,UDP是數據報模式
2、TCP提供可靠的服務(通過TCP傳輸的數據。無差錯,不丟失,不重復,且按序到達);UDP提供面向事務的簡單的不可靠的傳輸。
3、UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性比較高的通訊或廣播通信。隨着網速的提高,UDP使用越來越多。
4、沒一條TCP連接只能是點到點的,UDP支持一對一,一對多和多對多的交互通信。
5、TCP對系統資源要去比較多,UDP對系統資源要求比較少
6、UDP程序結構更加簡單
7、TCP是流模式,UDP是數據報模式

