1. 程式人生 > 實用技巧 >linux系統web基礎http協議與錯誤返回碼

linux系統web基礎http協議與錯誤返回碼

埠號
ftp:21
ssh:22
rsync:873
telnet:23
http:80
mySQL:3306

HTTP協議介紹

超文字傳輸協議(英語:HyperText Transfer Protocol),縮寫為HTTP,它是一種用於分散式、協作式和超媒體資訊系統的應用層協議,是全球資訊網的資料通訊的基礎,也是網際網路應用最為廣泛的一種網路傳輸協議。最初設計HTTP的目的是為了提供一種釋出和接收HTML頁面的方法。

HTTP的發展是由蒂姆·伯納斯-李於1989年在歐洲核子研究組織(CERN)所發起,標準制定由全球資訊網協會(World Wide Web Consortium,W3C)和網際網路工程任務組(Internet Engineering Task Force,IETF)進行協調,目前HTTP協議中最廣泛使用的版本是HTTP 1.1。
## URL介紹
“統一資源定位符(URL)是Internet上標準資源的地址。URL指示資源的位置以及用於訪問它的協議。網際網路上的每個檔案都有一個唯一的URL,它包含的資訊指出檔案的具體位置。”
# URL的組成
協議+主機+埠+站點目錄下的目錄和檔案
例:http://www.wzh.com:90/www/a.txt
埠和協議一般不用輸入

HTTP的工作原理

## 使用者在瀏覽器輸入URL
1.瀏覽器分析URL內容
2.瀏覽器請求DNS解析URL中的域名
3.DNS將解析出的IP地址返回給瀏覽器
4.瀏覽器與該IP的伺服器建立TCP連線
5.瀏覽器請求該IP伺服器站點目錄的index.html頁面
6.伺服器將站點目錄下的index.html頁面傳送給瀏覽器
7.瀏覽器斷開與伺服器站點的TCP連線
8.瀏覽器顯示index.html中的內容
# HTTP是基於TCP協議之上的
# HTTP由請求和響應構成,是一個標準的客戶端伺服器模型(B/S)。HTTP協議永遠都是客戶端發起請求,伺服器回送響應。
#

詳細的HTTP工作原理

1.用輸入域名 - > 瀏覽器跳轉 - > 瀏覽器快取 - > Hosts檔案 - > DNS解析(遞迴查詢|迭代查詢)
    客戶端向服務端發起查詢 - > 遞迴查詢
    服務端向服務端發起查詢 - > 迭代查詢
2.由瀏覽器向伺服器發起TCP連線(三次握手)
    客戶端     -->請求包連線 -syn=1 seq=x           服務端
    服務端     -->響應客戶端syn=1 ack=x+1 seq=y     客戶端
    客戶端     -->建立連線 ack=y+1 seq=x+1          服務端
3.客戶端發起http請求:
    1)請求的方法是什麼:     GET獲取
    2)請求的Host主機是:     blog.driverzeng.com
    3)請求的資源是什麼:     /index.html
    4)請求的端埠是什麼:    預設http是80 https是443
    5)請求攜帶的引數是什麼:   屬性(請求型別、壓縮、認證、瀏覽器資訊、等等)
    6)請求最後的空行
4.服務端響應的內容是
    1)服務端響應使用WEB服務軟體
    2)服務端響應請求檔案型別
    3)服務端響應請求的檔案是否進行壓縮
    4)服務端響應請求的主機是否進行長連線
5.客戶端向服務端發起TCP斷開(四次揮手)
    客戶端     --> 斷開請求 fin=1 seq=x          -->    服務端
    服務端     --> 響應斷開 fin=1 ack=x+1 seq=y  -->    客戶端
    服務端     --> 斷開連線 fin=1 ack=x+1 seq=z  -->    客戶端
    客戶端     --> 確認斷開 fin=1 ack=x+1 seq=sj -->    服務端

頁面分析

# 基本資訊
請求網址:https://www.driverzeng.com/
請求方法:GET
遠端地址:39.104.203.184:443
狀態碼:
200
版本:HTTP/1.1


