【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具

前言:1.url1.1概念解釋

URL:Uniform Resource Locator(統(tǒng)一資源定位器)。

URL是互聯(lián)網(wǎng)上用于標(biāo)識(shí)特定資源的地址。它是一種標(biāo)準(zhǔn)的網(wǎng)絡(luò)地址格式,用于指示網(wǎng)絡(luò)資源的位置和訪問方法。

因此,URL幫助我們定位我們所需資源的位置(在哪里),以及如何訪問這些資源(如何做)。

例如:

以下是百度的網(wǎng)址,直接在瀏覽器中輸入此地址即可訪問百度

1.2基本格式:scheme:表示協(xié)議類型。如:httphttps

host:表示服務(wù)器域名或IP地址。

port:表示端口號(hào),http默認(rèn)使用80端口,https默認(rèn)使用443端口。現(xiàn)在大多數(shù)情況下不顯示,訪問時(shí)瀏覽器會(huì)自動(dòng)補(bǔ)充。

path:表示資源的路徑,指定要訪問的服務(wù)器上的具體資源。注意:/不一定表示根目錄,而是web的根目錄。

query:查詢字符串,向服務(wù)器傳遞參數(shù)。它是一對(duì)一對(duì)的key=value,多個(gè)key=value用&連接。

【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具1.3URL-Decode,URL-Encode當(dāng)我們查詢一些特殊字符時(shí),會(huì)對(duì)這些字符進(jìn)行編碼。

解碼的方法是:根據(jù)ASCII碼表,將其轉(zhuǎn)換為16進(jìn)制,然后加上百分號(hào)%。

1.4URL-encode工具:點(diǎn)擊這里:


2.HTTP協(xié)議2.1https與http現(xiàn)在我們看到的大多數(shù)是https,而https是從http發(fā)展而來的,https更為安全。在這個(gè)信息時(shí)代,確保信息的安全性非常重要。

數(shù)據(jù)加密:通過ssl/TLS加密數(shù)據(jù),確保數(shù)據(jù)在傳輸過程中不被竊取。身份驗(yàn)證:通過數(shù)字證書驗(yàn)證服務(wù)器的身份,確保客戶端連接到的是正確的服務(wù)器。完整性保護(hù):通過加密算法確保數(shù)據(jù)在傳輸過程中不被篡改。客戶端發(fā)起HTTPS請(qǐng)求。服務(wù)器發(fā)送SSL/TLS證書。客戶端驗(yàn)證證書的有效性。客戶端和服務(wù)器協(xié)商加密算法和密鑰。客戶端和服務(wù)器通過加密通道進(jìn)行數(shù)據(jù)傳輸。【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具2.2http的宏觀格式:http有請(qǐng)求模式和響應(yīng)模式,這兩個(gè)的格式基本相似,但第一行有所不同。

請(qǐng)求行包含:

1.請(qǐng)求方法。2.URI。3.http版本。

請(qǐng)求方法包括GET、POST等。

響應(yīng)行:

1.http版本。2.錯(cuò)誤碼。3.錯(cuò)誤描述。

【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具2.3http版本的直接區(qū)別:目前使用的http版本包括1.0、1.1和2.0。現(xiàn)在主要使用的是1.1或2.0。

