網絡編程—TCP/IP模型(IP協議)

上篇文章:

網絡編程—TCP/IP模型(TCP協議)https://blog.csdn.net/sniper_fandc/article/details/147011479?fromshare=blogdetail&sharetype=blogdetail&sharerId=147011479&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

目錄

1 網絡層

2 IP協議

3 IP地址

3.1 IP地址分類

3.2 特殊的IP地址

3.3 解決IP地址不夠用

3.3.1 IPV6

3.3.2 DHCP動態分配IP地址

3.3.3 NAT IP地址轉換

3.4 路由選擇


1 網絡層

????????IP協議屬于網絡層,網絡層協議的工作:1.地址管理2.路徑規劃。

2 IP協議

????????4位版本:目前只有4和6,即IPv4和IPv6。IPv4地址32位,IPv6地址128位。

????????4位首部長度:單位4字節,故4位首部長度可以表示15*4=60字節,其中固定首部的長度為50字節,因此選項長度最多40字節。

????????8位服務類型(Type Of Service):3位優先權字段(已經棄用),4位TOS字段,和1位保留字段(必須置為0)。4位TOS分別表示:最小延時,最大吞吐量,最高可靠性,最小成本。這四者相互沖突,只能選擇一個。對于ssh/telnet這樣的應用程序,最小延時比較重要;對于ftp這樣的程序,最大吞吐量比較重要。

????????16位總長度:單位字節,總長度=首部長度+數據載荷(傳輸層數據報)。注意:雖然此處長度做了限制,但這不意味IP數據包遇到數據很多的傳輸層數據報就無法傳輸,實際上IP數據包可以進行拆包和組包,拆包和組包的相關字段和標識、標志、片偏移有關。

????????16位標識:唯一標識主機發送的數據報文,IP數據包的拆包(又被稱為分片)和組包行為不由網絡層控制,而是由數據鏈路層控制。數據鏈路層如果對IP數據包分片,那么多個分片后的包屬于同一個IP數據包,因此16位標識一致。

????????3位標志:第一位保留。第二位置為1表示禁止分片,這時候如果報文長度超過MTU,IP模塊就會丟棄報文。第三位表示“是否還有更多分片”,如果還有分片,置為1;如果沒有分片了則是0,類似于一個結束標記。

????????13位片偏移:當前分片相對于原始IP報文開始處的偏移。其實就是在表示當前分片在原報文中處在哪個位置。實際偏移的字節數是這個值*8得到的。因此,除了最后一個報文之外,其他報文的長度必須是8的整數倍(否則報文就不連續了)。

????????8位生存時間(TTL):數據報到達目的地的最大報文跳數。一般是64(如果是國外的地址,一般是128)。每次經過一個路由,TTL -= 1,一直減到0還沒到達,那么就丟棄了。這個字段主要是用來防止出現路由循環。

????????比如ping百度的地址,百度服務器發送的報文經過64-49=15跳(15次轉發)到達本主機。

????????8位協議:表示上層協議的類型。

????????16位頭部校驗和:使用CRC進行校驗,來鑒別頭部是否損壞。數據部分的校驗由傳輸層負責。

????????32位源地址和32位目標地址:表示發送端和接收端的IP地址。

3 IP地址

????????以IPv4為準,IP地址由32位二進制數表示,每8位二進制用“.”分割,共分成4部分,每部分表示一個字節,范圍為0-255。

3.1 IP地址分類

????????這里不介紹傳統的ABCDE類地址的分類方法(太浪費了,實際中也不用)。實際中使用的是CIDR劃分方法,CIDR引入子網掩碼,作用是表示IP地址哪部分是網絡號,哪部分是主機號。子網掩碼32位,網絡號部分全是1,主機號部分全是0,如下所示:

????????同一個局域網內(內網)的設備,網絡號一樣,主機號不一樣;相鄰局域網的網絡號不一樣(網絡號一樣就屬于同一個局域網了)。

3.2 特殊的IP地址

