网络层(IP层)

IP协议的本质:有将数据跨网络传输的能力

而用户需要的是将数据从主机A到主机B可靠地跨网络传输

IP的组成:目标网络+目标主机 

IP由目标网络和目标主机两部分组成,IP报文要进行传输,要先到达目标网络,然后经过路由器转到目标主机。在转发之前,每台主机都有自己的IP地址,注意,只有联网的主机才会有IP地址。

IP协议报头格式

  • 4位版本:指定IP协议的版本。若是IPv4,就是4
  • 4位首部长度:报头加上选项的长度。IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节
  • 8位服务类型:3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位
  • TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个。
  • 16位总长度:IP数据报的总体大小。
  • 16位标识:唯一的标识主机发送的报文. 如IP报文因太大在数据链路层被分片了, 那么每一个片里面的这个id都是相同的.
  • 3位标志:第一位弃用,第二位若为0表示允许分片,第三位表示结束标记,若是为0,否则为1。
  • 13位片偏移:是分片相对于原始IP报文开始处的偏移.
  • 8位生存时间: 数据报到达目的地的最大报文跳数. 一般是64.  这个字段主要是用来防止出现路由循环
  • 8位协议: 表示上层协议的类型
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
  • 32位源地址和32位目标地址: 表示发送端和接收端.

 若收到IP报文,如何分离报头和有效载荷

首先,16位总长度表明了IP报文的总长度,其次,4位首部长度则表明了IP报头和选项的长度,IP报头的标准长度是20字节。

 关于路由器

  •  路由器的本质是特定子网的主机,可以配置IP地址
  • 路由器由于要跨网络传输,那么他一定至少要连接两个子网,相当于她在两个子网上,因此可以配置多个IP
  • 路由器一般是一个子网的第一台设备,其IP地址一般位:网络号.1
  • 路由器的功能:转发IP报文,构建子网(局域网)

网段划分

IP地址分为网络号和主机号

  • 网络号: 保证相互连接的两个网段具有不同的标识;
  • 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
  • 不同的子网其实就是把网络号相同的主机放到一起.
  • 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复

 IP地址是一种有限的资源,通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的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

 但是随着网络的发展,这种方法就出现了一些局限性——浪费,因此就提出了另一种方法——CIDR.

  •  引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
  • 子网掩码也是一个32位的正整数. 通常用一串 "0" 来结尾;
  • 将IP地址和子网掩码进行 "按位与" 操作, 得到的结果就是网络号;
  • 网络号和主机号的划分与这个IP地址是A类、B类还是C类无关;
  • 主机号全0为网络号,全1为广播地址
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1

IP地址按位与子网掩码得到网络号: 

公有网络和私有网络

IPv4是4字节32位的正整数,也就是2的32次方个地址,大约是43亿,而tcp/ip规定,每个主机都要有自己的IP地址,但随着网络的发展,IP地址远远不够。CIDR虽然在一定程度上缓解了IP地址的不足,提高了IP地址的利用率,但是IP地址的数量并没有增加。

要想解决以上IP地址不足的问题,有三种解决方法。

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

目前我国采用的是动态分配IP地址和NAT技术,接下来介绍一下NAT技术是怎么运行的。然而在此之前,要先介绍一下公有网络和私有网络。

  • 公有网络:上述讲述的5类IP地址
  • 私有网络:只在局域网中通信的地址,不直接与Internet相连

   RFC 1918规定了用于组建局域网的私有IP地址

  • 10.*,前8位是网络号,共16,777,216个地址
  • 172.16.到172.31.,前12位是网络号,共1,048,576个地址
  • 192.168.*,前16位是网络号,共65,536个地址
  • 包含在这个范围中的, 都称为私有IP, 其余的则称为全局IP(或公网IP);

NAT技术

由于分配给我国的公有IP地址太少(本质)-,因此我们都是采用私有IP地址来上网,但是私有IP不能与Internet直接连接,一旦我们要访问公有IP,就要通过NAT技术将私有IP和公有IP相互转换。

