計(jì)算機(jī)網(wǎng)絡(luò)的相關(guān)內(nèi)容
?一、URI和URL是什么
1、URI(統(tǒng)一資源標(biāo)識符)
- 核心作用:標(biāo)識一個(gè)資源。?它就像一個(gè)事物的“身份證號”或“名字”,其首要任務(wù)是唯一地確定一個(gè)資源是什么。
- 范圍:涵蓋了所有用于標(biāo)識資源名稱或地址的字符串。
- 格式:?
scheme:[//authority]path[?query][#fragment] scheme:方案,表示如何與資源交互,例如 http、https、ftp、mailto、file 等。 authority:通常包含用戶信息、主機(jī)名和端口號。 path:資源的路徑。 query:查詢參數(shù)。 fragment:片段標(biāo)識符,通常指向資源內(nèi)部的某個(gè)部分。
2、URL(統(tǒng)一資源定位符)
- 核心作用:?定位一個(gè)資源。它不僅標(biāo)識了資源是什么,更重要的是提供了在網(wǎng)絡(luò)上找到并訪問該資源的具體位置和方式。它就像一個(gè)事物的“家庭住址”。
- 范圍:它是URL的一個(gè)特定類型,專門用于描述網(wǎng)絡(luò)資源的訪問位置和協(xié)議。
- 特點(diǎn):URL必須包含足夠的信息(如協(xié)議、主機(jī)地址、路徑等)來讓瀏覽器或其他客戶端能夠檢索到該資源。
3、URI和URL的關(guān)系與區(qū)別
- URI(標(biāo)識符):就像一個(gè)人的?“姓名”(例如:張三)?或?“身份證號”。它唯一地標(biāo)識了這個(gè)人,但你無法僅憑名字就知道他在哪里。
- URL(定位符):就像一個(gè)人的?“家庭住址”(例如:北京市海淀區(qū)XX街道XX號)。這個(gè)地址不僅告訴了你這個(gè)人是誰(住在這里的人),還明確地指出了如何找到他。
?特性 ?URI統(tǒng)一資源標(biāo)識符 URL統(tǒng)一資源定位符? ?核心目的 ?標(biāo)識資源 ?定位資源 ?范圍 ?更廣泛,是一個(gè)總稱 ?是URI的一個(gè)子集 ?是否包含訪問方式 ?不一定 ?必須包含訪問協(xié)議和路徑 ?例子 ? ISBN:978-3-16-148410-0?(一本書的ISBN號)?https://www.example.com/index.html
二、HTTP/HTTPS協(xié)議
1、超文本
(一)什么是超文本
核心定義:超越傳統(tǒng)的文本
超文本是一種不是按順序,線性的方式組織信息的文本,它包含了可以鏈接到其他文檔或文本片段的超鏈接。
你可以把它想象成:
- 普通文本:像一本小說或一篇論文,你從第一頁按順序讀到最后一頁。信息是線性的、固定的。
- 超文本:像一本百科全書。當(dāng)你在讀一個(gè)關(guān)于“蘋果”的詞條時(shí),里面可能會提到“喬布斯”,而“喬布斯”這個(gè)詞被高亮或用下劃線標(biāo)出。你點(diǎn)擊“喬布斯”,就立刻跳轉(zhuǎn)到了關(guān)于史蒂夫·喬布斯的詞條。在喬布斯的詞條里,你又可以點(diǎn)擊“蘋果公司”再跳回去。信息是網(wǎng)狀的、非線性的。
(二)超文本由什么組成
超文本主要由兩個(gè)部分構(gòu)成:
- 節(jié)點(diǎn):就是一塊塊的信息內(nèi)容,可以是一段文字、一張圖片、一段視頻或一個(gè)文件。
- 超鏈接:連接這些節(jié)點(diǎn)的“橋梁”。通常你在網(wǎng)頁上看到的帶下劃線、顏色不同的可點(diǎn)擊文字或圖片,就是超鏈接。
最典型的例子:萬維網(wǎng)
我們今天每天都在使用的互聯(lián)網(wǎng)(萬維網(wǎng)),就是超文本概念最宏大、最成功的實(shí)現(xiàn)。
- 每一個(gè)網(wǎng)頁?就是一個(gè)超文本節(jié)點(diǎn)。
- 網(wǎng)頁上的鏈接?讓你可以從一個(gè)頁面跳轉(zhuǎn)到另一個(gè)頁面,從一個(gè)網(wǎng)站跳轉(zhuǎn)到另一個(gè)網(wǎng)站。
- 正是這種“鏈接”的存在,才構(gòu)成了我們所說的“在網(wǎng)上沖浪”。
所以,簡單來說:沒有超文本,就沒有我們今天所熟悉的網(wǎng)頁和互聯(lián)網(wǎng)瀏覽體驗(yàn)。
(三)超文本的影響
超文本的概念遠(yuǎn)早于互聯(lián)網(wǎng),但它徹底改變了我們獲取和交互信息的方式:
- 非線性閱讀:讀者不再被動地接受作者安排的單一順序,可以主動選擇自己感興趣的方向去探索。
- 信息關(guān)聯(lián):它將全球范圍內(nèi)分散的信息連接成了一個(gè)巨大的知識網(wǎng)絡(luò)。
- 互動性:用戶從“讀者”變成了“參與者”,可以通過點(diǎn)擊鏈接來主導(dǎo)信息的獲取路徑。
(四)總結(jié)
超文本就是“可以點(diǎn)擊的文本”,它通過鏈接將不同的信息塊相互連接,形成一個(gè)非線性的、網(wǎng)狀的信息結(jié)構(gòu)。它是整個(gè)萬維網(wǎng)的基石。
2、HTTP(超文本傳輸協(xié)議)
主要用于將超文本數(shù)據(jù)從網(wǎng)絡(luò)傳輸?shù)奖镜貫g覽器,確保文檔能夠高效準(zhǔn)確地傳輸。
(一)核心
“一問一答”:客戶端(瀏覽器)發(fā)起一個(gè)請求,服務(wù)器處理并返回一個(gè)響應(yīng),然后連接通常就關(guān)閉了。
無狀態(tài):每個(gè)請求獨(dú)立,需 Cookie/Session 維持狀態(tài)。服務(wù)器不記得上一次的請求是誰發(fā)的。這就是為什么需要 Cookie/Session 等技術(shù)來維持狀態(tài)。
問題:對于需要實(shí)時(shí)更新的應(yīng)用(如聊天),只能通過?輪詢?來模擬,即客戶端不斷地向服務(wù)器發(fā) HTTP 請求問:“有新消息嗎?” 這種方式效率低下,浪費(fèi)資源。
明文傳輸:數(shù)據(jù)未加密,易被竊聽。??
請求-響應(yīng)模型:客戶端發(fā)起請求,服務(wù)器返回響應(yīng)。
?默認(rèn)端口80。
(二)請求方式
GET(獲取資源)、POST(提交數(shù)據(jù))、PUT(更新資源)、DELETE(刪除資源)等。 響應(yīng)狀態(tài)碼:200(成功)、404(未找到)、500(服務(wù)器錯誤)等。? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
- 2xx(成功):`200 OK`、`201 Created`。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
- 3xx(重定向):`301 Moved Permanently`、`304 Not Modified`。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
- 4xx(客戶端錯誤):`404 Not Found`、`403 Forbidden`。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
- 5xx(服務(wù)端錯誤):`500 Internal Server Error`。??
3、HTTPS(安全超文本傳輸協(xié)議)
(一)核心機(jī)制
- 加密傳輸:通過 SSL/TLS 協(xié)議加密數(shù)據(jù)(如 AES、RSA) 防止通信內(nèi)容被竊聽。
- 身份驗(yàn)證:數(shù)字證書(CA頒發(fā))驗(yàn)證服務(wù)器身份,確保你連接的是正確的服務(wù)器(通過證書)。
- 完整性保護(hù):使用哈希算法(如SHA-256)防止數(shù)據(jù)篡改。
(二)工作流程
- TCP三次握手建立連接。
- TLS握手協(xié)商加密算法和交換密鑰。
- 加密傳輸HTTP數(shù)據(jù)。
(三)性能優(yōu)化
會話復(fù)用(Session?Resumption)減少TLS握手開銷。
默認(rèn)端口443。
HTTPS簡單理解就是在它HTTP 和 TCP 之間加入了一個(gè)?SSL/TLS 加密層。HTTPS的安全基礎(chǔ)是SSL加密,所有通過它傳輸?shù)臄?shù)據(jù)都會經(jīng)過加密處理。其主要功能包括:建立安全的信息傳輸通道確保數(shù)據(jù)安全;驗(yàn)證網(wǎng)站的真實(shí)性。HTTPS?沒有改變?HTTP 的“請求-響應(yīng)”模型和短連接特性。
三、WebSocket
1、核心特性
為了解決 HTTP 在實(shí)時(shí)通信上的短板而生。
握手階段:WebSocket 連接通過一個(gè)特殊的?HTTP 請求?來建立(Upgrade 頭),這個(gè)請求告訴服務(wù)器:“我想升級到 WebSocket 協(xié)議”。如果服務(wù)器同意,連接就從 HTTP 協(xié)議切換到了 WebSocket 協(xié)議。
- 全雙工通信協(xié)議,允許客戶端和服務(wù)器實(shí)時(shí)通信。
- 低延遲:基于TCP,避免HTTP的請求-響應(yīng)模式。
- 通過HTTP升級建立連接,之后使用WebSocket協(xié)議。
- 長連接:一次握手后保持連接,適用于實(shí)時(shí)應(yīng)用,如聊天、在線游戲。
- 優(yōu)點(diǎn):減少開銷,支持雙向通信
2、協(xié)議升級
通過HTTP的Upgrade頭切換協(xié)議:
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==服務(wù)器返回 101 Switching Protocols確認(rèn)升級。

