网络基础三——IP协议补充和Mac帧协议

全球网络及网段划分的理解

​ 根据国家组织地区人口综合评估进行IP地址范围的划分;

​ 假设前8位用来区分不同的国家,国际路由器负责全球数据传输,子网掩码为IP/8;次6位区分不同的省份,国内路由器负责全国数据的传输,子网掩码为IP/14,国际路由器也可以参与;再往后4位区分不同的市,由省内路由器负责全省的数据传输,子网掩码为IP/18;最后根据主机号形成一个完整的IP地址;

​ IP报文传输的过程中,通过IP目的地址和子网掩码不断地进行路由转发,最终发送到目标主机;公网IP地址会根据国家省市划分出不同的网段;在全国范围内通信是由运营商来进行维护的;

​ 一般网民使用的都是私有IP地址,而家用路由器是可以构建子网的;当普通人上网时,会将数据先传输到家用路由器,然后传输到运营商路由器,再传输到公网被接收,最后实现了通信;

​ 一个路由器是由至少两个IP地址的,一个用于子网内部路由LAN口IP,一个用于跨网络传输WAN口IP,家用路由器的WAN口IP就是运营商路由器构建的子网中的一个IP;每一个IP报文在传输时会先进行判断,如果目的IP是在子网内,源IP地址就会不会替换,如果要跨网络传输就需要将子网IP替换成WAN口IP;

​ 私有IP不断被替换的过程就是NAT技术;

通过公网 + 私有(可重复)构成了互联网

​ 当发送的目标IP是跨国的时候,运营商接收到报文就会丢掉,不允许发送出去;私有根据入网数量的多少,从高到低选用10.*,172.16.*,192.168.*的私有IP划分;

3.6路由

route
#查看路由表
#1.Destination,表示当前连接的网络号;
#2.Gateway,表示下一跳的路由器;
#3.Genmask,表示子网掩码;
#4.UG,U表示正在使用,G表示该条目是路由器;
#5.Iface,表示本地的网络接口,通过网络将数据报文发送出去;

在这里插入图片描述

​ 查询路由表的过程其实就是拿着目标主机的IP & Genmask 得到一个网络号,然后和Destination对比,如果是就使用对应的网络接口将数据发送出去并进入下一跳,否则继续向下查询路由表,如果都找不到就发送到默认路由器(同网段的可以跨网络传输的路由器);最终就会到达入口路由器;入口路由器到达目标主机使用Mac地址实现;

4.IP分片与组装

​ 实际上在一台主机中,报文并没有直接糖果网络层转发出去,而是继续交给了自己的下一层协议,最后查询路由表决定是发送给同网段主机还是路由器;

数据链路层一般不能发送过大的报文,所以要求上层不能一次交付过大的报文(TCP的发送缓冲区发送报文是一个一个进行);

ifconfig
#mtu表示的是Mac帧有效载荷最大是1500字节;

在这里插入图片描述

​ 如果I发送的IP报文过大就会在IP层进行分片转发,目标路由器收全之后就会进行组装形成一个完整的报文;

​ 在IP报头中具有相关切片和组装的字段;

在这里插入图片描述

16位标识,不同的IP报文对应的16位标识是不一样的,但是分片之后的报文16位标识是一样的;

3位标志,第1位不使用,第2位标志为0/1表示允许/不允许分片,第3位标志表示结束标志,当前是否是最后一个小包,0/1表示是/不是最后一个小包;

13位片偏移,原始报文被分成了若干片,表示此分片在原来报文的偏移量;

​ 当原始报文被分片后,每一个分片都要进行添加报头;对于分片的组装,先将具有相同16位标识的IP分片聚集在一起,然后根据片偏移将分片排序,最后完成组装;

​ 1.分片问题,一般报文片偏移量不为0,则说明报文被分片了,特殊第一个分片偏移量为0,但是它的第3位标志为1,表示此报文分片且不是报文结尾分片,如果两个都为0则说明是正常报文;

​ 2.分片丢失问题,如果丢失了第一个分片则因为所有的分片没有0,识别出第一个分片丢失;如果丢失了最后一个分片则因为没有一个第3位标志为0,被识别出最后一个分片丢失;当前分片的片偏移量与前一个分片的长度不一样时,则说明当前分片之前已经有报文分片丢失;

​ 解决上述问题就可以保证将所有的分片聚在一起,然后排序组装;其实一般是不建议IP报文进行分片的,因为只要有分片丢失,就会造成所有分片都被丢弃,重新发送所有切片,增加了丢包的概率;但是Mac帧规定了上层不能交付过大的报文,所以应该在传输层就保证数据报文较小;

二、以太网

​ 通过网络层判断是将数据报文发送到同网段的主机还是跨网络发送到下一跳;想要进行跨网络传输或者同网段主机间通信,就需要确保设备之间数据帧的传输;所以数据链路层解决的就是如何让直接相连的主机设备进行数据交付;

