【网络】网络层协议:IP(待更新)

news2024/11/19 2:45:25

文章目录

  • IP 协议
      • 1. 基本概念
      • 2. IP 报头解析
  • 🔺IP 的 网段划分:

IP 协议

IP 不是面向字节流的,而是发送接收一个个的数据包


1. 基本概念

主机:配有 IP 地址的设备
路由器:配有单个或多个 IP 地址,且能进行路由节点控制
节点:主机和路由器的统称


2. IP 报头解析

在这里插入图片描述
4 位版本号(version)

  • 指定 IP 协议的版本。对于 IPv4 来说,就是 4(用 4 个字节,32 个比特位,标识全球互联网唯一的主机)。

    公用网络协议中,极少使用 IPv6
    

4 位头部长度(header length)

  • 表示该 IP 头部有多少个 32 位 bit(有多少个 4 字节); 所以 IP 头部最大长度是 15 * 4 = 60 个字节

8 位服务类型(Type Of Service)

  • 3 位优先权字段(已经弃用),4 位 TOS 字段,和 1 位保留字段(必须置为0)。
  • 4 位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突, 只能选择一个。
  • 对于 ssh / telnet 这样的应用程序,最小延时比较重要;对于 ftp 这样的程序,最大吞吐量比较重要。

16 位总长度(total length)

  • IP 数据报整体占多少个字节。

16 位标识(id)

  • 唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个 id 都是相同的。

3 位标志字段

  • 第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。
  • 第二位置为 1 表示禁止分片,这时候如果报文长度超过 MTU,IP 模块就会丢弃报文。
  • 第三位表示 “更多分片”,如果分片了的话,最后一个分片置为 1,其他是 0。类似于一个结束标记。

13 位分片偏移(framegament offset)

  • 是分片相对于原始 IP 报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是 8 的整数倍(否则报文就不连续了)。

8 位生存时间(Time To Live, TTL)

  • 数据报到达目的地的最大报文跳数。一般是 64,每次经过一个路由,TTL -= 1,一直减到 0 还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。

8 位协议

  • 表示上层协议的类型,即有效载荷是什么报文。

16 位头部校验和

  • 使用 CRC 进行校验,来鉴别头部是否损坏。

32 位源地址和 32 位目标地址

  • 表示发送端和接收端。

选项字段(不定长, 最多 40 字节):略


🔺IP 的 网段划分:

过去曾经提出一种划分网络号和主机号的方案,把所有 IP 地址分为五类。
在这里插入图片描述

A类 0.0.0.0到127.255.255.255 
B类 128.0.0.0到191.255.255.255 
C类 192.0.0.0到223.255.255.255 
D类 224.0.0.0到239.255.255.255 
E类 240.0.0.0到247.255.255.255

但这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址。

针对这种情况提出了新的划分方案,称为 CIDR(Classless Interdomain Routing)

  • 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号

  • 子网掩码也是一个 32 位的正整数,通常用一串 “0” 来结尾

    子网掩码格式:左半部分全 1,右半部分全 0。
    
    1 的部分就是网络号的占位,0 的部分就可以用来进行子网划分,
    如此相比分类网段,就更加灵活了。
    
  • 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号

  • 网络号和主机号的划分与这个 IP 地址是 A 类、B 类还是 C 类无关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1314. 矩阵区域和】

