網絡編程基礎:一文搞懂 Socket、HTTP、HTTPS、TCP/IP、SSL 的關系

在日常開發中,我們經常聽到 Socket、HTTP、HTTPS、TCP/IP、SSL 這些術語,這些概念往往容易混淆,且讓人感到困惑。本文將用最通俗易懂的方式來講清這些網絡概念及其相互關系。

一、從寄信說起:網絡通信的本質

假如你要給遠方的朋友寄一封信,對應的過程及映襯網絡通信的流程如下:

  1. 寫信內容(HTTP/HTTPS)
  2. 裝進信封(TCP)
  3. 寫上地址(IP)
  4. 投進郵筒(Socket)
  5. 郵政系統運輸(網絡硬件)

二、Socket:網絡世界的"郵筒"

1. 什么是 Socket?

Socket 就像是你家門口的郵筒!

  • 你可以把信投進去(發送數據)
  • 你可以從里面取信(接收數據)
  • 你不需要知道郵遞員怎么工作的

2. Socket 的工作方式

客戶端郵筒 ←→ 郵政網絡 ←→ 服務器郵筒
Socket       TCP/IP      Socket

3. 簡單示例

import socket# 客戶端:就像你要寄信
client = socket.socket()                    # 買個郵筒
client.connect(('www.baidu.com', 80))       # 投信到百度的80號郵筒
client.send(b"GET / HTTP/1.1\r\n\r\n")      # 投遞信件
response = client.recv(1024)                # 取回回信
client.close()                              # 關閉郵筒# 服務器端:就像郵局處理信件
server = socket.socket()
server.bind(('localhost', 8080))            # 在本地8080號位置放郵筒
server.listen(5)                            # 開始收信
client_socket, addr = server.accept()       # 有信來了
data = client_socket.recv(1024)             # 取信
client_socket.send(b"Hello!")               # 回信

三、TCP/IP:郵政系統的運作規則

1. IP 協議:地址和路由規則

IP 就像郵政編碼和地址!

  • 規定地址怎么寫(IP地址:192.168.1.100)
  • 規定怎么找到目的地(路由)
  • 就像寫信時的"北京市朝陽區xxx街道"

2. TCP 協議:快遞包裝規則

TCP 就像快遞公司的包裝服務!

  • 確保信件完整送達
  • 按順序組裝長信件
  • 丟了就重新發送
  • 就像快遞公司保證你的包裹安全到達

3. TCP 的三次握手(建立連接)

兩個人要開始聊天:

你:喂,在嗎?(我想和你聊天)
朋友:在的,你也好!(我準備好了)
你:那我們開始聊吧!(我也準備好了)

4. TCP 的四次揮手(斷開連接)

兩個人要結束聊天:

你:我說完了,你還有要說的嗎?
朋友:我還有點要說的...說完了
朋友:我說完了,你還有要說的嗎?
你:我也沒有了,拜拜!

四、HTTP:信件的內容格式

1. HTTP 是什么?

HTTP 就是信件的內容格式規范!

規定了:

  • 開頭要寫什么(請求行)
  • 怎么描述信件(請求頭)
  • 正文怎么寫(請求體)

2. HTTP 請求示例

GET /index.html HTTP/1.1          ← 請求行:要做什么
Host: www.example.com             ← 請求頭:目標地址
User-Agent: Chrome/91.0           ← 請求頭:客戶端信息<html>...</html>                  ← 請求體:具體內容

3. HTTP 響應示例

HTTP/1.1 200 OK                   ← 狀態行:成功
Content-Type: text/html           ← 響應頭:內容類型
Content-Length: 1234              ← 響應頭:內容長度<html>...</html>                  ← 響應體:網頁內容

五、SSL/TLS:加密的保險箱

1. 為什么需要 SSL?

沒有 SSL 的通信就像明信片!

明信片內容:用戶名=admin 密碼=123456
任何人都能看到,包括路上的郵遞員!

有 SSL 的通信就像加密保險箱!

🔒加密后:一堆亂碼🔒
即使被看到,也是看不懂的亂碼!

2. SSL 提供的三大保護

  1. 保密性:內容加密,防止偷看
  2. 完整性:防止內容被篡改
  3. 身份認證:確認對方身份真實

3. HTTPS = HTTP + SSL

HTTP + SSL = HTTPS
明文通信 + 加密保護 = 安全通信
端口80 + 端口443