??
| 特性 | HTTP | HTTPS | WebSocket |
|---|---|---|---|
| 協(xié)議基礎(chǔ) | 應(yīng)用層協(xié)議,基于 TCP | HTTP over SSL/TLS | 獨(dú)立的協(xié)議,基于 TCP,與 HTTP 兼容 |
| 通信模式 | 請求-響應(yīng) | 請求-響應(yīng) | 全雙工、雙向通信 |
| 連接性 | 無狀態(tài)、短連接 (默認(rèn)關(guān)閉連接) |
無狀態(tài)、短連接 (默認(rèn)關(guān)閉連接) |
有狀態(tài)、持久連接 (連接保持打開) |
| 數(shù)據(jù)流方向 | 客戶端發(fā)起,服務(wù)器響應(yīng) | 客戶端發(fā)起,服務(wù)器響應(yīng) | 服務(wù)器和客戶端可以隨時(shí)、獨(dú)立地發(fā)送數(shù)據(jù) |
| 開銷 | 每次請求都攜帶完整的 HTTP 頭部,較大 | 同 HTTP,外加加密/解密的計(jì)算開銷 | 連接建立后,數(shù)據(jù)幀頭部很小,開銷極低 |
| 安全性 | 明文傳輸,不安全 | 加密傳輸,身份驗(yàn)證,數(shù)據(jù)完整性 | 本身不提供加密,但使用?wss://?(基于 TLS)來保證安全 |
| 默認(rèn)端口 | 80 | 443 | 80 (ws) / 443 (wss) |
| 適用場景 | 瀏覽網(wǎng)頁、獲取靜態(tài)資源、API 調(diào)用(RESTful) | 所有需要安全性的 HTTP 場景(登錄、支付、敏感數(shù)據(jù)) | 實(shí)時(shí)應(yīng)用:聊天室、在線游戲、實(shí)時(shí)行情、協(xié)同編輯、直播彈幕 |
你需要展示一個(gè)網(wǎng)頁,提交表單或調(diào)用API嗎?是 ->?使用?HTTP/HTTPS。需要安全保證(用戶登錄、支付)嗎? ->?必須使用 HTTPS。
你需要構(gòu)建一個(gè)實(shí)時(shí)功能,比如聊天、實(shí)時(shí)通知、多人協(xié)作或股票行情嗎?是?-> 在建立初始連接后,使用?WebSocket。
在現(xiàn)代Web開發(fā)中,這三者通常是協(xié)同工作的:
- 主網(wǎng)站通過?HTTPS?提供,保證安全和內(nèi)容加載。
- 當(dāng)需要進(jìn)行實(shí)時(shí)通信時(shí),頁面內(nèi)的 JavaScript 會建立一個(gè)?WebSocket(或安全的?wss://)連接到服務(wù)器,來處理實(shí)時(shí)數(shù)據(jù)流。
四、TCP/IP協(xié)議
1、TCP/IP協(xié)議族:
包括TCP、IP、UDP、ICMP等協(xié)議。
分為四層:網(wǎng)絡(luò)接口層,網(wǎng)絡(luò)層,傳輸層,應(yīng)用層。
2、TCP(傳輸控制協(xié)議):
- 面向?qū)ο?,提供可靠?shù)據(jù)傳輸。
- 像?打電話,通過三次握手建立連接,四次揮手?jǐn)嚅_。?
- 提供流量控制,擁塞控制,錯誤檢測和重傳機(jī)制。
3、IP(網(wǎng)絡(luò)協(xié)議):
- 負(fù)責(zé)將數(shù)據(jù)包從源主機(jī)發(fā)送到目標(biāo)主機(jī)。
- 無連接,不保證可靠性。
- 主要版本:IPv4和IPv6。
4、UDP(用戶數(shù)據(jù)報(bào)協(xié)議):
- 像寄明信片或校園廣播
- 無連接,不保證可靠性。
- 適用于實(shí)時(shí)應(yīng)用,如視頻流,在線游戲。
- 速度快,開銷小
5、ICMP(互聯(lián)網(wǎng)控制消息協(xié)議)
- 像?網(wǎng)絡(luò)系統(tǒng)的“信使”和“診斷工具”
- 它不傳輸真正的用戶數(shù)據(jù)(如網(wǎng)頁、郵件)
- 它用于傳遞控制和管理信息,比如報(bào)告錯誤、測試連通性
- 例如,當(dāng)IP數(shù)據(jù)包無法到達(dá)目的地時(shí),ICMP會返回一個(gè)“目的地不可達(dá)”的錯誤消息。
- 用于發(fā)送錯誤報(bào)告和診斷信息。
- 常用工具:ping和traceroute。
| 特性 | TCP | UDP | ICMP |
|---|---|---|---|
| 協(xié)議層 | 傳輸層 | 傳輸層 | 網(wǎng)絡(luò)層(與IP同層) |
| 核心特性 | 面向連接、可靠、有序 | 無連接、不可靠、無序 | 無連接、用于控制和診斷 |
| 可靠性 | 可靠傳輸 ? 確認(rèn)機(jī)制 ? 重傳機(jī)制 ? 數(shù)據(jù)校驗(yàn) |
盡最大努力交付 ? 不保證不丟失 ? 不保證不重復(fù) ? 不保證順序 |
不保證所有ICMP消息都被接收或處理 |
| 數(shù)據(jù)單元 | 段 | 數(shù)據(jù)報(bào) | 消息(報(bào)文) |
| 頭部開銷 | 較大(20-60字節(jié)),包含序列號、確認(rèn)號、窗口等復(fù)雜字段 | 很小(8字節(jié)),只有源/目標(biāo)端口、長度和校驗(yàn)和 | 可變,取決于消息類型 |
| 流量控制 | 有(滑動窗口) | 無 | 無 |
| 擁塞控制 | 有(慢啟動、擁塞避免等) | 無 | 無(但可用于報(bào)告擁塞,如“源站抑制”消息) |
| 連接狀態(tài) | 需要維護(hù)連接狀態(tài)(序列號、窗口大小等) | 無狀態(tài) | 無狀態(tài) |
| 傳輸速度 | 相對較慢(因建立連接、確認(rèn)、重傳、擁塞控制) | 非???/strong>(直接發(fā)送,無額外控制) | 快(用于傳遞緊急或重要的控制信息) |
| 典型應(yīng)用 | ? Web瀏覽 ? 電子郵件 ? 文件傳輸 ? 遠(yuǎn)程終端 |
? 視頻流媒體 ? 語音通話 ? 在線游戲 ? DNS查詢 |
??Ping(測試連通性) ??Traceroute(追蹤路徑) ? 報(bào)告網(wǎng)絡(luò)錯誤(如目的地不可達(dá)) |
深入解析
1. TCP
- 為什么可靠? 三次握手建立連接:確保雙方都能收發(fā)數(shù)據(jù)。 確認(rèn)與重傳:接收方收到數(shù)據(jù)后會發(fā)送確認(rèn)。發(fā)送方在一定時(shí)間內(nèi)沒收到確認(rèn),會重新發(fā)送數(shù)據(jù)。 序列號:為每個(gè)數(shù)據(jù)字節(jié)編號,確保接收方能按順序重組數(shù)據(jù)。 流量控制:通過“滑動窗口”機(jī)制,防止發(fā)送方發(fā)送過快,導(dǎo)致接收方緩沖區(qū)溢出。 擁塞控制:根據(jù)網(wǎng)絡(luò)狀況動態(tài)調(diào)整發(fā)送速率,避免網(wǎng)絡(luò)癱瘓。
2. UDP
- 為什么“不可靠”反而是優(yōu)勢? 對于實(shí)時(shí)應(yīng)用,低延遲比完整性更重要。丟失一兩個(gè)視頻幀或語音包,用戶可能根本察覺不到,但如果為了重傳這個(gè)包而延遲了后續(xù)所有數(shù)據(jù),就會導(dǎo)致視頻卡頓、語音斷續(xù)。 無連接狀態(tài):服務(wù)器無需為每個(gè)客戶端維護(hù)連接狀態(tài),可以支持海量并發(fā)連接,非常適合DNS、NTP等服務(wù)。
3. ICMP
- 它不是傳輸用戶數(shù)據(jù)的,而是IP協(xié)議的“助手”。
- 常見消息類型: Echo Request / Echo Reply:這就是?ping?命令的工作原理。你向目標(biāo)發(fā)送一個(gè)“回顯請求”,如果它活著并且連通,就會回復(fù)一個(gè)“回顯應(yīng)答”。 Destination Unreachable:當(dāng)路由器或主機(jī)無法將數(shù)據(jù)包遞送到目的地時(shí),會向源IP發(fā)送此消息。 Time Exceeded:當(dāng)數(shù)據(jù)包的TTL(生存時(shí)間)值減到0時(shí),路由器會丟棄它并發(fā)送此消息。traceroute?命令就是利用這個(gè)機(jī)制來工作的。
- 盡管ICMP在網(wǎng)絡(luò)層,但它最終被封裝在IP數(shù)據(jù)包中進(jìn)行傳輸。
關(guān)系圖:在協(xié)議棧中的位置
下圖清晰地展示了這三個(gè)協(xié)議在網(wǎng)絡(luò)模型中的位置和協(xié)作關(guān)系:

?
總的來說,如您需要可靠、準(zhǔn)確的數(shù)據(jù)傳輸(如網(wǎng)頁、文件、郵件)->?TCP。需要速度快、延遲低,并能容忍少量數(shù)據(jù)丟失(如直播、游戲、語音)?->?UDP。
需要檢查網(wǎng)絡(luò)是否通暢、診斷連接問題?->?ICMP(使用?ping?或?traceroute?命令)
?
版權(quán)所屬:SO JSON在線解析
原文地址:http://suancuo.cn/blog/537.html
轉(zhuǎn)載時(shí)必須以鏈接形式注明原始出處及本聲明。
如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。
