http面試準備

從http的角度深刻分析一次web請求:

1.在瀏覽器輸入一個url地址如www.baidu.comweb

2.請求DNS把這個域名解析成對應的IP地址(DNS域名解析過程看上篇博客)瀏覽器

3.根據這個IP地址與默認端口80與遠程服務器創建Socket鏈接,而後瀏覽器根據這個url組裝成一個get類型的http請求頭,經過outputStream.write發送到目標服務器,服務器等待inputStream.read將數據返回,最後斷開這個鏈接安全

http自己的特色:

http採用無狀態的短鏈接的通訊方式。一般狀況下,一次請求就完成了一次數據交互,一般也對應一個業務邏輯,而後此次通訊鏈接就斷開了。
採用這種方式主要是爲了可以同時服務於更多的用戶,由於當前互聯網天天都會處理上億的用戶請求,不可能每一個用戶訪問一次後就一直保持這個鏈接服務器

  引伸:什麼是http協議無狀態協議?如何解決無狀態協議?cookie

  無狀態協議對於事務處理沒有記憶能力。好比A發送一個http請求完成以後,在發送一次客戶端不知道他仍是A用戶session

  解決:可使用會話技術,如cookie,session,至關於一個通行證同樣,第一次訪問給A用戶發送一個通行證,以後便知道是A用戶了,再引伸問你cookie的缺點tcp

 

剩下的都是一些經典問題:

別人寫的這兩篇博客講的比較詳細post

https://blog.csdn.net/zhangliangzi/article/details/51336564url

http://www.javashuo.com/article/p-ksymsguv-bv.htmlspa

1.常見的http方法有哪些?

2.get與post方法的區別?

3.常見的http狀態碼?

4.HTTP請求報文與響應報文的格式?

5.HTTP1.1版本新特性?

6.HTTP的缺點與HTTPS?

 關於get請求與post請求:

網上查找到的與本身試驗以後獲得的結果通常是

1.get去服務器獲取資源,參數在url地址欄後面,傳輸的數據量小,不一樣的瀏覽器對ur長度有限制,沒有Post安全,只支持ASCII字符

2.post.....

上述是比較淺顯的,看了有篇文章以後,別人作了深刻了解,http是應用層協議,它仍是基於ip/tcp協議的,get/post只是http發送數據的兩種格式,get/post能作的事情都是同樣的,你要給get帶上request body,給post帶上url參數,技術上是徹底行的通的。這是一個行爲規範,不按規範走讓人以爲傻乎乎的。

get/post本質上就是TCP鏈接,並沒有差異。可是因爲http的規定和瀏覽器\服務器的限制,致使在應用過程當中體現的不一樣

真相是:他們之間的重大區別:詳情參考原文:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd

GET產生一個TCP數據包;POST產生兩個TCP數據包

相關文章
相關標籤/搜索