【计算机网络】IP协议(上)

文章目录

  • TCP与 IP之间的关系
  • IP地址的认识
  • 协议报头格式
    • 1. 报头和有效载荷如何分离?
    • 2. 8位协议
    • 3. 4位版本
    • 4. 8位服务类型
    • 5. 16位总长度
    • 6. 8位生存时间 TTL
  • 网段划分
    • IP地址的划分
  • 子网划分
    • CIDR的提出
    • 如何理解CIDR

TCP与 IP之间的关系

如:假设 你上高中时,班里有个同学叫张三,他的老爹是学校的校长
你感觉每次考试都有考100分的能力
有能力并不意味着百分百一定能做到
有能力指的是有较大概率


若想让张三每次考试 都是 百分百 满分
考了几次,其中有一次考了99,不是满分,张三就去找他老爹,他老爹不满意张三没有考满分
所以跟张三说,单独给你考,直到考到满分
因为他老爹认为张三有很大概率考到满分,所以每次就要保证百分百考到满分

张三与校长父亲组合起来,就能保证每次考试都能考满分
真正参与考试的是张三
校长父亲进行了考试控制,为张三考试提供了策略


IP协议提供一种能力,将数据从主机A 跨网络 送到主机B的能力
IP协议提供的是有较大概率
但是 用户要的百分百能够做到
所以就需要 TCP 和 IP 组合
TCP可以看作是 校长父亲 ,提供传输策略
IP可以看作是 张三,提供真正进行转发报文时的执行

TCP将报文将给IP,IP若出现丢包的情况,则TCP就会重新向上交付

TCP 和 IP 组合 表示 将数据 从主机A 可靠的跨网络 送到主机B

IP地址的认识

如:你要去北京玩,但实际上是去北京的天安门广场 去玩
当你在长春,你可以说去北京玩,但当你到达北京后,就要确认去天安门广场

所以一般要说去哪里玩时,应该先到景点所在的城市,然后再到达景点

IP地址 等于 目标网络 加 目标主机

协议报头格式

1. 报头和有效载荷如何分离?

IP中存在 20位的标准长度
存在 4位首部长度, 表示 整个报头的长度
4位首部长度 的基本单位是4字节

提取报文的前20个字节(前20个字节一定是标准报头)
在提取首部长度字段
根据首部长度字段* 4 减去20字节
若为0,说明没有选项,报文就是标准报头,直接读取有效载荷即可
若不为0,剩下几个字节,就说明有几个字节的选项,整个报文长度 减去 标准报头以及 选项长度
即可获得 有效载荷

2. 8位协议

8位协议 表示 有效载荷是什么报文 即有效载荷向哪一个协议交付

3. 4位版本

IP协议报头中存在4位版本,一般表示为IPV4(以4字节 32个比特位 表示 IP地址用来标识全球唯一的互联网主机)

4. 8位服务类型

如:张三要去考试, 校长父亲要求考满分,同时张三向他父亲询问 这次考试是想卷面最整齐,还是第一个交卷

IP是给TCP提供服务的,当TCP要IP把数据发送时,IP询问TCP 是向尽快把数据交付,还是发送数据时,挑一条不会丢包的路径
提供什么样的服务类型

8位服务类型 对应不同种类的IP的传送策略

其中3位优先权字段被弃用,4位服务类型(TOS)字段 和 1位保留字段(必须置为0)
4位服务类型 分别表示: 最小延时、最大吞吐量、最高可靠性、最小成本

5. 16位总长度

表示 整个报文(报头+有效载荷)的长度


4位首部长度 和 标准20字节长度 可以将一个保文的标准报头和选项分离出
再使用 16位总长度,就可以将报头和有效载荷分离

6. 8位生存时间 TTL


若将数据从主机B送到主机C,当路由器D发生故障时,导致路由器D并没有把数据交给主机C
使路由器D交给路由器I
路由器I 将数据交给 路由器J,路由器J 将数据交给 路由器H,路由器H 将数据交给 路由器C,
最后路由器C 又将数据交给 路由器D,从而造成环路问题

TTL: 该报文,在转发过程中,最多经历的路由器的次数

每经历一次 路由器 ,TTL就减一
当TTL减到0时,表示报文不能再被转发了,若此时没有到达,则该报文直接被丢弃