六、完整的關系圖譜

┌─────────────────────────────────────────┐
│           應用程序                       │
│     (瀏覽器、APP、游戲等)                   │
├─────────────────────────────────────────┤
│           HTTP/HTTPS 協議                │ ← 信件內容格式
│        (明信片 vs 加密信件)               │
├─────────────────────────────────────────┤
│           SSL/TLS 加密                  │ ← 保險箱
│        (加密保護層)                      │
├─────────────────────────────────────────┤
│           Socket 接口                   │ ← 郵筒
│        (數據收發接口)                    │
├─────────────────────────────────────────┤
│           TCP 協議                      │ ← 快遞包裝
│        (確保數據完整有序)                 │
├─────────────────────────────────────────┤
│           IP 協議                       │ ← 地址和路由
│        (找到正確的目的地)                 │
├─────────────────────────────────────────┤
│         網絡硬件和驅動                    │
│    (網線、WiFi、路由器等)                   │
└─────────────────────────────────────────┘

七、實際通信流程對比

1. HTTP 通信流程(不安全)

瀏覽器 → HTTP請求 → Socket → TCP → IP → 網絡 → IP → TCP → Socket → 服務器
"用戶名=admin 密碼=123456" ← 所有人都能看到明文!

2. HTTPS 通信流程(安全)

瀏覽器 → HTTP請求 → SSL加密 → Socket → TCP → IP → 網絡 → IP → TCP → Socket → SSL解密 → 服務器
🔒"用戶名=admin 密碼=123456"🔒 ← 看到的都是亂碼!

八、代碼實例對比

1. 普通 HTTP 客戶端

import socket# 普通郵筒,明信片通信
sock = socket.socket()
sock.connect(('www.example.com', 80))  # 80端口,HTTP
request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
sock.send(request.encode())            # 明文發送,危險!
response = sock.recv(4096)
sock.close()

2. HTTPS 客戶端

import socket
import ssl# 加密郵筒,保險箱通信
sock = socket.socket()
# 給郵筒裝上加密器
context = ssl.create_default_context()
secure_sock = context.wrap_socket(sock, server_hostname='www.example.com')
secure_sock.connect(('www.example.com', 443))  # 443端口,HTTPS
request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"
secure_sock.send(request.encode())             # 加密發送,安全!
response = secure_sock.recv(4096)
secure_sock.close()

九、常見端口總結

協議

端口

說明

HTTP

80

明文傳輸

HTTPS

443

加密傳輸

FTP

21

文件傳輸

SSH

22

安全遠程登錄

SMTP

25

郵件發送

DNS

53

域名解析

十、實際應用場景

1. 網頁瀏覽

瀏覽器 → HTTPS → 網站服務器
就像:你用加密信給銀行發請求

2. 手機APP

APP → Socket + SSL → 服務器
就像:微信加密傳輸你的聊天記錄

3. 在線支付

支付APP → HTTPS → 支付服務器
就像:把銀行卡信息放在保險箱里傳送

4. 視頻通話

視頻軟件 → Socket + SSL → 對方設備
就像:兩個加密電話機實時通話

十一、常見問題解答

Q: Socket 和 TCP 有什么區別?

A: TCP 是規則,Socket 是工具!

  • TCP:規定怎么包裝和傳輸數據
  • Socket:提供發送和接收數據的接口

Q: HTTP 和 HTTPS 有什么區別?

A: HTTP 是明信片,HTTPS 是加密信!

  • HTTP:80端口,明文傳輸
  • HTTPS:443端口,加密傳輸

Q: SSL 和 TLS 是什么關系?

A: TLS 是 SSL 的升級版!

  • SSL:早期版本
  • TLS:新版標準(現在用的都是TLS)

十二、結語

網絡通信的全貌:

  1. Socket:數據收發的"郵筒"
  2. TCP/IP:確保數據安全送達的"快遞服務"
  3. HTTP:規定通信內容格式的"信件模板"
  4. SSL:保護數據安全的"加密保險箱"
  5. HTTPS:HTTP + SSL 的安全組合

總的來說,網絡安全通信 = 明信片 + 保險箱 + 快遞服務!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95480.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

查看LoRA 哪個適配器處于激活狀態(67)

