網絡編程
基本介紹
-
核心主題:??
Golang面向大規模后端服務程序的設計目標中,網絡通信是必不可少且至關重要的部分。 -
?兩種網絡編程方式:??
?TCP Socket編程?
?性質:網絡編程的主流
?底層協議:基于TCP/IP協議
?舉例:QQ聊天
?B/S結構的HTTP編程?
?描述:瀏覽器訪問服務器時使用的協議
?底層實現:基于TCP Socket
?范疇:屬于Go Web開發
?舉例:京東商城
基礎知識
網線網卡
-
網線
本質:網線是一根物理的線纜,是網絡信號的物理傳輸介質
作用:負責在設備(如電腦和路由器)之間穩定、高速地傳輸電信號或光信號。它決定了數據通行的“道路”質量
常見類型:雙絞線 光纖 -
網卡
本質:網卡是一個硬件設備,是計算機連接網絡的接口
作用:- 將計算機內部的數據(0和1)?轉換成可以在網線上傳輸的電信號
- 接收來自網線(或天線)的信號,并將其轉換回計算機能理解的數據
- ?? 每個網卡都有一個全球唯一的物理地址,叫做 ?MAC地址
常見類型:
- 有線網卡:提供RJ-45接口,用來插網線
- ?無線網卡 (Wireless NIC):?? 帶有天線,遵循Wi-Fi協議,用來接收和發送Wi-Fi信號。
- 虛擬網卡?:現代技術(如Docker、VPN)會創建虛擬網卡,其MAC地址是軟件生成的。
TCP/IP協議
本質:TCP/IP不是一個單一協議,而是一個協議族?(一套規則集合),是互聯網的通信標準和語言。
作用:它規定了數據如何打包、如何尋址、如何路由、如何確保安全可靠地到達,它規定了數據如何打包、如何尋址、如何路由、如何確保安全可靠地到達
TCP/IP將網絡通信分為四層
- ?鏈路層(Link Layer):?? 它包含物理層(網線、信號)和數據鏈路層(MAC地址、幀封裝)。?網線、網卡? 就在這一層工作,負責物理傳輸。
鏈路層從網絡層接收來一個數據包。
它會在這個數據包的前后加上一個幀頭和幀尾,把它包裝成一個數據幀。
?幀頭里最重要的信息就是:?源MAC地址? 和 ?目標MAC地址。
?幀尾通常包含一個用于檢查數據是否出錯的校驗碼。
- ?網際層 (Internet Layer):?? ?IP協議? 在這一層工作,負責尋址和路由。還有 ?ICMP?(Ping命令)、ARP?(IP轉MAC地址)等。
把數據包送到正確的“城市”(目標計算機)
- ?傳輸層 (Transport Layer):?? ?TCP協議? 在這一層工作,負責端到端的連接。
?確保數據包送到正確的“住戶”(目標應用程序),并且確保“包裹”完整無誤。
- ?應用層 (Application Layer):?? 瀏覽器、微信等軟件在這一層,使用HTTP、FTP等協議。
確認是從哪個app或者瀏覽器發出的
示例
假如A要給B發個信息
那么A的電腦的層級順序是4->1。
先應用層,知道是哪個app或者瀏覽器發的
再傳輸層,確保數據傳輸對象準確性
之后網際層,給IP頭,確認送達的地方
最后鏈路層,給上幀頭幀尾
B電腦接收時的層級順序則是1->4
反著來,逐步的拆解信息,找到對應的目標
MAC地址
MAC地址? 是鏈路層的核心標識,但在跨網絡通信(如互聯網)中,IP地址才是最終尋址依據。MAC地址僅在同一局域網內有效(如家庭Wi-Fi或公司內網)。
IP
本質:Internet Protocol Address,互聯網協議地址。它是設備的邏輯地址,用于在網絡中定位和尋址。
格式:IPv4,IPv6
分類:
公網IP:全球唯一,可以直接在互聯網上被訪問。就像公司的公開地址。
私網IP:在局域網(如你家或公司的Wi-Fi)內使用,不能直接在互聯網上被路由。
作用:尋址和路由。數據包在互聯網上傳輸時,沿途的路由器會查看IP包頭的目標IP地址
?NAT(網絡地址轉換)??:私網IP(如192.168.1.100)通過路由器的NAT功能轉換為公網IP訪問互聯網,這是解決IPv4地址短缺的關鍵技術。
特殊IP地址?:
- 127.0.0.1(本地回環地址,用于測試本機服務)。
- 169.254.x.x(當DHCP失敗時自動分配的臨時IP)。
可以通過ipconfig查找
端口
本質:端口不是物理硬件接口,而是操作系統中的一個16位的數字標識符?(范圍0-65535)。它是網絡通信的端點。
作用:區分應用程序。一臺電腦可以同時運行很多網絡程序。當數據到達電腦后,操作系統需要知道把這個數據交給哪個網絡程序。端口號就是這個“交接暗號”。
分類:
- 知名端口:?? 0-1023。被預留給系統或著名的網絡服務。
- 80端口:?? HTTP協議,用于瀏覽網
- 443端口:?? HTTPS協議,用于加密瀏覽網頁
- ?21端口:?? FTP協議,用于文件傳輸
- 25端口:?? SMTP協議,用于發送郵件。
- 注冊端口:?? 1024-49151。分配給用戶安裝的某些應用程序(如微軟SQL數據庫默認用1433)。
- 動態/私有端口:?? 49152-65535。通常留給客戶端程序臨時使用。當你用瀏覽器訪問一個網站時,你的操作系統會隨機分配一個這個范圍內的端口給你這次的瀏覽器會話。
端口綁定沖突?:如果一個端口已被占用(如兩個程序同時監聽80端口),后啟動的程序會報錯 address already in use
?客戶端端口?:客戶端發起連接時,操作系統會動態分配一個臨時端口(如49213),但目標端口通常是固定的(如HTTP的80)。
?端口與安全?:
- 防火墻可以限制特定端口的訪問(如只開放80/443)。
- 惡意軟件常利用高危端口(如22/SSH、3389/RDP)進行攻擊。