​ 每个主机除了要有公网或者私有IP地址之外,还需要有对应的网卡,而路由器则是有至少两张网卡,不同的网卡配对不同的IP就可以集连不同的网段;每一个网卡都对应着唯一的一个Mac地址;

​ ether以太网,表示的是48位的Mac地址;Mac地址的主要作用是区分同一子网中不同的主机;

1.Mac帧报文格式

在这里插入图片描述

​ 1.Mac帧报文通过使用定长报头进行解包和分用;

​ 2.Mac帧根据类型来进行分用,如:0800表示交付给IP协议,0806交付给ARP协议,8035交付给RARP协议;

数据大小范围,46-1500字节;

2.局域网通信的原理

​ 在局域网中的所以主机都可以收到发送到局域网的数据帧,但是通过对比Mac地址决定是丢弃数据帧还是接收数据帧;

​ 在局域网中是会存在数据碰撞问题的,需要使用碰撞避免算法减少碰撞次数,原理就是进行休眠,使得发送时间可以叉开,并且在休眠时其他主机可以发送数据帧;当检测到碰撞发生时,进行碰撞避免,之后进行数据帧的重发;

​ 局域网的特点是任何时间只能有一个主机发送数据帧,换句话说就是局域网是一个临界资源;

​ 一个主机要跨网络发送到远端主机就要通过路由器不断地路由到下一个网段;而经过路由器时会进行Mac帧的解包和重新封装;换句话说Mac帧只是在局域网中有效;

​ 主机数越多,发生碰撞的概率越大,所以需要增加交换机,进行碰撞域的划分,减少碰撞的发生;1.如果发生了碰撞,通信双方主机进行了休眠,交换机识别到了此碰撞域的不发送数据,就可以让其他碰撞域的主机进行发送数据帧;2.检测到不是跨碰撞域的通信,变相地减少了其他碰撞域发生碰撞的概率;3.跨碰撞域的通信就和原来进行的局域网通信是一样的,只不过多经过了交换机设备;单次发送的数据帧尽量不要太大,否则会使得与局域网通信的时间变长,导致发生碰撞的可能性增加;

​ Mac帧协议为了减少碰撞概率,所以要求上层IP协议发送的IP报文不能过大,可以进行IP分片,但是分片增大丢包概率所以不建议分片,这时候就需要上层TCP协议来保证数据段小一些,使得IP报文小,进而使得Mac帧小;如:TCP和IP都使用标准报头20字节,则TCP单次发送的数据段的有效载荷最多只有1460字节;1460字节就是MMS(max segment size),要求TCP的发送缓冲区要分割成一个一个的数据段;

​ MMS是TCP的一个方案,数据链路层的方案是MTU(max transmisson unit),有效载荷最大为1500字节,1500字节为MTU;

​ 由于设备的差异MMS和MTU可能不一样,还是会出现分片的情况,所以需要通信双方协商,使得MMS尽量保持一致;即TCP通信时会进行三次握手,协商MMS,取较小值为最终的MMS;

3.跨网络通信

​ 所谓的跨网络传输实际上就是连续多个子网路由实现;最终路由到入口路由器时要进行,解包和重新封装,封装时需要知道目标主机的Mac地址;目标主机的Mac地址是未知的,所以需要使用ARP协议(局域网协议,划分在了数据链路层)将目标主机的IP地址转换成Mac地址;

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

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

相关文章

jvm调优案例分析-window通过jstack查找死锁的进程