哪個適配器處于激活狀態 當前哪個適配器處于激活狀態?我們來查看active_adapter屬性就知道了 peft_model.active_adapter輸出 default試試另一個(適配器) 你更想試試另一個(適配器)嗎?只需調用set_adapter()方法即可。 peft_model.set_adapter(yoda) peft_model.act…

??Nginx高性能Web服務器實戰:從協議原理到運維優化??

目錄 前言 一、Web基礎概念 1.1 什么是Web&#xff1f; 1.2 B/S架構模型 1.3 Web請求與響應流程 1.4 靜態資源 vs 動態資源 二、HTTP/HTTPS協議詳解 2.1 HTTP與HTTPS區別 2.2 HTTPS握手流程 2.3 HTTP狀態碼大全 三、Nginx核心知識 3.1 Nginx簡介 3.2 Nginx vs Apache 3.3 Nginx…

【先楫HPM5E00_EVK系列-板卡測評3】hpm5e00evk平臺中斷、定時器、PWM、USART等基礎功能詳解

此文介紹了利用先楫半導體&#xff08;hpm&#xff09;官方hpm5e00_evk開發板使用的主控芯片的一些原理性知識&#xff0c;無實驗內容展示&#xff0c;主要匯總了先楫半導體hpm5e00主控芯片的中斷、定時器、pwm、usart等功能&#xff0c;主要內容來源于B站“HPM_FAE”的視頻和官…

golang 依賴管理

目錄 演進過程 1. GOPATH 階段&#xff08;Go 1.0 - 1.10&#xff0c;2012 - 2018&#xff09; 2. Vendor 機制階段&#xff08;Go 1.5 實驗性引入&#xff0c;1.6 正式支持&#xff0c;2015 - 2018&#xff09; 3. Go Modules 過渡期&#xff08;Go 1.11 - 1.16&#xff0…

概率論—隨機事件與概率

文章目錄考綱術語事件的關系與運算關系運算古典概型概念和性質放入問題——隨機分配取出問題——簡單隨機抽樣問題幾何概型概率的性質與計算性質計算事件的獨立性和獨立的判定事件的獨立性判定定理舉反例的思想獨立試驗序列概型與n重伯努利概型錯題考綱 術語 (隨機)試驗隨機事…

達夢:存儲過程實現多個用戶之間表的授權

一、背景在某項目現場&#xff0c;開發商想實現4個用戶之間能互相擁有表的查詢、刪除、插入、更新權限和存儲過程的執行權限。此過程只要在新增表之后&#xff0c;其他用戶的權限需要授權&#xff0c;如果是手動寫&#xff0c;一張表的授權就要寫至少3次sql語句&#xff0c;如果…

協議分析基礎

0x01 協議分析基礎 網絡安全領域的“基本功”&#xff1a;一切高級攻擊&#xff08;漏洞利用、DDoS、滲透等&#xff09;都體現為網絡流量的異常。 核心價值&#xff1a; 故障排查 &#xff1a; 定位網絡延遲、丟包、無法連接等問題。性能優化 &#xff1a; 分析應用性能瓶頸。…

AI生成內容的版權迷局:GPT-4輸出的“創意”版權風險與規避之道

大型語言模型&#xff08;LLM&#xff09;如 GPT-4&#xff0c;正以前所未有的速度和創造力&#xff0c;改變著內容生產的方式。無論是文章、代碼、圖片還是音樂&#xff0c;AI都能快速生成令人驚嘆的作品。然而&#xff0c;在這股“AI內容創作浪潮”之下&#xff0c;一個嚴肅的…

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢一、分布式查詢的概念&#xff08;一&#xff09;分布式查詢的定義&#xff08;二&#xff09;分布式查詢的特點二、分布式查詢的優化&#xff08;一&#xff09;查詢分解&#xff08;二&#xff09;查詢分配&#xff0…

java--寫在 try 中的創建連接

1. 背景 在 Java 開發中&#xff0c;很多資源&#xff08;數據庫連接、ZooKeeper 連接、Redis 客戶端、文件流等&#xff09;都需要手動關閉。如果忘記關閉&#xff0c;會導致 資源泄漏&#xff08;連接占滿、內存泄漏、文件句柄耗盡等&#xff09;。 為了避免這種問題&#xf…

蔡文勝在香港買了一棟樓,免費給創業者辦公