网段划分

有一天,张三在散步,结果捡到一个钱包,里面有一个学生证,但是上面只能看见一串学号
所以张三只知道钱包上面有学号,只能通过学号来寻找丢失钱包的主人
但是一个人一个人去找效率太低了

钱包上的学号具有唯一标识,一个人一人去问学号,就是在遍历学校的所有人
但一次排除一个人,所以导致效率低下

张三就可以看作报文 ,钱包为目的IP地址,丢失钱包的人可以看作 目标主机
若报文将数据交给目标主机,若在全网中根据目的IP地址一个一个去问,效率也会非常低下


每一个学院都有自己的群,而每一个学院都有自己的院学生会主席,这些院学生会主席之间也有一个群
张三属于计算机学院的学生,计算机学院的编号为10,他属于该学院的210,他的学号为10210
全校没有任何一个同学的学号是一样的
假设捡到的钱包的学号为 12003
张三不打算自己找了,就拍了张照片,并发到计算机学院的群里
计算机院的学生会主席了解每个学号前的数字表示那个学院的,所以就发现丢失钱包的人为化工学院
就把照片 转发到 学生会主席群里,通知对应的化工的学生会主席

此时化工的学生会主席发现就是他们院的同学丢的,就把照片转发到了化工院的群里,通知003号同学

在这个过程中,归还的效率提高了,因为这次不是以个人来寻找的,而是以群为单位来寻找的
查找的本质是排除的过程,选择一个群,就是排除了其他的所有群,查找效率大大提高了


学号 可以看作 IP地址
群 可以看作 子网,院学生会主席 可以看作 路由器
学生会主席群 可以看作公网,丢失钱包的人 可以看作 目标主机
先找到目标子网(群),再找到目标主机


为了 跨网络 更高效的把数据从一台主机送到另一台主机,所以要进行 子网划分 (每个学院都有自己的群)
IP地址 等于 目标网络 加 目标主机
IP地址的构成是子网划分的结果,是为了提高一台主机查找到另一台主机的效率
(因为要在学校里快速的能够进行消息的通知,就需要把每个院都有自己的群,为了更好管理,就要带上学号)

IP地址的划分

IP地址被分为两部分
网络号:保证相互连接的两个网段具有不同的标识
(每一个学院,院号之间彼此之间不能一样,用院号区分不同的学院)

主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
(张三、王五是同学,大家都在计算机学院内,但是学号是不同的)

子网划分

根据IP地址,把整个IP地址划分成了五类

由于只有A类的第一个比特位为0,证明是A类
A类网络 最多有 2 ^ 7个网络,每个网络中会有2 ^ 24个主机

B类网络的第一个比特位为1,证明不是A类,第二个比特位为0,证明是B类
B类网络最多有 2 ^ 14个网络,每一个网络中有2 ^ 16个主机

C类网络的第一个比特位为1,证明不是A类,第二个比特位为1,证明不是B类,第三个比特位为0,证明是C类
C类网络最多有 2 ^ 21个网络,每一个网络中有2 ^ 8个主机

若将B类网络申请完了,很难将B类网络中的2 ^ 16个主机用完,并且别人也用不了,就会浪费掉


CIDR的提出

所以就在原有方案的基础上,提出了新的改良方案,称为 CIDR

引入一个额外的子网掩码用于区分网络号和主机号
子网掩码是一个32位的正整数,通常用一串"0"来结尾(左边都是1,右边都是0)
将IP地址与子网掩码 进行 按位与 操作,得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

如何理解CIDR

IP地址只有2^32个,所以IP地址是有限的
为了更好理解,所以使用国家为单位划分IP


各个国家的前8位IP地址是不同的

每一个国家都有自己的国际路由器
每个国际路由器会有配置自己直连的国家网络对应的网络号
如:中国 的国际路由器会有配置自己直连的中国网络对应的网络号

为了能够称为全球互联网,所以将大家的国际路由器接入到同一个网络里,称为公网,由全球运营商共同搭建起来的


中国有很多省,其中以吉林省、辽宁省、黑龙江省为例

IP地址前8位表示国家 ,再取6位表示主机,共有32位,后面以 . 代表0