【Linux網(wǎng)絡(luò)編程】:URL(encode),HTTP協(xié)議,telnet工具 HTTP/1.0:簡單但性能低,適合早期的靜態(tài)網(wǎng)頁。 HTTP/1.1:解決了HTTP/1.0的許多性能問題,引入了持久連接和內(nèi)容壓縮等功能,是目前廣泛使用的版本。 HTTP/2:在性能和功能上進(jìn)行了重大改進(jìn),通過多路復(fù)用、頭部壓縮和服務(wù)器推送等技術(shù),顯著提高了傳輸效率和用戶體驗(yàn)。 2.4實(shí)例代碼:代碼語言:JavaScript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制“`javascript

pragma once#include #include #include #include #include #include #include “TcpServer.hpp”using Namespace TcpServerModule;class HttpServer{ const std::String sep = “rn”; const std::string blank_line = “rn”;public: HttpServer(int port) : _tsvr(std::make_unique(port)) { } void Start() { _tsvr->InitServer([this](SockPtr sockfd, InetAddr client) { return this->HandlerHttpRequest(sockfd, client); }); _tsvr->Loop(); } // 處理http的方法 bool HandlerHttpRequest(SockPtr sockfd, InetAddr client) { LOG(LogLevel::DEBUG) Fd() Recv(&s); std::cout Send(httpresponse); return true; } ~HttpServer() {}private: std::unique_ptr _tsvr;};

 --- <p>3.telnet命令:主機(jī)名和IP地址:表示要連接的遠(yuǎn)程IP地址。</p><p>端口號(hào)表示要連接的端口號(hào),如果不指定,默認(rèn)是23(telnet服務(wù)的標(biāo)準(zhǔn)端口)。</p><ol><li>測試網(wǎng)絡(luò)服務(wù)telnet命令可以用來測試各種網(wǎng)絡(luò)服務(wù)是否正常運(yùn)行。例如,測試HTTP服務(wù)是否正常:</li></ol><p>代碼語言:javascript代碼運(yùn)行次數(shù):0<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>復(fù)制javascript telnet example.com 80</code>

連接成功后,可以手動(dòng)輸入HTTP請(qǐng)求:

代碼語言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制javascript GET / HTTP/1.1Host: example.com

 然后查看服務(wù)器的響應(yīng)。</p><ol start="2"><li>遠(yuǎn)程登錄雖然現(xiàn)代網(wǎng)絡(luò)中更推薦使用ssh(更安全),但telnet仍然可以用于遠(yuǎn)程登錄到某些舊系統(tǒng):</li></ol><p>代碼語言:javascript代碼運(yùn)行次數(shù):0<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> d="M6.66666 10.9999L10.6667 7.99992L6.66666 4.99992V10.9999ZM7.99999 1.33325C4.31999 1.33325 1.33333 4.31992 1.33333 7.99992C1.33333 11.6799 4.31999 14.6666 7.99999 14.6666C11.68 14.6666 14.6667 11.6799 14.6667 7.99992C14.6667 4.31992 11.68 1.33325 7.99999 1.33325ZM7.99999 13.3333C5.05999 13.3333 2.66666 10.9399 2.66666 7.99992C2.66666 5.05992 5.05999 2.66659 7.99999 2.66659C10.94 2.66659 13.3333 5.05992 13.3333 7.99992C13.3333 10.9399 10.94 13.3333 7.99999 13.3333Z" fill="currentcolor"></path></svg>運(yùn)行<svg fill="none" height="16" viewbox="0 0 16 16" width="16" xmlns="<a href="https://www.php.cn/link/c9041cfd2a40932691855abd98fd219a">http://www.w3.org/2000/svg"><path</a> clip-rule="evenodd" d="M4.5 15.5V3.5H14.5V15.5H4.5ZM12.5 5.5H6.5V13.5H12.5V5.5ZM9.5 2.5H3.5V12.5H1.5V0.5H11.5V2.5H9.5Z" fill="currentcolor" fill-rule="evenodd"></path></svg>復(fù)制javascript telnet example.com</code>
  1. 調(diào)試網(wǎng)絡(luò)問題telnet可以用來檢查網(wǎng)絡(luò)連接是否正常。例如,檢查是否可以連接到某個(gè)端口:

代碼語言:javascript代碼運(yùn)行次數(shù):0運(yùn)行復(fù)制javascript telnet example.com 25

</p><p>如果連接失敗,可能表示網(wǎng)絡(luò)問題或目標(biāo)端口未開放。

以上就是【linux

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享