IP协议(2) 和 数据链路层协议基础

IP协议续

1.路由选择

在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择

举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地

路由的过程,其实就是样子问路的过程

1.当IP数据包到达路由器的时候,会查看目的IP

2.路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个服务器(查询路由表)

3.依次反复,知道到达目的IP地址

如何判定数据包应该发到哪里??

这就依赖路由器存储了一个路由表结构,能找到路线就直接发送,否则按照默认发送

IP地址

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

教材上经常说分为ABCDE五类地址,实际上现在已经取消了这种叫法了

 

因为这种方案的局限性太大了,A类和B类这样的地址能存放的主机数太多了,实际上根本不可能有这么大的局域网,这么多的主机,这样就浪费了很多IP地址

于是人们提出了新的划分方案,称之为 CLDR

1.引入一个子网掩码来区分网络号和主机号

2.子网掩码也是一个32位的正整数 通常用 0 结尾

3.将IP地址和子网掩码进行按位与得到的就是网络号

4.网络号和主机号的划分和ABC类地址无关

例:子网掩码  255.255.255.0     8位子网掩码

网络号 140.205.20.0  

这里能表示的地址范围就是 140.202.20.0 - 140.202.25.255

;

特殊IP地址

127.0.0.1  常用的测试IP地址,表示本机 (本机环回测试)

其实127.*都可以表示本机IP

每个网段的1 和 255 的地址是不可用的

1代表该网段

255代表广播地址(一对多)

数据链路层

1.以太网数据帧格式

以太网数据帧的数据格式很简单

这里数据链路层也搞了一套地址体系

MAC地址    一个主机只能有一个MAC地址,相当于身份证号,出厂即有

MAC地址和IP地址的区别:

MAC地址侧重于局部的转发(相邻设备)

IP地址侧重于全局的转发

举个例子

我现在想从这个路线走

南京 -> 西安 -> 四川

南京 - > 西安

源IP   南京  目的IP    四川

源mac   南京  目的 mac   西安

西安 -> 四川 

源IP  南京  目的 IP  四川

源mac  西安 目的mac   四川

1.目的地址      需要发送到的MAC地址

2.源地址          发送的源地址

3.类型              分为几种类型     

                         类型 0800 + 数据报(16-1500字节) 可能是syn这样的特殊报文也可能是正常                             的业务数据

                         类型0806   ARP 请求/应答 + PAD

                         类型8035 RARP请求/应答 + PAD

ARP协议和RARP协议是两个横跨数据链路层和网络层的协议

主要进行IP和MAC地址之间的转换

RARP则是转换回IP地址,类似于hash表的结构(转发表不是路由表)

转发表:一个设备和哪些设备是连接的

4.CRC             校验和,和之前的一样,是为了检验数据传输途中有没有发生比特翻转

注:这里载荷的部分有一个特殊的要求:最短是46字节最长是1500字节

原因:受限于物理设备

46字节是因为ARP是46字节

1500字节的上限就取决于以太网的网口,网线等硬件设备 也称之为 MTU

所以IP数据包的拆包往往是因为这个MTU的限制导致的,而不是64KB的上限导致的

以太网是如此,但是还有其他的传输协议,所以MTU并不是固定1500的

DNS(域名解析系统)

通过IP地址来描述网络设备的位置

这里域名就是一个更好记的网址 ,用其来代表IP地址,方便记忆

很久以前是引入的hosts文件,类似于哈希表,每次访问域名就会获取查询

随着互联网发展的越来越快,维护hosts表就很麻烦了,此时就有大佬搭建了一个(DNS服务器),查询到的结果就是域名对应的IP

由于全世界都得上网,对于根域名服务器来说压力太大了,此时我们就在各国搞一个镜像,分别为每个国家的顶级DNS服务器,然后再进行分级管理,每次用户访问就就近访问即可.

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

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

相关文章

Jmeter高级使用

文章目录 JMeter之计数器JMeter之集合点JMeter之断言JMeter之动态关联后置处理器:正则表达式提取器 JMeter之分布式测试JMeter之组件执行顺序元件的作用域元件的执行顺序配置元件Http Cookie管理器 多协议接口的性能测试Debug采样器Http请求中文乱码的解决Post参数设…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)

专属领域论文订阅 关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 为了答谢各位网友的支持,从今日起…

Java_简单模拟实现ArrayList_学习ArrayList

文章目录 一、 了解线性表和顺序表区别1.线性表2.顺序表 二、模拟实现1.定义接口2.定义MyArrayList3.成员变量以及构造方法4.实现打印数组5.实现add方法6.实现查找某个数是否存在contains或者某个数的下标indexOf7.获取或更改pos位置的值 get和set8.获取数组大小 size9.删除某个…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…

循环神经网络RNN专题(01/6)

一、说明 RNN用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&a…

【演讲比赛流程管理系统(C++版)】