????????1.網關IP:意思是一個局域網的入口/出口,通常是主機號為.1的IP作為網關IP。

????????2.網絡號:主機號為.0的IP,表示這個局域網的網絡號,因此該IP不會分配給局域網的主機作為IP地址使用。

????????3.廣播IP:主機號為.255的IP,表示廣播IP,向這個IP發送數據,該局域網內的所有設備都會收到。

????????注意:為什么UDP可以實現廣播,TCP不可以?UDP不需要連接,把數據報直接向這個IP發送,就可以實現廣播;而TCP需要建立連接,但是廣播IP沒有實際的設備,即TCP向這個IP發送建立連接信息,沒有設備會應答,因此連接不會建立成功,難以實現廣播。

????????4.本地環回IP:127.0.0.1/127.*,表示主機自己,每臺主機都有一個虛擬的表示環回IP的網卡,因此可以實現自己訪問自己。

????????5.內網IP:10.*、172.16.*-172.31.*和192.168.*,這三類IP都屬于內網IP。

????????6.外網IP:除了內網IP外,其余的都是外網IP。

????????32位IP地址最初的設計是為了唯一表示世界上所有主機設備的地址,因為32位可以表示4294967296,這在當時看來是非常龐大的數字,但是如今手機、電腦、物聯網等各種可上網設備越來越多,這些地址也就不夠用了。如何解決IP地址不夠用問題?就有了以下三種方式:

3.3 解決IP地址不夠用

3.3.1 IPV6

????????IPv6地址為128位,比IPv4地址32位大2^96倍,為地球上每一個沙子分配一個IP都綽綽有余。但是IPv6與IPv4不兼容,而市面上大多數網卡設備等目前仍使用IPv4,因此對于IPv6不做過多研究。

????????IPv6還有個作用,有了IPv6訪問外網就不需要NAT地址轉換了。

3.3.2 DHCP動態分配IP地址

????????當設備需要上網時,向DHCP服務器發送請求,由DHCP服務器分配可用的IP地址,不上網時就不分配IP地址。但是這種方法治標不治本。

3.3.3 NAT IP地址轉換

????????把IP地址按局域網和廣域網分為內網IP和外網IP,不同內網中的IP可以重復,外網IP不能重復

????????觀察下圖的內網IP和外網IP,體會不同局域網的內網IP可以重復,相鄰的局域網網絡號不同(因為路由器把相鄰的兩個局域網連接起來),同一個局域網的網絡號相同的含義。

????????假設主機1想要上網看視頻,主機1向視頻平臺發送請求,源IP是自己的內網IP192.168.0.10,目的IP是視頻平臺的IP3.3.3.3。IP數據包轉發過程可能經歷多個路由器(上圖進行了簡化),每經過一個路由器,NAT機制就會將源IP改為自己的轉發IP(WAN口出去的IP),同時記錄下地址的映射(包是從哪來的),因此最終視頻平臺看到數據包的源IP并不是主機1的IP,而是上一條路由器的IP。通過NAT機制,視頻平臺不會將返回的響應錯誤發送給局域網3的主機3(和主機1的IP相同),而是原路返回。

????????因此,NAT機制的本質是:用一個外網IP代替多個內網IP,從而節省了IPv4的地址的使用。

3.4 路由選擇

????????路由器內部會維護一張路由表,路由選擇的方式類似“問路”,采用一跳一跳的方式進行,當數據包傳入時,路由器會根據目的IP在路由表搜索下一跳地址,如果匹配到相應的信息就轉發數據包到下一跳;如果沒有匹配到就選擇默認的下一跳地址轉發(路由表的默認選項配置)。

下篇文章:

網絡編程—TCP/IP模型(數據鏈路層了解與知識補充)https://blog.csdn.net/sniper_fandc/article/details/147025676?fromshare=blogdetail&sharetype=blogdetail&sharerId=147025676&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

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

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

相關文章

基于金字塔視覺變換的類引導網絡高分辨率遙感圖像高效語義分割

