【從網絡基礎到實戰】理解TCP/IP協議體系的核心要點(包含ARP協議等其他協議介紹)

前言:

學習計算機網絡不僅是軟件開發的基礎功,更是成為一名合格后端工程師、網絡工程師的重要門檻。本文將基于 TCP/IP 協議體系,系統梳理網絡層、數據鏈路層、以及相關協議的核心知識,并結合實際案例與代碼示例幫助理解。


一、網絡層:為數據尋找最佳路徑

網絡層的核心作用是在復雜的網絡環境中找到一條合適的路徑,把數據從源地址送到目標地址。

1. IP協議基礎

  • 主機與路由器:主機有IP但不做路由控制,路由器既有IP又能進行路由轉發。
  • 協議頭結構:包含版本號、頭部長度、TOS服務類型、總長度、標識與分片信息、TTL、生存時間、協議類型、校驗和、源/目標IP等字段。

示例:查看本機IP和路由信息

# 查看本機IP、MAC、MTU
ifconfig# 查看路由表
route -n

2. 網段劃分與子網掩碼

  • 通過子網掩碼區分網絡號和主機號,解決傳統 A/B/C 類地址浪費問題。
  • CIDR 提高了IP利用率,例如 192.168.1.1/24 表示高 24 位為網絡號。
  • DHCP 自動分配IP,減少人工配置。

示例:計算網絡號

import ipaddressip = ipaddress.ip_interface("192.168.1.100/24")
print("IP地址:", ip.ip)
print("網絡號:", ip.network)

二、數據鏈路層:在相鄰節點之間可靠傳輸

數據鏈路層負責在同一鏈路上的兩個節點間傳遞數據。

1. 以太網與MAC地址

  • 以太網是一種局域網技術標準,規定了拓撲結構、訪問控制、傳輸速率等。
  • MAC地址是硬件唯一標識,長度48位,通常以16進制表示。

示例:查看本機MAC地址

ifconfig | grep ether

2. MTU與分片

  • 以太網最大傳輸單元(MTU)為1500字節。
  • 超過MTU的大包會被分片,UDP/TCP都會受其影響。
  • TCP通過MSS協商避免不必要的分片。

示例:修改MTU

sudo ifconfig eth0 mtu 1400

三、ARP協議:IP與MAC之間的橋梁

ARP(地址解析協議)用于在已知IP的情況下,獲取對應MAC地址。

示例:查看ARP緩存表

arp -a

Python示例:發送ARP請求(需scapy庫)

from scapy.all import ARP, Ether, srptarget_ip = "192.168.1.1"
arp = ARP(pdst=target_ip)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arpresult = srp(packet, timeout=2, verbose=False)[0]
for sent, received in result:print(f"IP: {received.psrc}, MAC: {received.hwsrc}")

四、其他關鍵協議與技術

1. DNS域名解析

  • 將域名映射到IP地址。
  • 解析過程會先查本地hosts文件,再查詢DNS服務器。

示例:使用 dig 查看解析過程

dig www.baidu.com

Python示例:域名解析

import socket
print(socket.gethostbyname("www.baidu.com"))

2. ICMP協議

  • 用于網絡診斷和錯誤報告,如 pingtraceroute
  • 注意:ICMP是網絡層協議,沒有端口號。

示例:測試網絡連通性

ping www.baidu.com
traceroute www.baidu.com

3. NAT與NAPT

  • NAT將私有IP映射為公網IP。
  • NAPT通過端口號映射支持多主機共享公網IP。

4. 代理服務器

  • 正向代理:客戶端通過代理訪問外部資源。
  • 反向代理:代理作為緩存或負載均衡中間層。

示例:Python設置HTTP代理

import requestsproxies = {"http": "http://127.0.0.1:8080","https": "http://127.0.0.1:8080"
}response = requests.get("http://httpbin.org/ip", proxies=proxies)
print(response.text)

五、總結

  • 數據鏈路層:關注MAC地址、MTU、以太網標準、ARP。
  • 網絡層:理解IP地址結構、路由機制、NAT原理、ICMP功能。
  • 傳輸層:掌握端口號概念、TCP/UDP特性。
  • 應用層:了解HTTP、DNS、代理等技術的工作流程。