蔡文勝在香港買了一棟樓&#xff0c;免費給創業者辦公。前段時間&#xff0c;蔡文勝出售美圖公司、套現約8億港幣后&#xff0c;以6.5億港元購入香港天后道上全幢物業&#xff0c;并將其更名為“CAI大廈”。一樓是咖啡廳&#xff0c;二樓做公眾活動&#xff0c;樓上會有兩層會開…

FOC+MCU:重新定義吸塵器電機控制——高效、靜音、智能的終極解決方案

傳統吸塵器電機的“三重困境”當前吸塵器市場&#xff0c;消費者對吸力、噪音、續航的訴求日益嚴苛&#xff0c;但傳統電機控制方案&#xff08;如方波驅動、有感/無感BLDC控制&#xff09;難以兼顧&#xff1a;效率低下&#xff1a;高速運行時電機發熱嚴重&#xff0c;電池能量…

樹形組件,支持搜索展示,自定義展示,支持vue2,vue3,小程序等等

效果圖平臺兼容性Vue2Vue3ChromeSafariapp-vueapp-nvueAndroidiOS鴻蒙√√√√√√---微信小程序支付寶小程序抖音小程序百度小程序快手小程序京東小程序鴻蒙元服務QQ小程序飛書小程序快應用-華為快應用-聯盟√√√√√√-√√√√多語言暗黑模式寬屏模式√屬性屬性名類型默認值…

元宇宙與教育變革:沉浸式學習重構知識獲取與能力培養

1 元宇宙打破傳統教育的核心局限1.1 突破空間限制&#xff1a;從 “固定教室” 到 “全域學習場景”傳統教育受限于物理空間&#xff0c;優質資源集中在少數學校與城市&#xff0c;而元宇宙通過 “虛擬場景復刻 跨地域實時交互”&#xff0c;將學習空間拓展至全球乃至虛擬維度…

如何在SpringBoot項目中優雅的連接多臺Redis

如何在SpringBoot項目中優雅的連接多臺Redis 在Spring Boot項目中&#xff0c;連接單個Redis實例是常見需求&#xff0c;但有時需要同時連接多個Redis實例&#xff08;例如&#xff0c;主Redis用于業務數據存儲&#xff0c;另一個Redis用于爬蟲數據緩存&#xff09;。本文將基于…

追覓科技舉辦2025「敢夢敢為」發布會,發布超30款全場景重磅新品

上海&#xff0c;2025年9月4日——在以「敢夢敢為」為主題的2025新品發布會上&#xff0c;追覓科技一次性發布超30款新品&#xff0c;全面涵蓋智能清潔、智能家電、家庭健康與個護等核心領域。在清潔家電與大家電“高端智能生態矩陣”已然成型的當下&#xff0c;追覓科技正在邁…

去服務器化的流媒體分發:輕量級RTSP服務的技術邏輯與優勢

一、設計背景&#xff1a;RTSP/RTP協議的技術根基 在流媒體傳輸體系中&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09; RTP/RTCP 組合被廣泛認為是最經典、最標準化的解決方案。 RTSP 作為應用層協議&#xff0c;本質上是一個 遠程會話控制協議。它通過…

mysql分頁SQL

在 MySQL 中&#xff0c;實現分頁查詢通常使用 LIMIT 子句。LIMIT 可以指定返回結果的起始位置和數量&#xff0c;非常適合實現分頁功能。 基本語法如下&#xff1a; SELECT 列名 FROM 表名 WHERE 條件 ORDER BY 排序字段 [ASC|DESC] LIMIT 起始位置, 每頁顯示數量;說明&#x…

刷新記錄:TapData Oracle 日志同步性能達 80K TPS,重塑實時同步新標準

在當前數據驅動的企業環境中&#xff0c;高效、穩定的數據同步能力已成為支撐關鍵業務系統的核心需求。尤其在高頻變更、大量增量數據的業務場景中&#xff0c;傳統的 Oracle 日志解析方案往往在吞吐能力和延遲控制方面力不從心。 隨著企業全面邁入“實時化”時代&#xff0c;金…

Java全棧開發面試實戰:從基礎到高并發的深度解析

Java全棧開發面試實戰&#xff1a;從基礎到高并發的深度解析 在一次真實的面試中&#xff0c;一位擁有5年全棧開發經驗的程序員&#xff0c;面對來自某互聯網大廠的技術面試官&#xff0c;展現出了扎實的基礎與豐富的項目經驗。以下是這次面試的完整記錄。 面試官開場 面試官&a…