Class-Guidance Network Based on the Pyramid Vision Transformer for Ef?cient Semantic Segmentation of High-Resolution Remote Sensing Images 摘要 多分類語義分割中類之間的小差異和類內的大變化是全卷積神經網絡的“編碼器-解碼器”結構沒有完全解決的問題&#…

基于人工智能的高中教育評價體系重構研究

基于人工智能的高中教育評價體系重構研究 一、引言 1.1 研究背景 在科技飛速發展的當下,人工智能技術已廣泛滲透至各個領域,教育領域亦不例外。人工智能憑借其強大的數據處理能力、智能分析能力和個性化服務能力,為教育評價體系的創新與發…

DeepSeek在互聯網技術中的革命性應用:從算法優化到系統架構

引言:AI技術重塑互聯網格局 在當今快速發展的互聯網時代,人工智能技術正以前所未有的速度改變著我們的數字生活。DeepSeek作為前沿的AI技術代表,正在多個互聯網技術領域展現出強大的應用潛力。本文將深入探討DeepSeek在搜索引擎優化、推薦系統、自然語言處理以及分布式系統…

數字游戲(繼Day 10)

主體: #include<stdio.h> #include<time.h> #include<stdlib.h>#include"mygetch.h"#define MAX 51 //定義測試字母的最大長度void help() {printf("\n****************************************");printf("\n*輸入過程中無法退出…

談談模板方法模式,模板方法模式的應用場景是什么?

一、模式核心理解 模板方法模式是一種??行為設計模式??&#xff0c;通過定義算法骨架并允許子類重寫特定步驟來實現代碼復用。 如同建筑圖紙規定房屋結構&#xff0c;具體裝修由業主決定&#xff0c;該模式適用于??固定流程中需要靈活擴展??的場景。 // 基礎請求處理…

2024 Jiangsu Collegiate Programming Contest H

記錄一下為數不多的網絡流 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #include <execution> using namespace std; using i64 long long; using i128 __int128;template <typename T>struct MCFgraph{struct …

Hadoop序列化與反序列化

一、Hadoop序列化概述 &#xff08;一&#xff09;什么是序列化和反序列化 序列化&#xff1a;序列化是將對象&#xff08;如Java中的類實例&#xff09;轉換為字節序列的過程。在Hadoop中&#xff0c;數據在分布式系統中傳輸或者存儲到磁盤時&#xff0c;需要將數據對象序列…

FreeRTOS臨界區

在FreeRTOS中&#xff0c;臨界區通過關閉可管理的中斷來保護共享資源&#xff0c;具體關閉的中斷層級由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定義決定。以下是關鍵點解析&#xff1a; 中斷優先級分類&#xff1a; 高優先級中斷&#xff1a;數值低于configMAX_SYSCALL_INTERR…

cdw2: TypeScript

一、javascript的問題 二、初識typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、類型 二進制&#xff1a;ob開頭&#xff0c;八進制&#xff1a;0o開頭&#xff0c;十六進制&#xff1a;0x開頭 開發中不這樣寫 這樣寫 匿名函數的參數最好不要…

Qt中的元對象系統

Qt的元對象系統(Meta-Object System)提供了對象間通信的信號和槽機制、運行時類型信息和動態屬性系統。 元對象系統基于以下三個方面&#xff1a; (1).QObject類&#xff1a;為可以利用元對象系統的對象提供了基類。 (2).Q_OBJECT宏&#xff1a;用于啟用元對象功能&#xff0c;…

深入理解重排(Reflow)與重繪(Repaint),寫出高性能 CSS 動畫

在前端開發中&#xff0c;CSS 動畫是提升用戶體驗的重要手段&#xff0c;但很多開發者在使用動畫時并不了解瀏覽器背后的渲染機制&#xff0c;導致動畫卡頓甚至影響整體性能。本文將帶你深入理解 CSS 中的兩大核心概念 —— 重排&#xff08;Reflow&#xff09; 與 重繪&#x…

<貪心算法>