一、演讲比赛程序需求 1.1、比赛规则 学校举行一场演讲比赛,共有12个人参加。比赛共两轮,第一轮为淘汰赛,第二轮为决赛 每名选手都有对应的编号,如10001~10012 比赛方式:分组比赛,每组6个人 第一轮分为两个小组&a…

【深度测试】如何分析脚本以及对脚本进行测试

线上会存在一种任务,定时或者手动出发,我们称之为“脚本”,也可以称之为“job” 一、脚本的特性 无过程:只有开始和结束,过程迅速且黑盒。无交互:脚本处理的业务场景都几乎没有交互,只有数据被…

算法篇之二分

二分算法简介 特点 最简单的一种算法,也是最恶心,细节最多,最容易写出死循环的算法时间复杂度O(logN) 如何学习 明白其中的算法原理,二分并不是只有数组有序的的时候使用,而是看是否具有二段性。模板 朴素的二分模…

TCP TIME_WAIT 过多怎么处理

文章目录 1.什么是 TCP TIME_WAIT?2.为什么要 TIME_WAIT?3.TIME_WAIT 过多的影响4.解决办法4.1 调整短连接为长连接4.2 调整系统内核参数 5.小结参考文献 1.什么是 TCP TIME_WAIT? TCP 断开连接四次挥手过程中,主动断开连接的一方&#xff…

BeanFactory创建过程(基于Servlet)

BeanFactory创建过程(基于Servlet) 1. 概述1.2 那么问题就来了1.2.1 谁负责AnnotationConfigServletWebServerApplicationContext实例呢?1.2.2 ApplicationContextFactory初始化过程又是怎么样的? 1.3 总结 2. 最后 1. 概述 Anno…

什么可以用手机蓝牙控制LED???#串口通信【下】

什么可以用手机蓝牙控制LED???#串口通信【下】 前言预备知识1.小白玩串口控制的ASSII避坑1.1问题引入1.2解决问题 2.串口支持单词型指令控制2.1实现串口支持单词型指令控制的核心思路2.2利用字符数组来承接单词型指令2.3利用strstr函数来查找…

【Time Series】LSTM代码实战

一、简介 还是那句话,"时间序列金融"是一个很有"钱"景的话题,还是想尝试采用Stock时间序列预测任务DeepLearning。本文提供了LSTM预测股票的源代码。 二、算法原理 长短期记忆网络(LSTM)是一种特殊的循环神经…

如何衡量代码的复杂度

圈复杂度概要 最近的培训中了解到了一个概念,叫做圈复杂度。 圈复杂度(Cyclomatic Complexity)是一种衡量程序复杂度的度量方法。它由美国计算机科学家 Thomas J. McCabe 在 1976 年提出。圈复杂度通过统计程序的控制流图中的决策结构&…

linux有关安全的几个基本配置,禁止root登录,新建root权限账号

一、不安装多余的软件,能最小化安装就不要安装图形化界面,然后根据需求安装需要的软件。 二、防火墙要启用,如果您的这台服务器对外有服务只要放开服务就好了,就是说白了白名单,切忌一上来第一件事儿就是关闭防火墙&a…

Mobileye CES 2024 自动驾驶新技术新方向

Mobileye亮相2024年国际消费类电子产品展览会推出什么自动驾驶新技术? Mobileye再次亮相CES,展示了我们的最新技术,并推出了Mobileye DXP--我们全新的驾驶体验平台。 与往年一样,Mobileye是拉斯维加斯展会现场的一大亮点,让参观…

一文读懂Prodigal教程

2.prodigal教程 2.1 介绍 Prodigal 由橡树岭国家实验室和田纳西大学诺克斯维尔分校于2007年在能源部联合基因组研究所的主持下联合开发,是一种用于细菌和古细菌基因组的蛋白质编码基因预测软件工具,Prodigal 已成为世界上最受欢迎的微生物基因预测算法…

day28 节点操作——克隆节点、删除节点

目录 克隆节点删除节点 克隆节点 特殊情况下新增节点按以下操作: 复制一个原有的节点把复制的节点放入到指定的元素内部 克隆节点 元素.cloneNode(布尔值) cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值 若为true,则代表克隆时…

Vue3批量异步更新是如何实现

文章目录 一、什么是调度执行二、如何实现可调度?三、批量更新 & 异步更新四、Vue原理五、最后 一、什么是调度执行 多次修改数据(例如自身num10次),只进行一次页面渲染(页面只会渲染最后一次num10) 指的是响应式数据发生变化…

C++ copy()函数详细介绍

copy() 是一个标准库函数,位于 头文件中。它用于将一个容器中的元素复制到另一个容器中,或者将一个范围内的元素复制到另一个范围中。 函数参数介绍 copy( first, last, d_first );first 和 last:表示输入范围的迭代器。 first 指向要复制的…

centos7 安装 java17 安装 idea

删除旧版本的java或者说是自带的,免得干扰 查找java [wanglcentos7 java]$ rpm -qa|grep javajava-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch …