【golang長途旅行第34站】網絡編程

網絡編程

基本介紹

  1. 核心主題:??
    Golang面向大規模后端服務程序的設計目標中,網絡通信是必不可少且至關重要的部分。

  2. ?兩種網絡編程方式:??

?TCP Socket編程?
?性質:網絡編程的主流
?底層協議:基于TCP/IP協議
?舉例:QQ聊天

?B/S結構的HTTP編程?
?描述:瀏覽器訪問服務器時使用的協議
?底層實現:基于TCP Socket
?范疇:屬于Go Web開發
?舉例:京東商城

基礎知識

網線網卡
  1. 網線
    本質:網線是一根物理的線纜,是網絡信號的物理傳輸介質
    作用:負責在設備(如電腦和路由器)之間穩定、高速地傳輸電信號或光信號。它決定了數據通行的“道路”質量
    常見類型:雙絞線 光纖

  2. 網卡
    本質:網卡是一個硬件設備,是計算機連接網絡的接口
    作用:

    1. 將計算機內部的數據(0和1)?轉換成可以在網線上傳輸的電信號
    2. 接收來自網線(或天線)的信號,并將其轉換回計算機能理解的數據
    3. ?? 每個網卡都有一個全球唯一的物理地址,叫做 ?MAC地址

    常見類型:

    1. 有線網卡:提供RJ-45接口,用來插網線
    2. ?無線網卡 (Wireless NIC):?? 帶有天線,遵循Wi-Fi協議,用來接收和發送Wi-Fi信號。
    3. 虛擬網卡?:現代技術(如Docker、VPN)會創建虛擬網卡,其MAC地址是軟件生成的。
TCP/IP協議

本質:TCP/IP不是一個單一協議,而是一個協議族?(一套規則集合),是互聯網的通信標準和語言。
作用:它規定了數據如何打包、如何尋址、如何路由、如何確保安全可靠地到達,它規定了數據如何打包、如何尋址、如何路由、如何確保安全可靠地到達
TCP/IP將網絡通信分為四層

  1. ?鏈路層(Link Layer):?? 它包含物理層(網線、信號)和數據鏈路層(MAC地址、幀封裝)。?網線、網卡? 就在這一層工作,負責物理傳輸。

鏈路層從網絡層接收來一個數據包。
它會在這個數據包的前后加上一個幀頭和幀尾,把它包裝成一個數據幀。
?幀頭里最重要的信息就是:?源MAC地址? 和 ?目標MAC地址。
?幀尾通常包含一個用于檢查數據是否出錯的校驗碼。

  1. ?網際層 (Internet Layer):?? ?IP協議? 在這一層工作,負責尋址和路由。還有 ?ICMP?(Ping命令)、ARP?(IP轉MAC地址)等。

把數據包送到正確的“城市”(目標計算機)

  1. ?傳輸層 (Transport Layer):?? ?TCP協議? 在這一層工作,負責端到端的連接。

?確保數據包送到正確的“住戶”(目標應用程序),并且確保“包裹”完整無誤。

  1. ?應用層 (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)進行攻擊。

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

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

相關文章

Hadoop(六)

目錄:1.Hadoop概述2.為什么需要分布式存儲3.分布式的基礎架構分析4.HDFS的基礎架構1.Hadoop概述2.為什么需要分布式存儲3.分布式的基礎架構分析4.HDFS的基礎架構

Oracle 12g安裝

1. 下載地址 官方網站 一般這種導向的進入的都是oracle的官方網站(先登錄,如果沒有就創建賬號),并沒有真實的12g供你下載。需要你轉入Oracle的云中下載:https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 。我選擇的是12.1.0.2.0下…

ros2--service/服務--接口

獲取service名稱const char *get_service_name() const;std::string client_name client_->get_service_name();RCLCPP_INFO(this->get_logger(), "Client name: %s", client_name.c_str());

安卓開發---SimpleAdapter

概念&#xff1a;SimpleAdapter 是 Android 中比 ArrayAdapter 更強大的適配器&#xff0c;用于將復雜的數據綁定到復雜的布局&#xff0c;支持將 Map 中的數據映射到布局中的多個 View。方法簽名&#xff1a;public SimpleAdapter( Context context, //上下文 List<? exte…

軟考-系統架構設計師 辦公自動化系統(OAS)詳細講解

個人博客&#xff1a;blogs.wurp.top 一、OAS的核心概念與演進 1. 什么是OAS&#xff1f; OAS是一個綜合性的信息系統&#xff0c;它利用計算機技術、通信技術、系統科學和行為科學&#xff0c;為組織的日常辦公事務、信息管理和協同工作提供支持。其本質是將傳統辦公流程電…

leetcode 155 官方golang標準答案錯誤

真是誤人子弟&#xff0c;leetcode155題官網的golang答案是錯誤的。push方法的append操作&#xff0c;必然不能保證是o(1)的時間復雜度。就這還是官網的標準答案&#xff0c;就這水平&#xff0c;&#x1f604;leetcode誤人子弟不是第一次了。光會刷算法&#xff0c;可惜水平還…

開源 python 應用 開發(十三)AI應用--百度智能云TTS語音合成

最近有個項目需要做視覺自動化處理的工具&#xff0c;最后選用的軟件為python&#xff0c;剛好這個機會進行系統學習。短時間學習&#xff0c;需要快速開發&#xff0c;所以記錄要點步驟&#xff0c;防止忘記。 鏈接&#xff1a; 開源 python 應用 開發&#xff08;一&#xf…