前言&#xff1a;在主包還沒有接觸算法的時候&#xff0c;就常聽人提起“貪心”&#xff0c;當時是layman&#xff0c;根本不知道說的是什么&#xff0c;以為很難呢&#xff0c;但去了解一下&#xff0c;發現也不過如此嘛&#xff08;bushi)&#xff0c;還以為是什么高級東西呢…

大模型快速 ASGI 服務器uvicorn

基礎概念類 1. 什么是 Uvicorn&#xff0c;它的作用是什么&#xff1f; 答案&#xff1a;Uvicorn 是一個基于 Python 的快速 ASGI&#xff08;異步服務器網關接口&#xff09;服務器。它的主要作用是作為 Web 應用程序的服務器&#xff0c;負責接收客戶端的請求&#xff0c;并…

2025高頻面試算法總結篇【二叉樹】

文章目錄 直接刷題鏈接直達非遞歸實現求二叉樹的深度非遞歸從左至右打印一顆二叉樹中的所有路徑判斷平衡二叉樹二叉搜索樹中第K小的元素二叉樹的完全性檢驗根據前&中序遍歷結果重建二叉樹二叉樹的最近公共祖先二叉樹的直徑二叉樹的遍歷 直接刷題鏈接直達 非遞歸實現求二叉…

redis 和 MongoDB都可以存儲鍵值對,并且值可以是復雜json,用完整例子分別展示說明兩者在存儲json鍵值對上的使用對比

Redis 存儲 JSON 鍵值對示例 存儲操作&#xff1a; // 存儲用戶信息&#xff08;鍵&#xff1a;user:1001&#xff0c;值&#xff1a;JSON對象&#xff09; SET user:1001 {"name":"Alice", "age":30, "address":"New York&quo…

介紹幾種創意登錄頁(含完整源碼)

今天為大家收集了幾種不同風格的登錄頁&#xff0c;搭配動態漸變背景&#xff0c;效果絕對驚艷&#xff01; CSS3實現動態漸變玻璃擬態登錄頁 一、開篇語 純CSS實現當下最火的玻璃擬態(Morphism)風格登錄頁&#xff0c;搭配動態漸變背景&#xff0c;效果絕對驚艷&#xff01; …

R語言之mlr依賴包缺失警告之分析

因為本地沒有網絡&#xff0c;所有相關的依賴包都是手動下載&#xff0c;再使用腳本一鍵安裝的。 在使用mlr包時&#xff0c;執行下面的代碼時&#xff0c;總是報各種依賴缺失&#xff0c;也不知道咋看FAIL信息。 # 建模與調參 # 查閱線性回歸、隨機森林、xgboost和KNN四種模…

無狀態版的DHCPv6是不是SLAAC? 筆記250405

無狀態版的DHCPv6是不是SLAAC? 筆記250405 無狀態版 DHCPv6 不是 SLAAC&#xff0c;但二者在 IPv6 網絡中可協同工作。以下是核心區別與協作關系&#xff1a; 本質區別 特性SLAAC無狀態 DHCPv6主要功能生成 IPv6 地址&#xff08;基于路由器通告的前綴&#xff09;分發 DNS、…

uniapp微信小程序地圖marker自定義氣泡 customCallout偶爾顯示不全解決辦法

這個天坑問題&#xff0c;在微信開發工具上是不會顯示出來的,只有在真機上才會偶爾出現隨機樣式偏移/裁剪/寬長偏移&#xff0c;詢問社區也只是讓你提交代碼片段&#xff0c;并無解決辦法。 一開始我懷疑是地圖組件加載出現了問題&#xff0c;于是給地圖加了一個v-if"reL…

LabVIEW商業軟件開發注意問題

在 LabVIEW 商業軟件開發進程中&#xff0c;性能優化、界面設計及兼容性與擴展性&#xff0c;對軟件品質、用戶體驗和市場適配性起著決定性作用。下面&#xff0c;借助多個LabVIEW 編程特性的實際案例&#xff0c;深入分析這些方面的開發要點。 一、性能優化&#xff1a;提升軟…