目录 一、题目描述二、算法思想三、代码实现 一、题目描述 二、算法思想 三、代码实现 class Solution { public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {//先预处理数组int nmat.size();//行int mmat[0].size();…

flutter开发实战-下拉刷新与上拉加载更多实现

flutter开发实战-下拉刷新与上拉加载更多实现 在开发中经常遇到列表需要下拉刷新与上拉加载更多&#xff0c;这里使用EasyRefresh&#xff0c;版本是3.3.21 一、什么是EasyRefresh EasyRefresh可以在Flutter应用程序上轻松实现下拉刷新和上拉加载。它几乎支持所有Flutter Sc…

C++指针和引用

1、引用必须初始化&#xff0c;指针不必&#xff0c;所以说引用使你更安全的指针&#xff1b; 2、在汇编代码&#xff0c;指针和引用一模一样&#xff1b; 3、引用只有一级引用&#xff0c;没有多级引用&#xff1b; 4、引用必须引用一个能取地址的变量&#xff1b; 左值&…

第三章 内存管理 五、动态分区分配算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)

目录 一、首次适应算法 1、算法思想&#xff1a; 2、如何实现&#xff1a; 3、两种常用的数据结构: &#xff08;1&#xff09;空闲分区表、空闲分区链 4、例子 二、最佳适应算法 1、算法思想: 2、如何实现: 3、例子&#xff1a; 三、最坏适应算法 1、算法思想&…

蓝桥杯每日一题2023.10.16

数的分解 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 最开始想使用dfs&#xff0c;发现范围过大无法在规定时间运行 #include<bits/stdc.h> using namespace std; const int N 2e5 10; int a[N], v[N], ans; void dfs(int dep, int sum, int start) {if(sum > 20…

Linux命令行下查看实时网速

Linux命令行下&#xff0c;用ifconfig可以看到每个网卡实时的收发的数据包了字节数&#xff0c;但并不方便查看当前网卡的实时网速。 近日偶得一个软件叫nload可以方便的在命令行下查看实时网速&#xff0c;不敢独享&#xff0c;分享给大家。 1、安装 sudo apt install nload…

第三章 内存管理 六、基本分页存储管理

目录 一、定义 二、例子 三、总结 一、定义 基本分页存储管理是一种操作系统的存储管理技术。在基本分页存储管理中&#xff0c;物理内存被划分成固定大小的块&#xff0c;称为页面&#xff08;Page&#xff09;&#xff0c;而程序代码和数据被分成相同大小的块&#xff0c;…

数据结构:二叉树(1)

目录 树的概念 树的表示形式 二叉树 二叉树的性质 题目 二叉树的存储 链式存储 初始化二叉树 二叉树的遍历 前序遍历&#xff1a;根&#x1f449;左子树&#x1f449;右子树 中序遍历&#xff1a;左子树&#x1f449;根&#x1f449;右子树 后序遍历&#xff1a;左子…

二十八、【滤镜】

文章目录 滤镜库Camera Raw滤镜神经网络滤镜(Neurel Filters)液化其他滤镜 滤镜库 可以在滤镜库中选择一些常用的滤镜方式&#xff0c;主要有六大类&#xff1a; Camera Raw滤镜 Camera Raw滤镜是photoshop最重要的一个滤镜&#xff0c;他帮助我们在摄影后期去进行颜色预处…

导数、偏导数、方向导数

一、导数 导数是描述函数变化率的数学概念。 导数的定义式: 那么就有一个问题&#xff0c;为什么求函数的最大值点是要对其自变量求导&#xff0c;并使其导数等于0 比如:求L(θ)3lnθ2ln(1-θ)的最大值点 既然导数表示函数的变化率&#xff0c;那么当函数L(θ)的导数等于0&…

Go语言基础之包

包&#xff08;package&#xff09; Go语言中支持模块化的开发理念&#xff0c;在Go语言中使用包&#xff08;package&#xff09;来支持代码模块化和代码复用。一个包是由一个或多个Go源码文件&#xff08;.go结尾的文件&#xff09;组成&#xff0c;是一种高级的代码复用方案…

构建高性能物联网数据平台:EMQX和CnosDB的完整教程

CnosDB 是一款高性能、高压缩率、高易用性的开源分布式时序数据库。主要应用场景为物联网、工业互联网、车联网和IT运维。所有代码均已在GitHub开源。本文将介绍如何使用EMQX 这一MQTT 服务器 CnosDB 构建物联网数据平台&#xff0c;实现物联网数据的实时流处理。 前言 在物联…

CLIP和改进工作

CLIP和改进工作 CLIP 改进方向 语义分割 Lseg、GroupViT 目标检测 ViLD、GLIP v1/v2 视频理解 VideoCLIP、CLIP4clip、ActionCLIP 图像生成 VQGAN-CLIP、CLIPasso、CLIP-Draw 多模态下游任务 VL Downstream 其他 prompt enginering&#xff08;CoOp等&#xff09; depthCLIP、…

(C++ STL) 详解vector模拟实现

目录 一.vector的介绍 1.vector的介绍 二.vector的定义模拟实现 三.vector各接口的模拟实现 1.vector迭代器的模拟实现 2.构造函数 2.1无参构造 2.2 n个val构造 2.3迭代器区间构造 2.4通过对象初始化&#xff08;拷贝构造&#xff09; 3.析构函数 4.size 5.operato…

PCB沉金包边工艺流程与主要作用经验总结

🏡《总目录》 目录 1,什么是PCB沉积包边2,PCB沉金包边作用2.1,射频屏蔽2.2,EMC认证2.3,防氧化2.4,强电屏蔽2.5,美观3,PCB沉金包边的工艺流程4,总结1,什么是PCB沉积包边 PCB沉金包边是指,在PCB的侧边也包裹上铜皮,并在铜皮的表面进行沉金工艺。在高频电路板中经常…

探索数字时代的核心:服务器如何塑造未来并助你成就大业

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【Java学习之道】Java网络编程API介绍

引言 在Java中&#xff0c;进行网络编程的主要方式是通过Java网络编程API。这些API提供了一组类和接口&#xff0c;用于创建网络应用&#xff0c;如TCP和UDP通信、URL访问等。在这一节中&#xff0c;我们将带你领略Java网络编程API的魅力。 一、InetAddress InetAddress类是表…

基于区块链与联邦学习技术的数据交易平台

目录 基于区块链与联邦学习技术的数据交易平台 基于区块链与联邦学习技术的数据交易平台 联邦学习与区块链的集成的优势在于能够确认参与各方的身份并实现学习过程追溯。 首先&#xff0c;通过的身份认证系统与定制化的联邦学习协议来解决交易各方身份确认的问题。 如图1所示…

【网络编程】序列化与反序列化

文章目录 一、网络协议二、序列化和反序列化1. 结构化数据2. 序列化和反序列化 三、网络版计算器1. 协议定制2. 客户端处理收到的数据3. 整体代码 一、网络协议 网络协议 是通信计算机双方必须共同遵从的一组约定&#xff0c;为了使数据在网络上能够从源地址到目的地址&#x…

CCF CSP认证 历年题目自练Day33

题目一 试题编号&#xff1a; 202212-1 试题名称&#xff1a; 现值计算 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 问题描述 评估一个长期项目的投资收益&#xff0c;资金的时间价值是一个必须要考虑到的因素。简单来说&#xff0c;假设…