大白話說 AI 編程 Trae,小白進!

大家好&#xff0c;我是櫻木。 一些小白用戶&#xff0c;打開字節出的 AI 編程工具 Trae 時&#xff0c;可能覺得還是有點生疏&#xff0c;但是作為程序員&#xff0c;看到這樣的界面分布&#xff0c;已經是在熟悉不過了&#xff0c;甚至心中竊喜&#xff0c;長得和 IDEA 等開…

主流國產數據庫:文檔完備性

官方文檔通常是用戶獲取數據庫產品相關信息最權威的渠道&#xff0c;文檔的完備性&#xff08;準確、全面、易用&#xff09;直接影響著開發者的學習成本、項目實施的效率以及后期的運維便利性。 例如&#xff0c;Oracle 數據庫的官方文檔被廣泛認為是行業的黃金標準&#xff…

現今流行的操作系統及其應用場景

2025 年主流操作系統及其應用場景&#xff0c;結合技術趨勢與行業實踐&#xff0c;涵蓋從個人設備到關鍵基礎設施的全場景覆蓋&#xff1a;一、桌面與生產力領域1. Windows 11/12&#xff08;微軟&#xff09;市場地位&#xff1a;全球桌面市場占比 71%&#xff0c;企業級場景市…

IP v 6

相關概念地址長度128bit&#xff0c;采用冒號劃分為8段&#xff0c;并用16進制標識&#xff0c;其容量大到能為地球上的每一粒沙子分配一個地址&#xff0c;通常情況下其網絡前綴為64位&#xff0c;接口標識為64位&#xff0c;依照寫法可分為首選格式&#xff0c;即完整書寫&am…

Elasticsearch冷熱架構:性能與成本完美平衡

Elasticsearch 的冷熱架構&#xff08;Hot-Warm-Cold Architecture&#xff09;是一種針對時序數據&#xff08;如日志、指標等&#xff09;的成本與性能優化方案&#xff0c;通過將數據在不同生命周期的存儲需求分層處理&#xff0c;兼顧性能、容量和成本。其核心思想是&#…

【MFC自動生成的文件詳解:YoloClassMFC.cpp 的逐行解釋、作用及是否能刪除】

大家好&#xff0c;歡迎來到我的MFC編程入門系列。上次我們聊了MFC項目創建后的核心文件區別&#xff08;項目名.cpp、.h、Dlg.cpp 和 Dlg.h&#xff09;&#xff0c;今天針對讀者的反饋&#xff0c;專門來拆解其中最重要的一個文件&#xff1a;項目名.cpp&#xff08;這里以用…

玄機靶場 | 冰蝎3.0-jsp流量分析

文章目錄一、冰蝎3.0流量特征二、索引三、題目列表步驟#1黑客IP是什么&#xff1f;步驟#2黑客上傳的Webshell名是什么&#xff1f;步驟#3黑客上傳WebShell的時間是多少&#xff1f;&#xff08;格式如&#xff1a;flag{YYYY-MM-DD HH:MM:SS}&#xff09;步驟#4木馬的解密key是什…

基于物理信息神經網絡(Physics-Informed Neural Network, PINN)的三維熱傳導方程求解器MATLAB

代碼實現了一個基于物理信息神經網絡&#xff08;Physics-Informed Neural Network, PINN&#xff09;的三維熱傳導方程求解器。以下是詳細分析&#xff1a;&#x1f9e0; 一、主要功能 main.m&#xff1a; 構建一個全連接神經網絡用于近似三維熱傳導方程的解 ( u(x, y, z, t) …

按鈕計數器:jQuery / AngularJS / Vue / React / dagger.js 實現對比與技術解讀

代碼來源&#xff1a;https://codepen.io/dagger8224/pen/myeKgVQ 任務&#xff1a;實現“按鈕點擊 1”計數器&#xff0c;對比不同框架的寫法與特性&#xff0c;并給出選型建議。 目錄 代碼解讀&#xff08;逐框架&#xff09; jQuery&#xff08;命令式 DOM&#xff09;Angu…

useEffect中直接使用 await報錯

在 useEffect 中直接使用 await 會報錯&#xff0c;因為 useEffect 的回調函數不能是 async 函數。有幾種正確的方式來處理異步操作&#xff1a; 方法一&#xff1a;在 useEffect 內部創建 async 函數并立即調用 這是最常用的方式。 import React, { useEffect } from react;co…

卷積神經網絡為什么要填充(Padding)

填充&#xff08;Padding&#xff09;是卷積神經網絡中一個至關重要且巧妙的設計。它的核心目的可以概括為&#xff1a;為了解決卷積操作導致的特征圖尺寸縮小和邊緣信息丟失問題。

C++ 并發編程:全面解析主流鎖管理類

在 C 的并發世界里&#xff0c;管理共享資源就像是在一個繁忙的十字路口指揮交通。如果指揮不當&#xff0c;就會發生混亂甚至致命的“死鎖”。C 標準庫提供的各種鎖管理工具&#xff0c;就是我們手中的“交通信號燈”&#xff0c;它們各自擁有獨特的職能&#xff0c;幫助我們編…

Spring boot 啟用第二數據源

1. 數據源配置代碼&#xff1a;import com.alibaba.druid.pool.DruidDataSource; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilde…