计算机网络(8) --- IP与IP协议

news2024/12/23 17:08:18

计算机网络(7) --- UDP协议和TCP协议_哈里沃克的博客-CSDN博客UDP协议和TCP协议https://blog.csdn.net/m0_63488627/article/details/132125374?spm=1001.2014.3001.5501

 

目录

1.IP与IP协议

IP作用

协议​编辑

2.网段划分

DHCP划分

CIDR划分

特殊的IP地址

IP地址的数量限制

3.私有IP地址和公网IP地址

4.路由

5.分片问题

1.分片理论

前提

协议

总结

缺点

2.分片操作


1.IP与IP协议

IP作用

1.网络层的作用就是将消息从A主机发送到B主机

2.IP协议有传输跨主机的能力,但是不是一定能跨主机。需要与传输层进行配合,再确认到路由器传输失败或者传输时间过长需要重新传输,进行策略性调整。

协议

1.4位版本:表示IP协议的种类,有IPv4和IPv6,常见的是IPv4

2.4位首部长度:与tcp协议一致,表示报头的大小

3.8位服务类型:发送的策略

4.16位总长度:表示整个报文的大小

5.8位生存时间:表示报文在路由中的有效时间,避免路由循环导致消息发送不到

6.8位协议:表示上层的报文类型是什么

2.网段划分

IP地址=网络号+主机号

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

1.在同一内网中,网络号一致,但是主机号不一致

2.在不同的网中,网络号不一致,但主机号可以一致

那么只要网络号和主机号就能表示不同的主机,但是需要分配这样IP地址,因为32位不能分配所有的主机。

DHCP划分

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
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就 分配完了, A类却浪费了大量地址,因此该策略是不合适的。

CIDR划分

1.引入一个额外的子网掩码来区分网络号和主机号;
2.子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾
3.将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号;
4.网络号和主机号的划分与这个IP地址是A类、B类还是C类无关
5. IP 地址与子网掩码做与运算可以得到网络号 , 主机号从全 0 到全 1 就是子网的地址范围

特殊的IP地址

1.将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
2.将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数 据包;
3.127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

IP地址的数量限制

我们说过:32位不能分配所有的主机,那么需要有策略解决该问题

1.动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到 的IP地址不一定是相同的;
2.NAT技术
3.IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表 示一个IP地址; 但是目前IPv6还没有普及

3.私有IP地址和公网IP地址

1.路由器是连接两个局域网的设备,所以为了区分则路由器有两个IP地址。

2.局域网的主机有对应的私有IP地址

     10.*,前8位是网络号,共16,777,216个地址
     172.16.到172.31.,前12位是网络号,共1,048,576个地址
     192.168.*,前16位是网络号,共65,536个地址
3.一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
4.子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT

4.路由

1.数据由一个路由器传向另一个路由器的行为叫“一跳”

2.路由器存在一个路由表,表示在当前子网中,连接路由器的所有主机。并且路由器存在一个默认路由。

3.Linux下通过route指令就可以查看当前的路由表

Destination表示连接路由的子网IP地址

Gate表示下一跳去往的IP

Genmask表示该子网IP的掩码

Flags的UG表示当前的默认路由

Iface表示路由的接口,连接子网

4.发送信息的路径分三种情况:一是在子网内部能找到对应的IP地址;二是子网找不到,需要借助默认路由往公网跳;三是跳往指定的路由向公网传输

5.当一个主机向某个IP地址发送数据的步骤为:1.先遍历路由表,将当前得到的目的IP与表内遍历的掩码进行&运算,随后与Destination比较是否一致,如果网络号系统就是要找的主机;如果不是就需要通过默认路由向公网发送

5.分片问题

1.分片理论

前提

1.一个提前需知道的问题,网络层的数据只是用于IP找主机用的,但是真正在网线上传输的数据其实是下一次的MAC帧。

2.MAC帧的要求就是所有的数据都要小于1500MB,而MAC帧不允许进行分割数据;而TCP也不允许进行分割,因为它是面向字节流的,没有所谓的分割可言。那么自然就需要IP协议进行分割。IP协议有相关的数据进行记录。

