【后端面經-計算機基礎】HTTP和TCP的區別
目錄- 【后端面經-計算機基礎】HTTP和TCP的區別
- 1. OSI七層模型和相關協議
- 2. TCP協議
- 2.1 特點:
- 2.2 報文格式
- 2.3 三次握手和四次揮手
- 3. HTTP協議
- 3.1 特點
- 3.2 報文格式
- 3.2 https和http
- 4. HTTP vs TCP
- 5. 面試模擬
- 參考資料
1. OSI七層模型和相關協議
在計算機網路的學習中,OSI七層結構是一個很重要的概念,
七層模型從上到下如下所示:
- 應用層:負責應用之間的通信,處理請求和回應的具體格式
- 表示層:對于資料格式進行處理
- 會話層:負責建立和斷開通信連接,
- 傳輸層:負責建立埠之間的連接,規范資料傳輸
- 網路層:負責主機之間的傳輸和尋路
- 資料鏈路層:負責傳輸資料幀,進行差錯檢測
- 物理層:負責將資料和電信號進行轉化
OSI七層模型的每一層有對應的協議和規范,如圖所示:

2. TCP協議
TCP(Transmission Control Protocol)是傳輸控制協議,是一種面向連接的、可靠的、基于位元組流的傳輸層通信協議,
2.1 特點:
TCP是面向連接、可靠、基于位元組流的傳輸協議,
傳輸層的另一個協議是UDP(User Datagram Protocol),
UDP是面向無連接、不可靠、基于資料報的傳輸協議,
TCP和UDP的區別如下表所示:

2.2 報文格式
TCP協議的報文格式如圖所示:

對各欄位的解釋如下表所示:

2.3 三次握手和四次揮手
TCP的連接建立和釋放是一個很重要的程序,其實重點在于三點:
- 對連接建立和釋放需要多次確認的理解
- 相關標志位的數值
- 端到端主機的狀態改變
各位可以參考如下博客學習:
“三次握手,四次揮手”你真的懂嗎?
3. HTTP協議
HTTP(HyperText Transfer Protocol)是超文本傳輸協議,是基于TCP協議的一個應用層協議,
3.1 特點
- 短連接:基于TCP面向連接的特性,每次請求都需要建立連接,請求結束后斷開連接,想要保持長連接,可在連接有效期內定期發送請求,
- 無狀態:由于是短連接,請求回應之后直接斷開連接,因此不會進行狀態存盤,下次連接需要重新輸入資料資訊,
- 通信使用明文:HTTP協議的通信內容都是明文,不加密,因此不安全,
http的一次連接程序如下:
- 客戶端發送請求,連接建立;
- 服務端回應請求,回傳資料;
- 連接斷開
3.2 報文格式
- 請求報文
簡單來說,請求報文分為頭部(header)和物體(body),兩者之間由一行空格相連,其中頭部包含請求行和頭部欄位,報文格式如下圖所示:

其中,請求行部分可以細分為如下三個部分:

-
方法欄位(Method)包括常見的
GET、POST,如下是對常見方法的介紹: -
URL欄位指出了請求的目標地址,
-
版本欄位(Version)指出了HTTP協議的版本,常見的有
1.0、1.1、2.0,如下是對http各個版本的解釋:

如下是一個請求行的實體:
GET /index.html HTTP/1.1
- 回應報文
和請求報文類似,回應報文也分為頭部和物體,兩者之間由一行空格相連,其中頭部包含狀態行和頭部欄位,報文格式如下圖所示:

其中,狀態行部分可以細分為如下三個部分:

-
版本號(Version)在請求報文的介紹中提到過;
-
狀態碼(Status Code)指出了請求的處理結果,常見的有
200、404、500,如下是常見狀態碼和其含義:

更詳細的資訊可參考此篇博客 -
原因欄位(Reason Phrase)是對狀態碼的簡單解釋,
如下是一個狀態行的實體:
HTTP/1.1 200 OK
3.2 https和http
HTTP: 超文本傳輸協議,是一種通信協議,用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協議,
HTTPS: 是一種通過計算機網路進行安全通信的傳輸協議,HTTPS經由HTTP進行通信,但利用SSL/TLS來加密資料包,HTTPS開發的主要目的,是提供對網站服務器的身份認證,保護交換資料的隱私與完整性,
4. HTTP vs TCP
兩種的區別見下表所示:

5. 面試模擬
Q:HTTP和TCP了解嗎?有什么關系?
A:http是應用層的超文本資料傳輸協議,tcp是傳輸層的傳輸控制協議,
http是基于tcp實作的,在請求的時候會建立tcp連接,但是http的連接不同于tcp的長時連接,是一種短連接,
Q:看過TCP結構嗎?用什么看的?
A:看過,tcp首部包括20~60位元組,包含源埠、目標埠、資料序號、確認序號、首部長度、指示位、滑動視窗大小、校驗和、選項欄位,
可通過wireshark抓包查看,
Q:HTTPS是什么?ssl屬于哪一層協議?
A:https是基于http的超文本傳輸安全協議,在http的基礎上增加了加密通信、身份認證等功能,從而增強傳輸的安全性,
SSL是傳輸層和應用層之間的協議,主要負責對資料通信進行加密等安全支撐,
參考資料
- HTTP協議 與 TCP協議 的區別,作為web程式員必須要懂
- 一文走進 HTTP 與 TCP 協議
- 面試:HTTP協議與TCP協議的區別和聯系
- TCP報文格式
- HTTP 報文格式簡介
- HTTP方法
- HTTP 狀態碼
- HTTP 與 HTTPS 的區別
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556626.html
標籤:其他
下一篇:返回列表
