ARP協議
ARP(Address Resolution Protocol)協議 地址解析協議
把網絡層的IP地址翻譯成在數據鏈路層尋址的48位硬件地址(MAC地址)
在OSI模型中ARP協議屬於鏈路層;而在TCP/IP模型中,ARP協議屬於網絡層。
IP協議
IP數據包首部的固定部分中的字段含義
(1)版本。占4位,值IP協議的版本。通信雙方使用的IP協議版本必須一致。目前版本號是4(IPv4)
(2)首部長度。占4位,單位是4字節,首部長度默認是20字節,所以填充的數字為0101
(3)區分服務。占8位,用來獲得更好的服務,但實際上基本沒使用過
(4)總長度。占16位,指首部和數據之和的長度,單位位字節。長度為16,數據包最大長度為(2的16次方-1),但是受數據鏈路層協議的影響總長度不能超過最大傳送單位MTU為1500字節
(5)標識。占16位,當IP數據包長度超過MTU時候,進行分片,在每一個分片數據包使用相同的標識,用來接收方進行數據包重組
(6)標志。占3位,只有前兩位有意義
最低位置MF(More Fragment),當MF=1時表示后面還有分片
中間位置DF(Don‘t Fragment),意思是不能分片,當DF=0時才允許分片
(8)生存時間。占8位,英文縮寫TTL(Time To Live),表示數據包在網絡中的壽命。目的是防止數據包無法到達目的地無限制的在互聯網兜圈子,大量消耗網絡資源。設置一定的初始值,每經過一個路由器減一,TTL=0時,路由器丟棄數據包
(9)協議。占8位,指出數據包使用的是哪種協議
(10)首部校驗和。占16位,數據包每經過一個路由器,都要重新計算一下首部校驗和,經過一系列運算,判斷數據包的首部是否發生變化,如果發生變化就路由器丟棄數據包。
(11)源IP地址。占32位
(12)目的IP地址,占32位
ICMP協議
ICMP(Internet Control Message Protocol)網際報文控制協議
用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。大部分網絡檢修技巧和工具都是基於ICMP的(也就是ping)
簡單點說,ICMP常用於尋找網絡故障
運輸層的兩個主要協議:
(1)傳輸控制協議TCP(Transmission Control Protocol)
(2)用戶數據包協議UDP(User Datagram Protocol)
區別:
(1)TCP提供面向連接的服務。文件分段,在傳送數據前必須先建立會話,進行流量控制,保證可靠傳輸
(2)UDP傳輸之間不需要建立連接,不提供可靠交付,簡單點說就是發送出去就不管了。適合一個數據包就能完成通信,或者對丟包了沒必要重傳的應用。
傳輸控制協議TCP(Transmission Control Protocol)
是為了在不可靠的互聯網絡上提供可靠的端到端字節流而專門設計的一個傳輸協議
數據包結構:
(1)源端口和目的端口。各占2字節
(2)序號。占4字節,序號范圍是(0,2的32次方-1),序號到達最大之后又回到0。在一個TCP連接中傳送的字節流中每一個字節都按順序編號。起始序號必須在連接時候設置。首部中的序號字段指本報文段所發送數據的第一個字節序號。例如,一報文段的序號字段值是301,攜帶的數據共有100字節。表明第一個字節序號是301,最后一個字節序號是400,下一段報文從401開始
(3)確認號。占4字節,是期望收到對方下一個報文段的第一個數據字節的序號。
(4)數據偏移。占4位,單位時4字節,記錄TCP報文第多少位開始是數據部分
(5)保留。占6位,目前沒有使用
(6)緊急URG。當URG=1時,表明緊急指針有效。告訴系統此報文有緊急數據,應盡快傳送,並把數據包插入到本報文段數據的最前面,比如ctrl+c
(7)確認ACK。TCP規定,在連接建立之后所有傳送的報文段都必須把ACK設置位1
(8)推送PSH。盡快發送
(9)復位RST。當RST=1時,表明TCP連接出現了嚴重差錯(由於主機崩潰或者其他原因),必須釋放連接,重新建立一個連接
(10)同步SYN。用在TCP建立連接時使用。
(11)終止FIN。用來釋放一個TCP連接。
(12)窗口。占2字節,窗口值是(0,2的16次方-1),表明對方現在允許發送的數據量,而且在動態變化。
(13)校驗和。
(14)緊急指針。占2字節,僅在URG=1時有效,指出本報文段的緊急數據的字節數。
(15)選項。長度可變,最長為40字節
TCP的連接建立-三次握手
SYN/ACK 標識號 seq 序號 ack 確認號
TCP的連接釋放-四次揮手
HTTP協議:(轉載自公眾號山丘安全攻防實驗室 https://mp.weixin.qq.com/s/YhYIVuDDmAMgKSduin5OHQ)
HTTP協議簡介
HTTP(超文本傳輸協議)是應用層上的一種客戶端/服務端模型的通信協議,它由請求和響應構成,且是無狀態的。(暫不介紹HTTP2)
- 協議
協議規定了通信雙方必須遵循的數據傳輸格式,這樣通信雙方按照約定的格式才能准確的通信。
- 無狀態
無狀態是指兩次連接通信之間是沒有任何關系的,每次都是一個新的連接,服務端不會記錄前后的請求信息。
- 客戶端/服務端模型
五層網絡模型
URL構成
用了這么久,你注意過嗎?
協議內容
請求(Request)
客戶端發送一個HTTP請求到服務端的格式:
- 請求行
- 請求頭
- 請求體
響應(Response)
服務端響應客戶端格式:
- 狀態行
- 響應頭
- 響應體
狀態碼
HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,后兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:
更詳細的狀態碼可查看 HTTP狀態碼
但一般我們只需要知道幾個常見的就行,比如 200,400,401,403,404,500,502.
請求方法
截止到HTTP1.1共有下面幾種方法:
請求和響應常見通用頭
注意
Content-Type,內容類型,一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什么形式、什么編碼讀取這個文件。
常見的媒體格式類型如下:
以application開頭的媒體格式類型:
常見請求頭
常見響應頭
總結
這一點在前后端聯調接口最明顯,當你在應用中去請求其他接口或轉發請求時這些也是要知道的。不然出現問題的概率會大大提高。