源NAT

当我们访问公有IP时,我们本身是私有IP,因此,就需要对源IP进行IP转换。所以当私网用户主机访问Internet时,私网用户主机发送的报文到达NAT设备后,设备通过源NAT技术将报文中的私网IPv4地址转换成公网IPv4地址,从而使私网用户可以正常访问Internet

 目的NAT

我们对公有IP发起网络请求后,公有IP需要对我们的报文做出应答,此时,报文的源IP就变成了公有IP,而目的IP则变成了我们,但是私有IP不能上网,因此当公网用户主机发送的报文到达NAT设备后,设备通过目的NAT技术将报文中的公网IPv4地址转换成私网IPv4地址,从而使公网用户可以使用公网地址访问私网服务。

 路由器

当源主机向不在同一个局域网中目的主机发送IP报文时,都需要先发送给路由器。前面提到,目标主机IP按位与上路由表中的地址掩码可以得到网络号,也就是dst_IP&Genmask==destination。

 而当得到网络号之后,则要进行查路由表的结果。无非是具体下一跳,无匹配,转默认路由,以及到达入口路由器。

下面举一个例子:

假设某主机上的网络接口配置和路由表如下

  •  这台主机有两个网络接口,一个网络接口连到192.168.10.0/24网络,另一个网络接口连到192.168.56.0/24网络;
  • 路由表的Destination是目的网络地址,Genmask是子网掩码,Gateway是下一跳地址,Iface是发送接口,Flags中的U标志表示此条目有效(可以禁用某些 条目),G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发

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

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

相关文章

保研复习概率论1

1.什么是随机试验(random trial)? 如果一个试验满足试验可以在相同的条件下重复进行、试验所有可能结果明确可知(或者是可知这个范围)、每一次试验前会出现哪个结果事先并不确定,那么试验称为随机试验。 …

利用 Claude 3 on Amazon Bedrock 和 Streamlit 的“终极组合”,开发智能对话体验

概述 通过本文,您将学会如何利用 Streamlit 框架快速搭建前端交互界面。该界面将集成图像上传功能,让用户可以方便地提交待处理图片。在后端,我们将借助 Amazon Bedrock 的 Message API,调用 Claude 3 家族中的 Sonnet 模型对图像…

代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…

Kafka生产者相关概念

文章目录 Kafka工作流程Kafka文件存储生产者分区策略生产者ISR生产者ack机制数据一致性问题ExactlyOnce Kafka工作流程 Kafka中消息是以topic进行分类的&#xff0c;Producer生产消息&#xff0c;Consumer消费消息&#xff0c;都是面向topic的。 Topic是逻辑上的概念&#xff…

Qt 压缩/解压文件

前面讲了很多Qt的文件操作&#xff0c;文件操作自然就包括压缩与解压缩文件了&#xff0c;正好最近项目里要用到压缩以及解压缩文件&#xff0c;所以就研究了一下Qt如何压缩与解压缩文件。 QZipReader/QZipWriter QZipReader 和 QZipWriter 类提供了用于读取和写入 ZIP 格式文…

SpringCloud Gateway工作流程

Spring Cloud Gateway的工作流程 具体的流程&#xff1a; 用户发送请求到网关 请求断言&#xff0c;用户请求到达网关后&#xff0c;由Gateway Handler Mapping&#xff08;网关处理器映射&#xff09;进行Predicates&#xff08;断言&#xff09;&#xff0c;看一下哪一个符合…

2024年C语言最新经典面试题汇总(11-20)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

深度学习 线性神经网络(线性回归 从零开始实现)