协议

1.16位标识:表示分割,如果分割的报文是一样的,那么此刻的分片就是同一个报文分下来的

2.3位标志:第一位保留,无意义;第二位表示“禁止分片”,如果置为1并且超过1500字节,那么IP就会放弃发送该报文了;而第三位表示“更多分片”,如果是最后一片,则置为1,其他都是0

3.13位片偏移:表示当前的数据片是原本报文的哪个偏移

总结

1.区分一个数据片是否被切割过的依据就是看接收到的数据16位标识位是否一致

2.那么当3位标志的“更多分片”为1表示数据还没有接收完,为0表示到结尾了。那么最后的数据片只要看“更多分片”为0即可,而开始数据片“更多分片”为1,并且偏移为0。若想保证数据片没有遗漏,只需要检查数据片的“起始位置+数据片大小”是否等于下一个数据片的偏移量

3.拆分的工作由网络层的IP协议进行,那么合成也是通过IP协议进行合成。

4.为了保证报文中的数据是否有误,我们需要TCP协议和IP协议的校验和进行校验是否出现问题。

缺点

分数据片的情况是不常见的,因为其操作流程消耗时间。并且拆分出来的数据加大错误的概率。而只要丢失一个数据,tcp需要重新传一整个报文,因为tcp面向字节流,它不在意网络层的数据具体到哪一个点出现错误。

2.分片操作

大致情况如图

网络转发的本质

其实本质就是无数个局域网构建出来的,那么在子网之间转发才能达到主机间通信

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

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

相关文章

什么是进程、线程、协程

什么是进程? 我们都知道计算机的核心是CPU,它承担了所有的计算任务;而操作系统是计算机的管理者,它负责任务的调度、资源的分配和管理,统领整个计算机硬件;应用程序则是具有某种功能的程序,程序…

拥抱AIGC浪潮,亚信科技将如何把握时代新增量?

去年底,由ChatGPT带起的AIGC浪潮以迅雷不及掩耳之势席卷全球。 当互联网技术的人口红利逐渐消退之际,AIGC就像打开通用人工智能大门的那把秘钥,加速开启数智化时代的到来。正如OpenAI CEO Sam Altman所言:一个全新的摩尔定律可能…

Elasticsearch:如何创建 Elasticsearch PEM 和/或 P12 证书?

你是否希望使用 SSL/TLS 证书来保护你的 Elasticsearch 部署? 在本文中,我们将指导你完成为 Elasticsearch 创建 PEM 和 P12 证书的过程。 这些证书在建立安全连接和确保 Elasticsearch 集群的完整性方面发挥着至关重要的作用。 友情提示:你可…

【毕业项目】自主设计HTTP

博客介绍:运用之前学过的各种知识 自己独立做出一个HTTP服务器 自主设计WEB服务器 背景目标描述技术特点项目定位开发环境WWW介绍 网络协议栈介绍网络协议栈整体网络协议栈细节与http相关的重要协议 HTTP背景知识补充特点uri & url & urn网址url HTTP请求和…

C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章

今天继续研究C#的WinForm的实例显示效果。 我们上次介绍了Winform窗体的唯一实例运行代码(见博文:基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 )。这就有一个问题,程序已经打开了,这时候再次运行该应用程序,…

学习网络编程No.1【网络基础知识】

引言: 北京时间:2023/8/4/22:40,天苍苍野茫茫,风吹造地见牛羊,此时心潮澎湃,非常开心,啊哈哈哈!因为就在刚刚我们终于把系统编程方面的知识给学完了,啊哈哈哈&#xff0…

科大讯飞分类算法挑战赛2023的一些经验总结

引言: ResNet是he kaiming大佬的早年神作,当年直接刷榜各大图像分类任务。ResNet是一种残差网络,咱们可以把它理解为一个子网络,这个子网络经过堆叠可以构成一个很深的网络,而ResNext在其基础上,进行了一定修改完善&am…

RabbitMQ在CentOS下的安装