每个省之间都有跨省路由器,搭建公网,由国内运营商构建起来的


以吉林省举例,包含 长春市 吉林市,两者分别有自己的IP地址,并搭建公网


假设长春市有一家互联网公司,对外提供了一个网络服务,美国人想要访问
所以长春的这家公司就要有自己对外的IP地址


将1进制的2位看作1位,就是1字节 即 2.4.4.0/18 (长春市的网络号)
假设长春的这家公司的IP地址 为 2.4.4.23 (属于长春市其中的一家公司,所以有对应的主机号23)


若有个美国人想要访问长春这家公司对应的服务,美国人认为他们国家对应的网络开头为1…
由于2.4.4.23并不是美国的IP,所以就将该IP通过美国的路由器 交付给公网上
通过公网,转发到中国的路由器处

将2.4.4.23与 中国的子网掩码 0000 0010 按位与 得到网络号 2.0.0.0,证明是中国的


将2.4.4.23与吉林省的子网掩码 按位与 得到网络号是 2.4.0.0 ,而吉林省是2.4开头的, 证明是吉林省的
将2.4.4.23与长春市的子网掩码 按位与 得到网络号是 2.4.4.0 ,而长春市是2.4.4开头的,证明是长春市的

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

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

相关文章

OpenCV项目开发实战--主成分分析(PCA)的特征脸应用(附C++/Python实现源码)