我们经常会遇到java程序遇死锁的问题,也会经常遇到。 案例 以下是案例代码: package com.dzend.mall.order;public class JstackLockDemo {public static final int initData 666;public static User user new User();public int compute(){int a1;i…

Window安装PostgresSQL

PostgreSQL 安装参考:Windows下安装PostgreSQL_window 安装postgresql-CSDN博客 安装好后打开pgAdmin4 配置Navicat连接PostgresSQL 找到安装目录文件 pg_hba.conf 修改配置增加: 修改前: # TYPE DATABASE USER ADDRES…

登录压力测试

目录 一、准备测试数据 1.1数据库存储过程添加数据 1.2导出为csv作为测试数据(账号、密码) 二、使用fiddler抓包查看接口 2.1.抓到相关接口信息 2.2添加线程组和http请求 2.3将前面接口需要的参数去json格式化 ​2.4填写相关信息 ​ 2.5添加http…

vue canvas绘制信令图,动态显示标题、宽度、高度

需求: 1、 根据后端返回的数据,动态绘制出信令图 2、根据 dataStatus 返回值: 0 和 1, 判断 文字内容的颜色,0:#000,1:red 3.、根据 lineType 返回值: 0 和 1, 判断 箭…

20240309web前端_第三周作业_教务系统页面

作业&#xff1a;教务系统页面 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…

Verilog实现手表计时

实现手表的计时功能&#xff1a; 1.具有start启动信号、pause暂停信号&#xff0c;可以自定义其触发机制。 2.具有时间更改接口&#xff0c;可以更改时、分、秒。 3.输出时、分、秒。 Verilog设计 模块端口定义&#xff1a; module watch1(input wire clk …

STC89C52学习笔记(七)

STC89C52学习笔记&#xff08;七&#xff09; 综述&#xff1a;本文介绍了串口以及讲述了串口相关寄存器如何配置并给予相关代码。 一、修改代码注意事项 在修改代码时不要一次性加入一堆代码&#xff0c;不利于定位错误。可以先注释一些代码&#xff0c;待解决完毕问题后再…

Angular 使用DomSanitizer

跨站脚本Cross-site scripting 简称XSS&#xff0c;是代码注入的一种&#xff0c;是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在使用网页时就会收到影响&#xff0c;这类攻击通常包含了HTML和用户端脚本语言&#xff08;JS&…

ES6基础(JavaScript基础)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. ECMAScript介绍 ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;英文名称是European Computer Manufacturers Association&#xff09;通过ECMA-262标准化的脚本程序设计语言…

基于拉格朗日分布算法的电动汽车充放电调度MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 程序简介 该模型主要做的是基于拉格朗日分布算法的电动汽车充放电调度模型。利用蒙特卡洛模拟法模拟出电动汽车负荷曲线&#xff0c;并求解出无序充电功率曲线和有序充电曲线&#xff0c;该模型在电动汽车个…

逆向案例十六——简单webpack逆向,财联社信息

网址链接&#xff1a;财联社A股24小时电报-上市公司动态-今日股市行情报道 数据包sign参数为加密&#xff0c;可以直接搜索找参数的位置&#xff0c;搜索不到的情况下&#xff0c;在断点跟栈&#xff1a; 确定js文件所在位置&#xff0c;并打上断点。 点击加载刷新页面。可以发…

REST API实战演练之JavaScript使用Rest API

咱们前面讲了一下如何创建REST API 假期别闲着&#xff1a;REST API实战演练之创建Rest API-CSDN博客 又讲了java客户端如何使用REST API 假期别闲着&#xff1a;REST API实战演练之客户端使用Rest API-CSDN博客 接下来咱们看看JavaScript怎么使用REST API。 一、新建一个…

Log4J2漏洞(CVE-2024-44228)原理_log4j2漏洞原理,网络安全面试项目

Apache log4j2-RCE 漏洞 一、漏洞简介 二、漏洞原理 三、靶场漏洞复现 四、总结 Apache log4j2-RCE 漏洞 一、漏洞简介 Apache Log4j2是一个基于Java的日志记录工具&#xff0c;当前被广泛应用于业务系统开发&#xff0c;开发 者可以利用该工具将程序的输入输出信息进行日…

Feature Pyramid Networks for object detection

FPN 总述1.引言2.相关工作3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 4. 应用用于 RPN用于 Fast R-CNN 核心代码复现FPN网络结构ResNet Bottleneck完整代码 总述 下图中&#xff0c;蓝色边框表示的是特征图&#xff0c;边框越粗表…

在Ubuntu Linux中安装boost库详细步骤

下载boost安装包 在Linux浏览器 Boost C Libraries 下载boost的最新版安装包 安装包解压缩 在安装目录中找到压缩包&#xff0c;右键点击压缩包&#xff0c;点击Extract to...解压缩至选择的目录 设置编译器 在解压缩后的目录中进入终端&#xff0c;运行命令&#xff1a; 如…

LeetCode 2529. 正整数和负整数的最大计数——每日一题

上一篇博客&#xff1a;LeetCode 993. 二叉树的堂兄弟节点——每日一题 写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.…

力扣121. 买卖股票的最佳时机

Problem: 121. 买卖股票的最佳时机 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义一个int数组max大小同prices&#xff1b;定义int变量curMax初始化为0&#xff1b; 2.从后往前遍历数组&#xff0c;若当前元素prices[i] > curMax时&#xff0c;则使将其赋值给curMa…

43.基于SpringBoot + Vue实现的前后端分离-疫苗发布和接种预约系统(项目 + 论文)

项目介绍 本次使用Java技术开发的疫苗发布和接种预约系统&#xff0c;就是运用计算机来管理疫苗接种预约信息&#xff0c;该系统是可以实现论坛管理&#xff0c;公告信息管理&#xff0c;疫苗信息管理&#xff0c;医生管理&#xff0c;医院信息管理&#xff0c;用户管理&#x…

【ensp】VLAN间通信的解决办法

目录 VLAN间通信简介 VLAN间通信的两种方式 借助三层设备路由器进行VLAN间的通信&#xff08;也就是单臂路由&#xff09; 在端口上创建子接口之后为什么需要开启arp广播&#xff0c;是因为他是子接口吗? 拓扑图 交换机配置 路由器配置 查看路由器配置 测试能否实现…

python统计分析——线性相关

参考资料&#xff1a;python统计分析【托马斯】 对于两个相关的变量&#xff0c;相关性度量的是两个变量之间的关联程度。相反&#xff0c;线性回归是用一个变量的值来预测另一个变量的值。 1、相关系数 两个变量之间的相关系数回答了这个问题&#xff1a;“这两个变量有关系吗…