Request URL: http://www.biadu.com/
Request Method: GET
Status Code: 200 OK
Remote Address: 10.0.0.7:80
Referrer Policy: no-referrer-when-downgrade



# 請求頭部
## 請求的資源型別
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/\*=0.8,application/signed-exchange;v=b3
## 資源型別壓縮
Accept-Encoding: gzip, deflate
## 資源型別的語言
Accept-Language: zh-CN,zh;q=0.9
## 快取控制:服務端沒有開啟快取
Cache-Control: no-cache
## 長連線
Connection: keep-alive
## 訪問的主機:www.biadu.com
Host: www.biadu.com
##  專案快取:沒有開啟
Pragma: no-cache
## 客戶端優先加密
Upgrade-Insecure-Requests: 1
## 使用者訪問網站的客戶端工具
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36


# 響應頭部
Connection: keep-alive					# 建立長連線
Content-Type: text/html;charset=utf-8	     # 解析方式和字符集
Date: Wed, 13 May 2020 02:29:35 GMT		# 日期
server:Nginx/1.14.1					       #該網站伺服器,使用的軟體和版本號
status: 200							    #狀態碼

http請求方法

方法(Method) 含義
GET 請求讀取一個Web頁面(下載一個頁面)
POST 附加一個命名資(如Web頁面)(上傳)
DELETE 刪除Web頁面
CONNECT 用於代理伺服器
HEAD 請求讀取一個Web頁面的頭部
PUT 請求儲存一個Web頁面
TRACE 用於測試,要求伺服器送回收到的請求
OPTION 查詢特定選項

http響應方法

2xx和3xx都是網頁可以正常訪問

4xx:Nginx的報錯(出錯,出在nginx上)去檢查nginx服務,或者伺服器許可權等...

5xx:後端報錯(nginx後面連線的服務報錯:mysql、php、tomcat、redis.......,如果不是前面的原因:你們的程式碼有問題,滾回去重寫)

狀態碼 含義
200 成功
301 永久重定向(跳轉)
302 臨時重定向(跳轉)
304 本地快取(瀏覽器的快取)
307 內部重定向(跳轉)
400 客戶端錯誤
401 認證失敗
403 找不到主頁,許可權不足
404 找不到頁面
405 請求方法不被允許
500 內部錯誤(MySQL關閉等...)
502 bad gateway 壞了的閘道器(php tomcat 等服務關閉)
503 服務端請求限制
504 請求超時

http狀態碼詳解

轉載自阿里雲IP

1xx(臨時響應)
用於表示臨時響應並需要請求者執行操作才能繼續的狀態程式碼。

程式碼 說明
100(繼續) 請求者應繼續進行請求。伺服器返回此程式碼以表示,伺服器已收到某項請求的第一部分,正等待接收剩餘部分。
101(切換協議) 請求者已要求伺服器切換協議,伺服器已確認並準備進行切換。

2xx成功

用於表示伺服器已成功處理相應請求的狀態程式碼。

程式碼 說明
200(成功) 伺服器成功處理了相應請求。通常,這表示伺服器已提供了請求的網頁。如果您的 robots.txt 檔案顯示為此狀態,則表示 檢測工具 已成功檢索到該檔案。
201(已建立) 請求成功且伺服器已建立了新的資源。
202(已接受) 伺服器已接受相應請求,但尚未對其進行處理。
203(非授權資訊) 伺服器已成功處理相應請求,但返回了可能來自另一來源的資訊。
204(無內容) 伺服器已成功處理相應請求,但未返回任何內容。
205(重置內容) 伺服器已成功處理相應請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文件檢視(例如清除表單內容以輸入新內容)。
206(部分內容) 伺服器成功處理了部分 GET 請求。

3xx(已重定向)
您需要進一步操作才能完成請求。此類狀態程式碼通常可用於重定向。 建議您針對每一請求使用重定向的次數少於五次。您可以使用網站站長工具確定 檢測工具 是否會在抓取重定向網頁時遇到問題。抓取下的抓取錯誤頁列出了由於重定向錯誤而導致 檢測工具 無法抓取的網址。