什么是主成分分析? 这是理解这篇文章的先决条件。 图 1:使用蓝线和绿线显示 2D 数据的主要组成部分(红点)。 快速回顾一下,我们了解到第一个主成分是数据中最大方差的方向。第二主成分是空间中与第一主成分垂直(正交)的最大方差方向,依此类推。第一和第二主成分红点(2…

Crypto:一眼就解密

题目 根据题目给出的信息可知,flag的为base64编码,数字后面的可以知道为base64编码,解码可得

数据结构上机1

1、题目&#xff1a; 将1~10存入数组a[10]&#xff0c;并将其逆序输出 #define _CRT_SECURE_NO_WARNINGS 1 //(1) 将1~10存入数组a[10]&#xff0c;并将其逆序输出#include <stdio.h>int main() {int a[10];// 将1到10存入数组a[10]for (int i 0; i < 10; i){a[i] i…

蓝桥杯打卡Day15天

文章目录 买不到的数目错误票据 一、买不到的数目OJ链接 本题思路:引理&#xff1a;给定a&#xff0c;b&#xff0c;若dgcd(a,b)>1 ,则一定不能凑出最大数。结论&#xff1a;如果 a,b均是正整数且互质&#xff0c;那么由 axby,x≥0,y≥0 不能凑出的最大数是 ab−a−b。 证…

从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!

大模型已经成为未来技术发展方向的重大变革&#xff0c;热度之下更需去虚向实&#xff0c;让技术走进产业场景。在这样的背景下&#xff0c;百度智能云于近期发起了“百度智能云千帆大模型平台应用开发挑战赛”。 挖掘大模型落地应用 千帆大模型平台应用开发挑战赛启动 在不久前…

基于 CPU 在docker 中部署PaddleOCR

1. 拉取镜像 docker pull registry.baidubce.com/paddlepaddle/paddle:2.4.0注&#xff1a;写该文章时&#xff0c;Paddle 最新版本为2.5.1&#xff0c;但是在实际安装中会出现与 PaddleHub 2.3.1版本的冲突&#xff0c;故采用2.4.0版本 2. 构建并进入容器 docker run --name…

4年从外包到外企,一个测试老鸟的自述

4年前&#xff0c;我拖着行李箱来到北京&#xff0c;成为了一名北漂&#xff0c;离开了校园的庇护&#xff0c;只身一人&#xff0c;想要在这片陌生的地方闯出一番名堂&#xff0c;可最后却不得人意&#xff0c;面临着所有北漂群体的共同困局&#xff0c;没有归属感&#xff0c…

轻量服务器是不是vps ?和vps有什么区别

​  轻量型服务器是介于云服务器和共享型服务器之间的一种解决方案。它提供较为独立的资源分配&#xff0c;但规模较小&#xff0c;适用于中小型网站和应用程序。轻量型服务器的硬件资源来源于大型的公有云集群的虚拟化技术。轻量型服务器的性能和带宽可能会稍逊于云服务器。…

初识C语言——详细入门(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍&#xff1a; 特点&#xff1a; 基本构成&#xff1a; 二、认识C语言程序 标准格式&#xff1a; 简单C程序&#xff1a; 三、基本构成分类详细介绍 &#xff08;1&#xff09;关键字 &#xff08;2&#xf…

HDMI之HDCP 2.3

Authentication and Key Exchange Without Stored Km With Stored Km HDCP2Version DDC时序 协议截图 Bit2为1,可知DUT设备支持HDCP 2.2及以上版本 RxStatus DDC时序 协议截图 <

Nginx 默认location index设置网站的默认首页

/斜杠代表location定位的路径&#xff0c;路径当中最重要的字段就是root。 root默认值就是html&#xff0c;这个就是nginx安装路径下面的html文件夹作为root的路径。默认不配置就是root下面的内容&#xff0c;index指定了主页的内容。 [rootjenkins html]# echo test > te…

MySQL学习笔记9

MySQL数据表中的数据类型&#xff1a; 在考虑数据类型、长度、标度和精度时&#xff0c;一定要仔细地进行短期和长远的规划&#xff0c;另外&#xff0c;公司制度和希望用户用什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质&#xff0c;以及数据在数据库里是如…

PYQT制作动态时钟

所有代码&#xff1a; import sys from PyQt5.QtCore import Qt, QTimer, QRect from PyQt5.QtGui import QPixmap, QTransform, QPainter, QImage from PyQt5.QtWidgets import QApplication, QLabel from PyQt5 import uic import newdef adder():global iglobal angle_s, a…

数据结构的奇妙世界:实用算法与实际应用

文章目录 数据结构和算法的基本概念数据结构数组链表栈队列树图 算法 常见的数据结构和算法排序算法快速排序示例 数据结构的应用数据库管理系统图像处理网络路由 数据结构和算法的性能分析时间复杂度空间复杂度 如何更好地编写代码避免常见错误结论 &#x1f389;欢迎来到数据…

java框架-Springboot-快速入门

文章目录 组件注册条件注解属性绑定自动装配原理自定义组件yaml属性配置日志日志级别日志分组文件输出文件归档与文件切割自定义配置切换日志组合 组件注册 Configuration、SpringBootConfigurationBean、ScopeController、Service、Repository、ComponentImportComponentScan…

学术团体的机器人相关分会和机器人相关大赛的说明

1. 中国机械工程学会 &#xff08;机器人分会&#xff09; 2017年成立&#xff0c;地点 华中科技大学 &#xff1a;中国机械工程学会机器人分会在汉成立 (huanqiu.com) 链接&#xff1a;中国机械工程学会 (cmes.org) 侧重点&#xff1a;工业机械臂、工厂和物流相关的移动机…

用flex实现grid布局

1. css代码 .flexColumn(columns, gutterSize) {display: flex;flex-flow: row wrap;margin: calc(gutterSize / -2);> div {flex: 0 0 calc(100% / columns);padding: calc(gutterSize / 2);box-sizing: border-box;} }2.用法 .grid-show-item3 {width: 100%;display: fl…

【SpringBoot】-IDEA社区版SpringBoot项目的创建

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;IDEA下的springboot项目的创建&#xff0c;网页下springboot项目的创建。springboot目录结构的认识。 文章目录 一、什么是SpringBoot&#x…

【C++】STL之适配器---用deque实现栈和队列

目录 前言 一、deque 1、deque 的原理介绍 2、deque 的底层结构 3、deque 的迭代器 4、deque 的优缺点 4.1、优点 4.2、缺点 二、stack 的介绍和使用 1、stack 的介绍 2、stack 的使用 3、stack 的模拟实现 三、queue 的介绍和使用 1、queue 的介绍 2、queue 的使用 3、qu…

RabbitMQ实现秒杀场景示例

本文章通过MQ队列来实现秒杀场景 整体的设计如下图&#xff0c;整个流程中对于发送发MQ失败和发送到死信队列的数据未做后续处理 1、首先先创建MQ的配置文件 Configuration public class RabbitConfig {public static final String DEAD_LETTER_EXCHANGE "deadLetterE…