RabbitMQ的版本是3.8.2 1.环境配置:CentOs 7.6以上版本,我的版本是7.9,不要对yum换源,否则可能会安装失败。 echo "export LC_ALLen_US.UTF-8" >> /etc/profile source /etc/profile 以上命令,是…

分立式BUCK电路原理与制作持续更新

一、分立式BUCK电路总体原理图 下面改图包含了电压环和电流环。 二、BUCK电路与LDO的区别 LDO不适合在压差大的环境下使用,因为三极管因为CE极承受了压差,压差越大损耗的功率就越大,将三极管换成MOS管,MOS管两端的压差很小所以效…

Linux安装配置nginx+php搭建以及在docker中配置

Linux安装配置nginxphp搭建以及在docker中配置 文章目录 Linux安装配置nginxphp搭建以及在docker中配置1.nginx源码包编译环境和安装相应的依赖1.1 安装编译环境1.2 安装pcre库、zlib库和openssl库 2.安装nginx2.1 在[nginx官网](https://nginx.org/en/download.html)上获取源码…

uni-app 封装api请求

前端封装api请求 前端封装 API 请求可以提高代码的可维护性和重用性,同时使得 API 调用更加简洁和易用。 下面是一种常见的前端封装 API 请求的方式: 创建一个 API 封装模块或类:可以使用 JavaScript 或 TypeScript 创建一个独立的模块或类来…

解决mysql常见错误,安装mysql提示Install/Remove of the service Denied!/显示无法启动/服务名无效

​​​​​1.概述问题 1.1 在安装mysql中提示Install/Remove of the service Denied! 1.2 MySQL 服务没有加载到电脑上时,有以下原因: 1.2.1 端口被占用,需要更改端口,也可以卸载重装mysql。 1.2.2 启动 MySQL 服务是就会提示 服务…

vue3中使用vue-simple-uploader

vue-simple-uploader本身是基于vue2的,直接npm i vue-simple-uploader -S下载下来版本的是0.7.6。在vue3中无法使用会报错。 解决:使用next安装接下来要发布的版本就会下载1.0.1版本,即可使用vue3 npm i vue-simple-uploadernext -S 注意&…

安全杂记 - Linux文本三剑客之awk

目录 1.什么是AWK2.正则表达式3.语法4.内置变量示例printf命令5.复现awk经典实例(1).插入几个新字段(2).格式化空白(3).筛选IPv4地址(4).筛选给定时间范围内的日志 1.什么是AWK awk、grep、sed是linux操作文本的三大利器,合称文本三剑客。三者的功能都是处理文本&a…

java+springboot+mysql校园通讯录管理系统

项目介绍: 使用javaspringbootmysql开发的校园通讯录管理系统,系统包含超级管理员、管理员、用户角色,功能如下: 超级管理员:管理员管理;部门管理;用户管理;留言管理;公…

4.时间与窗口

4.1 时间类型 在Flink中定义了3种时间类型: 事件时间(Event Time):事件的发生事件,数据本身自带时间字段。处理时间(Processing Time):计算引擎处理时的系统时间。和摄取时间(Inge…

golang协程池(goroutine池)ants库实践

golang中goroutine由运行时管理,使用go关键字就可以方便快捷的创建一个goroutine,受限于服务器硬件内存大小,如果不对goroutine数量进行限制,会出现Out of Memory错误。但是goroutine泄漏引发的血案,想必各位gopher都经历过&#…

分布式任务调度平台XXL-JOB学习笔记-helloworld运行

环境:win10 eclipse java17 mysql8.0.17 xxl-job 2.4 源码:https://github.com/xuxueli/xxl-job/ 导入时按Existing Maven Projects导入,先导入xxl-job-admin(管理平台)和xxl-job-executor-sample-springboot&#x…

帆软设计器大坑:导出的模板会改变数据集的类型

今天早上在调试一个帆软决策报表(*.frm)中的可视化图表。无意中发现之前自己做的数据源变成了内置数据源(ps.不会更新的静态数据)。 查看了原来复制用的模板: 另存为模板(含数据),放…

LVS-DR模式集群构建过程演示

一、工作原理 LVS的工作原理 1.当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 2.PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链 3.IPVS是工作在IN…