程式碼 說明
300(多種選擇) 伺服器可以根據請求來執行多項操作,例如:按照請求者(使用者代理)的要求來選擇某項操作或者展示列表以便請求者選擇其中某項操作。
301(永久移動) 請求的網頁已永久移動到新位置。伺服器返回此響應(作為對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。您應使用此程式碼通知 檢測工具 某個網頁或網站已被永久移動到新位置。
302(臨時移動) 伺服器目前正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此程式碼與響應 GET 和 HEAD 請求的 301 程式碼類似,會自動將請求者轉到不同的位置。但由於 檢測工具 會繼續抓取原有位置並將其編入索引,因此您不應使用此程式碼來通知 檢測工具 某個頁面或網站已被移動。
303(檢視其他位置) 當請求者應對不同的位置進行單獨的 GET 請求以檢索響應時,伺服器會返回此程式碼。對於除 HEAD 請求之外的所有請求,伺服器會自動轉到其他位置。
304(未修改) 請求的網頁自上次請求後再也沒有修改過。當伺服器返回此響應時,不會返回相關網頁的內容。如果網頁自請求者上次請求後再也沒有更改過,您應當將伺服器配置為返回此響應(稱為 If-Modified-Since HTTP 標頭)。伺服器可以告訴 檢測工具 自從上次抓取後網頁沒有變更,進而節省頻寬和開銷。
305(使用代理) 請求者只能使用代理訪問請求的網頁。如果伺服器返回此響應,那麼,伺服器還會指明請求者應當使用的代理。
307(臨時重定向) 伺服器目前正從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。此程式碼與響應 GET 和 HEAD 請求的 301 程式碼類似,會自動將請求者轉到不同的位置。但由於 檢測工具 會繼續抓取原有位置並將其編入索引,因此您不應使用此程式碼來通知 檢測工具 某個頁面或網站已被移動。

4xx(請求錯誤)
此類狀態程式碼表示,相應請求可能出錯,已阻止了伺服器對請求的處理。

程式碼 說明
400(錯誤請求) 伺服器不理解相應請求的語法。
401(未授權) 請求要求進行身份驗證。登入後,伺服器可能會返回對頁面的此響應。
403(已禁止) 伺服器正在拒絕相應請求。如果 檢測工具 在嘗試抓取網站的有效網頁時收到此狀態程式碼(您可在 網站站長工具中執行工具下的抓取錯誤頁上進行檢視),則可能是因為您的伺服器或主機正在阻止 檢測工具 進行訪問。
404(未找到) 伺服器找不到請求的網頁。例如,如果相應請求是針對伺服器上不存在的網頁進行的,那麼伺服器通常會返回此程式碼。如果您的網站上沒有 robots.txt 檔案,而您在 網站站長工具中的已攔截的網址頁上看到此狀態,那麼這就是正確的狀態。然而,如果您有 robots.txt 檔案而又發現了此狀態,那麼,這說明您的 robots.txt 檔案可能是命名錯誤或位於錯誤的位置。(該檔案應當位於頂級域名上,且應當名為 robots.txt)。如果您在 檢測工具 嘗試抓取的網址上看到此狀態,那麼這表示 檢測工具 追蹤的可能是另一網頁中的無效連結(舊連結或輸入有誤的連結)。
405(方法禁用) 禁用相應請求中所指定的方法。
406(不接受) 無法使用相應請求的內容特性來響應請求的網頁。
407(需要代理授權) 此狀態程式碼與 401(未授權)類似,但卻指定了請求者應當使用代理進行授權。如果伺服器返回此響應,那麼,伺服器還會指明請求者應當使用的代理。
408(請求超時) 伺服器在等待請求時超時。
409(衝突) 伺服器在完成請求時遇到衝突。伺服器必須在響應中包含該衝突的相關資訊。伺服器在響應與前一個請求相沖突的 PUT 請求時可能會返回此程式碼,同時會提供兩個請求的差異列表。
410(已刪除) 如果請求的資源已被永久刪除,那麼伺服器會返回此響應。該程式碼與 404(未找到)程式碼類似,但在資源以前有但現在已經不復存在的情況下,有時會替代 404 程式碼出現。如果資源已永久刪除,您應使用 301 指定資源的新位置。
411(需要有效長度) 伺服器不會接受包含無效內容長度標頭欄位的請求。
412(未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中一個前提條件。
413(請求實體過大) 伺服器無法處理相應請求,因為請求實體過大,已超出伺服器的處理能力。
414(請求的 URI 過長) 請求的 URI(通常為網址)過長,伺服器無法進行處理。
415(不支援的媒體型別) 相應請求的格式不受請求頁面的支援。
416(請求範圍不符合要求) 如果相應請求是針對網頁的無效範圍進行的,那麼伺服器會返回此狀態程式碼。
417(未滿足期望值) 伺服器未滿足“期望”請求標頭欄位的要求。

5xx(伺服器錯誤)
此類狀態程式碼表示,伺服器在嘗試處理相應請求時發生內部錯誤。此類錯誤往往與伺服器本身有關(與請求無關)。

程式碼 說明
500(伺服器內部錯誤) 伺服器遇到錯誤,無法完成相應請求。
501(尚未實施) 伺服器不具備完成相應請求的功能。例如,當伺服器無法識別請求方法時,可能便會返回此程式碼。
502(錯誤閘道器) 伺服器作為閘道器或代理,從上游伺服器收到了無效的響應。
503(服務不可用) 目前無法使用伺服器(由於超載或進行停機維護)。通常,這只是暫時狀態。
504(閘道器超時) 伺服器作為閘道器或代理,未及時從上游伺服器接收請求。
505(HTTP 版本不受支援) 伺服器不支援相應請求中所用的 HTTP 協議版本。

TCP協議介紹

TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/網際協議)是指能夠在多個不同網路間實現資訊傳輸的協議簇。TCP/IP協議不僅僅指的是TCPIP兩個協議,而是指一個由FTPSMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議。

TCP/IP協議在一定程度上參考了OSI的體系結構。OSI模型共有七層,從下到上分別是物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。但是這顯然是有些複雜的,所以在TCP/IP協議中,它們被簡化為了四個層次。 [1]

(1)應用層、表示層、會話層三個層次提供的服務相差不是很大,所以在TCP/IP協議中,它們被合併為應用層一個層次。[1]

(2)由於傳輸層和網路層在網路協議中的地位十分重要,所以在TCP/IP協議中它們被作為獨立的兩個層次。 [1]

(3)因為資料鏈路層和物理層的內容相差不多,所以在TCP/IP協議中它們被歸併在網路介面層一個層次裡。只有四層體系結構的TCP/IP協議,與有七層體系結構的OSI相比要簡單了不少,也正是這樣,TCP/IP協議在實際的應用中效率更高,成本更低。 [1]

分別介紹TCP/IP協議中的四個層次。

應用層:應用層是TCP/IP協議的第一層,是直接為應用程序提供服務的。

(1)對不同種類的應用程式它們會根據自己的需要來使用應用層的不同協議,郵件傳輸應用使用了SMTP協議、全球資訊網應用使用了HTTP協議、遠端登入服務應用使用了有TELNET協議。 [1]

(2)應用層還能加密、解密、格式化資料。 [1]

(3)應用層可以建立或解除與其他節點的聯絡,這樣可以充分節省網路資源。 [1]

傳輸層:作為TCP/IP協議的第二層,傳輸層在整個TCP/IP協議中起到了中流砥柱的作用。且在運輸層中,TCP和UDP也同樣起到了中流砥柱的作用。 [1]

網路層:網路層在TCP/IP協議中的位於第三層。在TCP/IP協議中網路層可以進行網路連線的建立和終止以及IP地址的尋找等功能。 [1]

網路介面層:在TCP/IP協議中,網路介面層位於第四層。由於網路介面層兼併了物理層資料鏈路層所以,網路介面層既是傳輸資料的物理媒介,也可以為網路層提供一條準確無誤的線路。 [1]