掌握這些基礎知識,不僅能幫助理解互聯網的運作原理,也能為編程、網絡配置、排錯提供堅實的理論基礎。

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

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

相關文章

Python 元類基礎:從理解到應用的深度解析

在 Python 的高級編程中,元類(metaclass) 無疑是最神秘又最強大的特性之一。它不僅是構建類的“工廠”,更是 Python 靈活對象模型的體現。本文將帶你從基礎概念入手,深入理解元類的本質、工作機制以及實際應用&#xf…

Nginx 配置代理服務器的詳細方法

一、什么是代理服務器? 類型說明正向代理客戶端通過代理訪問目標服務器(隱藏客戶端身份)反向代理客戶端訪問代理服務器,由代理服務器請求后端服務器(隱藏后端服務器) 二、Nginx 反向代理配置方法&#xff…

Lombok插件介紹及安裝(Eclipse)

一、Lombok 的用途 Lombok是一個 Java 庫,通過注解的方式簡化 Java 代碼的編寫。它能夠自動生成常見的代碼,如getter、setter、toString、equals、hashCode等方法,從而減少樣板代碼,使代碼更加簡潔、易讀。 Lombok 通過添加**Dat…

硬核操作!Go 語言生成 “會爬墻的清潔機器人”,玻璃外墻自己擦

本文聚焦于利用 Go 語言開發 “會爬墻的清潔機器人” 這一硬核技術,圍繞該機器人如何實現玻璃外墻自主清潔展開。首先介紹開發背景與需求,接著闡述 Go 語言在其中的優勢,詳細講解機器人的核心技術,包括吸附系統、運動控制、清潔機…

Qt——實現”Hello World“、認識對象樹與Qt坐標系

在創建項目時,使用的基類Base Class為QWidget 1. 使用圖形化界面的方式實現“Hello World” 雙擊文件:widget.ui,進入designer模式:在“控件盒子”的“Display Widgets”中找到“Label”,并拖放到白板中雙擊剛剛拖放到…

智能合約開發全流程實戰指南

目錄 靈感探索與概念驗證合約開發常見問題 Hardhat 初始化項目問題合約編譯錯誤處理智能合約設計缺陷 合約測試最佳實踐 單元測試環境配置測試用例編寫技巧測試覆蓋率和策略常見測試失敗原因 合約部署實戰指南 部署到不同網絡部署前準備事項部署后驗證方法部署費用和Gas優化 合…

IPA1299至為芯替代TI ADS1299的腦機接口芯片

在腦機接口、神經科學研究和醫療電子設備領域,腦電信號采集芯片是連接生物電信號與數字世界的重要組件。目前,TI等國際廠商憑借技術優勢占據市場主要份額,國內廠商在成本控制、供貨周期和技術自主性方面面臨挑戰。英集芯推出的IPA1299低噪聲多…

「數據獲取」《中國海洋生態環境狀況公報》(2001-2023年)(獲取方式看綁定的資源)

01、數據簡介在 2023 年的海洋環境監測工作中,監測范圍廣泛且細致。全年對 1359 個海洋環境質量國家控制點位進行了水質監測,這些點位分布在我國管轄的各大海域,能夠全面反映海洋整體水質狀況;對 230 個入海河流國家控制斷面開展監…

通過限制網絡訪問來降低服務器被攻擊風險的方法

限制網絡訪問是降低服務器被攻擊風險的核心思路之一,因為絕大多數入侵都是從開放的網絡入口開始的。思路是“減少暴露面 精確授權”,讓服務器只對必要的人、必要的業務開放。我給你分成幾個層次來說明,從最外層網絡入口到最內層系統配置都涉…

python與JavaScript的區別

Python 與 JavaScript 的主要區別(按常用維度劃分)維度PythonJavaScript誕生時間 / 背景1991 年,由 Guido van Rossum 設計,目標是“一種易讀、易寫的通用腳本語言”。1995 年,由 Brendan Eich 為 Netscape 瀏覽器誕生…

Java 比較器解析

