IP协议详解

目录

一、IP协议头格式

二、IP地址、Mac地址

2.1 IPv4

2.2 IPv6

2.3 Mac地址

三、IP路由转发

四、IP分包及组包


一、IP协议头格式

IP协议是网络层的重点协议。这里主要列举一下16位标识与3位标志以及13位片偏移。

16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每
一个片里面的这个id都是相同的。
3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第
二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表
示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。
13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是
在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,
除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。

二、IP地址、Mac地址

IP地址组成

IP地址的组成分为两部分,网络号和主机号

  • 网络号:标识网段,保证相互连接的两个网段具有不同的标识;
  • 主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

通过合理设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的IP地址都是唯一的

分类

将IP地址分为五类

子网掩码

子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。子网掩码也可以使用二进制所有高位1相加的数值来表示,如以上子网掩码也可以表示为24。

2.1 IPv4

由于IPv4的局限性,导致ip地址在分配的过程中出现不足的现象。为了解决IPv4的局限性,采取NAT+动态分配的机制解决IPv4地址不足的现象。

这里的动态分配涉及到内网以及外网。内网是局域网组成的,在同一个局域网中动态分配的ip地址不能重复,但是在不同的局域网中是允许存在相同的IP的。外网IP是唯一表示,不能出现相同的外网IP。

  • 外网设备可以不需要任何的NAT与其他的外网设备进行通信。
  • 内网设备不能访问其他的内网设备
  • 外网设备不能访问内网设备
  • 内网设备可以访问外网设备

2.2 IPv6

这里不对IPv6做过多的介绍,因为现在的IPv6目前没有全面的启用,IPv6相对于IPv4来说只是多了许多IP地址而已。

2.3 Mac地址

Mac地址这里主要就是与IP地址进行一个对比,由于Mac地址是6字节48位所以这里不会有Mac地址不足的现象,所以Mac能够直接的决定电脑的网卡号,而且每个电脑有且只有一个Mac地址。

三、IP路由转发

IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径。

从右往左分析上图,当IP模块接收到来自数据链路层的IP数据报是,它首先对该数据报的头部做CRC校验,确认无误之后就分析其头部的具体信息。

四、IP分包及组包

由于在数据链路层承载的数据量是一定的,所以当超出范围的时候就会进行分包和组包。

分包:利用16位标识将分包的数据进行同一标识

组包:利用13位的片偏移将分包的顺序确定好。同时利用3位标志确定是否是分包,以及确定分包中的最后一个包。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询IP地址可得到哪些信息

通过IP地址定位,可以获取一些基本的信息,包括以下内容: 1. 地理位置:你可以确定IP地址所在的地理位置,包括国家、州或省、城市和地理坐标。这通常是通过将IP地址与地理位置数据库进行匹配来实现的。 2. ISP&#xff…

spi协议精讲

spi 总线是一种 高速的、全双工,同步串行总线,有四根线MISO MOSI SCLK CS 2.通信过程 3.极性和相位 因为没有像iic一样规定上升沿还是下降沿发送数据,spi的通信取决于极性和相位,因此有四种工作模式 CPHA0 表示SCK 第一个边沿时&…

RocketMQ实践与原理分析(Docker安装RocketMQ)

前言 QBM之前使用的消息中间件是ActiveMQ,后续需要升级为RocketMQ。 MQ广泛应用于很多业务场景中,主要的作用 异步解耦削峰… 常用MQ中间件对比,参考官方文档:https://rocketmq.apache.org/zh/docs/4.x/introduction/03whatis…

mysql课堂笔记 mac

目录 启动mac上的mysql 进入mysql mac windows 创建数据库 创建表 修改字段数据类型 修改字段名 增加字段 删除字段 启动mac上的mysql sudo /usr/local/mysql/support-files/mysql.server start 直接输入你的开机密码即可。 编辑 进入mysql mac sudo /usr/local…

博客系统(升级(Spring))(四)(完)基本功能(阅读,修改,添加,删除文章)(附带项目)

博客系统 (三) 博客系统博客主页前端后端个人博客前端后端显示个人文章删除文章 修改文章前端后端提取文章修改文章 显示正文内容前端后端文章阅读量功能 添加文章前端后端 如何使用Redis项目地点: 博客系统 博客系统是干什么的? CSDN就是一…

去耦电路设计应用指南(三)磁珠/电感的噪声抑制

(三)磁珠/电感的噪声抑制 1. 电感1.1 电感频率特性 2. 铁氧体磁珠3. LC 型和 PI 型滤波 当去耦电容器不足以抑制电源噪声时,电感器&磁珠/ LC 滤波器的结合使用是很有效的。扼流线圈与铁氧体磁珠 是用于电源去耦电路很常见的电感器。 1. …

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置

MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置 一个完整的Sentinel模具保护解决方案包括一到四台冲击式摄像机、专用红外LED照明和镜头、Sentinel软件以及所有与模压机连接的必要互连组件。摄像机支架基于磁性,可快速、安全、灵活地部署。此外,一个…

Scanner类用法(学习笔记)

Scanner类用法(学习笔记,后续会补充) 1.next()用法 package com.yushifu.scanner; import java.util.Scanner;//util java工具包 //Scanner类(获取用户的输入) Scanner s new Scanner&#…

【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)

目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 1. 多维数组的属性 1、创建数组 2、数组操作 1. 索引和切片 a. 索引 b. 切片 2. 形状操作 a. 获取数组形状 b. 改变数组形状 c. 展平数组 3. 转置操作 a. 使用.T属性 b…

VIRTIO-SCSI代码分析(1)VIRTIO SCSI设备模拟

VIRTIO SCSI设备的模拟是通过QEMU实现的,除了呈现SCSI设备外,它同样也是PCIE设备。QEMU中定义了VIRTIO SCSI设备如下所示: TYPE_DEVICE -> TYPE_VIRTIO_DEVICE -> TYPE_VIRTIO_SCSI_COMMON ->TYPE_VIRTIO_SCSI 其中前面为父设备&am…

【SpringCloud微服务项目学习-mall4cloud项目(1)】——环境部署,构建与运行

环境部署,构建与运行 mall4cloud项目介绍源码地址 开发环境搭建pom搭建项目运行前端运行 mall4cloud项目介绍 mall4j商城系统 首先介绍一下mall4j,是一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布…

数据库开发-MySQL基础DQL和多表设计

1. 数据库操作-DQL DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。 1.1 介绍 查询关键字:SELECT 查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使…