介绍&#xff1a; 在线性神经网络中&#xff0c;线性回归是一种常见的任务&#xff0c;用于预测一个连续的数值输出。其目标是根据输入特征来拟合一个线性函数&#xff0c;使得预测值与真实值之间的误差最小化。 线性回归的数学表达式为&#xff1a; y w1x1 w2x2 ... wnxn …

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接&#xff1a;2549. 统计桌面上的不同数字 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这是一个很简单的数学问题&#xff1a; 当n 5时&#xff0c;因为n % 4 1&#xff0c;所以下一天4一定会被放上桌面 当n 4…

TnT-LLM: Text Mining at Scale with Large Language Models

TnT-LLM: Text Mining at Scale with Large Language Models 相关链接&#xff1a;arxiv 关键字&#xff1a;Large Language Models (LLMs)、Text Mining、Label Taxonomy、Text Classification、Prompt-based Interface 摘要 文本挖掘是将非结构化文本转换为结构化和有意义的…

QT(C++)-error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”

1、项目场景&#xff1a; 在VS中采用QT&#xff08;C&#xff09;调试时&#xff0c;出现error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”错误 2、解决方案&#xff1a; 在“解决方案资源管理器”中选中出现此类BUG的项目&#xff0c;右键-…

【NLP笔记】预训练+微调范式之OpenAI Transformer、ELMo、ULM-FiT、Bert..

文章目录 OpenAI TransformerELMoULM-FiTBert基础结构Embedding预训练&微调 【原文链接】&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 【本文参考链接】 The Illustrated BERT, ELMo, and co. (How NLP Cracked Tra…

提面 | 面试抽题

学习到更新日期面试抽题-1.2案例分析的思维本质2024-3-23 1提面抽屉论述问题的分类 1.1案例分析占总论 1.2案例分析的思维本质

计算机网络相关

OSI七层模型 各层功能&#xff1a; TCP/IP四层模型 应用层 传输层 网络层 网络接口层 访问一个URL的全过程 在浏览器中输入指定网页的 URL。 浏览器通过 DNS 协议&#xff0c;获取域名对应的 IP 地址。 浏览器根据 IP 地址和端口号&#xff0c;向目标服务器发起一个 TCP…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——离散粒子群算法(DPSO)

基于python语言&#xff0c;采用经典离散粒子群算法&#xff08;DPSO&#xff09;对 需求拆分车辆路径规划问题&#xff08;SDVRP&#xff09; 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作&#xff0c;目前已…

linux文本三剑客 --- grep、sed、awk

1、grep grep&#xff1a;使用正则表达式搜索文本&#xff0c;将匹配的行打印出来&#xff08;匹配到的标红&#xff09; 命令格式&#xff1a;grep [option] pattern file <1> 命令参数 -A<显示行数>&#xff1a;除了显示符合范本样式的那一列之外&#xff0c;并…

C语言中的联合体和枚举

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外&#xff0c;联合体的创建语法形式和结构体的很相似&#xff0c;如果不熟悉结构体的创建&#xff0c;可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

Personal Website

Personal Website Static Site Generators hexo hugo jekyll Documentation Site Generator gitbook vuepress vitepress docsify docute docusaurus Deployment 1. GitHub Pages 2. GitLab Pages 3. vercel 4. netlify Domain 域名注册 freessl 域名解析域名…

【GUI】自动化办公

目录 一、GUI介绍 二、环境安装 三、鼠标移动操作 四、鼠标点击操作 五、拖动鼠标 六、鼠标滚动操作 七、屏幕快照&图像识别基础 7.1 屏幕快照&#xff08;截图&#xff09; 7.2 图像识别 八、键盘控制 一、GUI介绍 GUI自动化就是写程序直接控制键盘和鼠标。这些…

电脑如何关闭自启动应用?cmd一招解决问题

很多小伙伴说电脑刚开机就卡的和定格动画似的&#xff0c;cmd一招解决问题&#xff1a; CtrlR打开cmd,输入&#xff1a;msconfig 进入到这个界面&#xff1a; 点击启动&#xff1a; 打开任务管理器&#xff0c;禁用不要的自启动应用就ok了