一、比較器的核心作用與應用場景在 Java 編程中&#xff0c;數據比較是一個基礎但重要的操作。對于基本數據類型&#xff08;如 int、double、boolean、char 等&#xff09;&#xff0c;Java 語言本身就提供了完整的比較運算符&#xff08;>、<、、>、<、!&#xf…

Java學習第一百二十一部分——HTTP

目錄 一、前言簡介 二、核心特性 三、通信基礎結構 四、關鍵組件詳解 五、性能演進——版本對比 六、開發者建議 七、總結歸納 一、前言簡介 HTTP&#xff08;“H”yper“t”ext “T”ransfer “P”rotocol&#xff0c;超文本傳輸協議&#xff09;是互聯網上應用最廣泛…

記錄RK3588的docker中啟動rviz2報錯

安裝好rk3588 的docker&#xff0c;pull了ros的完整鏡像后&#xff0c;想要啟動rviz但是報錯&#xff0c;下面是我的踩坑記錄 0.原始的啟動鏡像的腳本&#xff1a; sudo docker run -it --rm --privileged --nethost -e DISPLAY$DISPLAY --namemy_image_name \-e DISPLAY$DIS…

ThingJS 新手學習技巧

一、ThingJS 基礎認知 1.1 ThingJS 是什么 ThingJS 是一款基于 WebGL 技術的 3D 可視化開發平臺&#xff0c;它為開發者提供了簡單易用的 API 和豐富的 3D 場景組件&#xff0c;讓開發者能夠快速構建出高質量的 3D 可視化應用。無論是智慧園區、智慧樓宇、智慧交通還是工業監…

【軟考架構】需求工程中,系統分析與設計的結構化方法

結構化方法誕生于20世紀70年代&#xff0c;是為了應對當時日益復雜的軟件系統開發挑戰&#xff08;如“軟件危機”&#xff09;而提出的。它強調系統性、規范性、分解和抽象&#xff0c;目標是提高軟件開發的效率、質量和可維護性&#xff0c;降低復雜性。 核心思想&#xff1a…

FPGA常用資源之IO概述

目錄 一、前言 二、I/O資源 2.1 I/O端口資源 2.1.1 IOB 2.1.2 ILOGIC/OLOGIC 2.2 ZHOLD 2.3 IDDR/ODDR 2.4 IDELAY 2.5 ISERDES/OSERDES 2.6 IO Logic Resource連接 2.7 Device示意圖 三、工程示例 3.1 工程代碼 3.2 Device結果 一、前言 FPGA芯片從內部結構看主…

密集遮擋場景識別率↑31%!陌訊輕量化部署方案在智慧零售的實戰解析

一、零售業痛點&#xff1a;當技術遇上客流洪流據《2024智慧零售技術白皮書》統計&#xff0c;高峰期超市顧客密度超3人/㎡時&#xff0c;??目標漏檢率高達48%??。核心挑戰包括&#xff1a;??動態遮擋??&#xff1a;購物車/貨架造成的持續性目標截斷??計算瓶頸??&a…

力扣(O(1) 時間插入、刪除和獲取隨機元素)

一、題目分析&#xff08;一&#xff09;功能需求 我們需要實現 RandomizedSet 類&#xff0c;包含以下功能&#xff1a; RandomizedSet()&#xff1a;初始化數據結構。bool insert(int val)&#xff1a;當元素 val 不存在時&#xff0c;插入該元素并返回 true&#xff1b;若已…

前端開發的面試自我介紹與準備

前端面試自我介紹不知道怎么說的&#xff0c;直接參考下面的模板&#xff0c;然后換成你的經歷 自我介紹控制在1分鐘左右&#xff0c;千萬不要說的太久&#xff0c;面試官會煩的&#xff0c;但是又不好意思打斷你 切記面試是人和人面對面的交流&#xff0c;要有&#xff0c;面試…

10、系統規劃與分析

一、系統規劃步驟系統規劃步驟對現有系統進行初步調查分析和確定系統目標分析子系統的組成和基本功能擬定系統的實施方案擬定系統的可行性研究指定系統建設方案系統規劃階段的產出物&#xff1a;可行性研究報告、系統設計任務書。習題1、擬定系統的實施方案是在系統規劃階段完成…