当前位置: 首页 > news >正文

Linux-网络层IP协议、链路层以太网协议解析

目录

  • 网络层:
    • IP协议
    • 地址管理
    • 路由选择
  • 链路层

网络层:

网络层:负责地址管理与路由选择 — IP协议,地址管理,路由选择

IP协议

数据格式
4位协议版本:4-ipv4协议版本
4位首部长度:以4字节为单位
8位服务类型:3位优先权弃用,4位TOS,1位固定为0
16位数据报长度:IP报文最大大小64k;udp报文中数据最大大小 < 64k-28
16位分片标识:udp报文大小大于MTU但是小于64k-18,则会在网络层进行数据分片,将一个完整的大的报文分割成为多个小的数据分片,封装IP报头进行传输;TCP的传输不会再网络层进行数据分片,tcp再三次握手阶段就会双方协商mss(最大数据段大小)网络通信时,数据大小都不会大于mss,而mss就是根据mtu计算出的最合适的数据传输大小。
16位分片标识:标识当前分片属于哪个报文
3位分片标志:1位保留,1位禁止分片
13位分片偏移:多个数据分片在对端会进行分片重组,而分片偏移就是用于标识当前分片再原始报文中的位置(相对于起始位置的偏移量)。13个比特位最大数字:8192,无法在64k报文中标识偏移量,因此分片偏移是以8字节为单位的。
8位TTL:报文生存周期 – 当前默认是64/128,每经过一次路由转发就会-1,为0时,则将数据丢弃。
8位上层协议:当前数据所使用协议 – 用于数据分用时选择解析协议
16位校验和:校验数据一致性
32位源端-对端IP地址:描述通信两端主机
0~40的选项数据:保存一些路由信息…
-在这里插入图片描述

地址管理

地址管理
IP地址的管理是按照网络进行管理的(大的网络也是由许多小网络组成)
IP地址组成:192.168.2.13
网络号:是一个网络的标识,一个网络中分配的地址都拥有相同的标识
只要保证每个网络的网络好不同,则每个网络分配的IP地址不会冲突
主机号:在一个网络内主机的标识
网段的划分
A:高1位固定为0,7位网络号,24位主机号
A类网络,网络号范围:0~127;每个网络拥有256256256个主机
B:高2位固定10,14位网络号,16位主机号
B类网络,网络号范围128.0~191.255
C:高3位固定110,21位网络好,8位主机号
C类网络,网络号范围192.0.0~223.255.255;每个网络拥有256主机
当前划分-CIDR:在早期基础上,使用子网掩码进行更细致的网络划分
子网掩码:无符号4字节整数,必须由连续的二进制1组成
1.子网掩码取反可以得到一个网络最大的主机号
最大主机号+1就是子网中的主机号个数
192.168.2 子网掩码:255.255.255.240,取反后前三个为0,最后一个00001111,为15,因此在该网络中能分配的IP范围是192.168.2.0~192.168.2.15
2.子网掩码与IP地址相与,可以得到网络号。与相邻网络的子网掩码逐个相与判断当前目标地址属于哪个网络
举例:有一个公司,申请了一个C类网络号1992.58.45.0,公司由四个部分,需要将这个C类网络平均划分为四个子网,请问如何划分,每个子网的子网掩码是多少,IP地址分配范围是多少,网络号是多少?
解答:这是C类网络,拥有256个主机号,平均划分四个子网,则每个子网拥有64个主机号,0~63,子网掩码是63取反,得到子网掩码:255.255.255.192
即四个子网为:
192.58.45.0~192.58.45.63;255.255.255.192;192.58.45.0
192.58.45.64~192.58.45.127;255.255.255.192;192.58.45.64
192.58.45.128~192.58.45.191;255.255.255.192;192.58.45.238
192.58.45.192~192.58.45.255;255.255.255.192;192.58.45.192

特殊的IP地址
0.0.0.0 – 可被识别为本机任意网卡IP地址 - 常用于服务器绑定监听地址
255.255.255.255全网广播地址
127.0.0.1:每个主机的虚拟回环网卡的地址 – 进行本地网络回环测试
主机号全为0的IP地址:就是网络号 – 不能分配给某个主机
主机号全为1的IP地址:UDP局域网广播地址 — 不能分配给某个主机
一个网络内所能分配的主机号个数是总的个数-2

公网与私网:外网与内网
公网/外网:通常是我们所说的互联网
私网/内网:一个组织所建立的内部私有网络(无法直接与外部通信)
私网内部的主机,如果仅是私网内部通信,则没有什么特殊的
如果私网内部主机想要向外通信,最终实际上使用的是私网对外的这个公网网卡进行的。
私网内的多个主机对外通信,都是用的是同一私网对外的IP地址,因此组建私网可以节省大量的公网IP地址
主要因为不同的私网可以使用相同的私网IP地址而不冲突,因为私网内部主机对外通信时使用的是不同的对外公网IP
组建私网的IP地址与公网中的IP地址不能重复:组建私网的IP地址是有固定地址的,这些地址不会再公网中被使用:10.*.*.*:大型私网;172.16.*.*~172.31.*.*:中型私网;192.168.*.*:小型私网

路由选择

路由选择:在复杂的网络环境中为每一条数据选择合适的路径进行转发
路由表:每个路由器上都会拥有的一个信息
Destination:目标网络号
Gateway:网关地址
Genmask:子网掩码
Iface:连接这个网络的网卡

链路层

链路层:负责相邻设备之间的数据传输
以太网协议:ehternet
协议格式:
48位源端-对端mac地址:识别指定相邻设备
mac地址:uint8_t mac[6] – 网卡的物理硬件地址–出厂时设定
16位协议类型:用于数据分用时上层解析协议的选择
32位数据帧尾:校验和进行差错校验

在这里插入图片描述

如何获取相邻指定设备的MAC地址:ARP协议
ARP协议:介于网络层和链路层之间的协议–通过IP地址获取MAC地址
在局域网广播ARP请求(smac+sip+0+dip)(以太网帧中的对端MAC地址全为1–广播地址)
相邻设备收到ARP请求后,检测目的IP地址是否与自己符合,不符合则直接丢弃,符合则组织ARP应答,将自己MAC地址填充进行回复。
两端都会将MAC-IP的映射关系保存一段时间(20~30分钟)

MTU:链路层限制的最大传输单元 - 以太网默认1500字节
MSS-最大数据段大小 = MTU - IP最小报头长度 - TCP最小报头长度
TCP:MTU=1500;则MSS=1460
UDP;MTU=1500;则MSS=1472
MTU对TCP传输的影响
TCP传输三次握手阶段会协商MSS,双方取较小的乙方的mss作为最大数据段大小进行传输,每次从发送缓冲区中取出不大于mss大小的数据封装报头进行传输。 因此我们说,tcp在传输层会自定进行数据分段,因此不会再网络层进行数据分片
MTU对于UDP传输的影响
UDP可没有MSS协商,只要数据段大小小于64k-28就可以传输,但是若大于MTU大小,则会在网络层会进行数据分片,而分片在对端会进行分片重组,一旦一个分区出问题整个报文都会被丢弃(udp不保证可靠传输,丢弃就没了),因此,分片越多,传输出问题的几率就越高。因此使用UDP传输,程序员最好在上层分包时就计算MSS大小分包,尽量减少分片概率。

相关文章:

Linux-网络层IP协议、链路层以太网协议解析

目录 网络层&#xff1a;IP协议地址管理路由选择 链路层 网络层&#xff1a; 网络层&#xff1a;负责地址管理与路由选择 — IP协议&#xff0c;地址管理&#xff0c;路由选择 IP协议 数据格式&#xff1a; 4位协议版本&#xff1a;4-ipv4协议版本 4位首部长度&#xff1a;以…...

后端开发辅助

maven仓库手动添加jar命令 mvn install:install-file -DfileD:\\spire.xls-4.6.5.jar -DgroupIde-iceblue -DartifactIdspire.xls -Dversion4.6.5 -Dpackagingjaroracle调用存储过程示例 DECLAREPO_ERRCODE VARCHAR2(100);PO_ERRMSG VARCHAR2(100);BEGIN-- Call the procedure…...

插件电阻的工艺结构原理及选型参数总结

🏡《总目录》 目录 1,概述2,工作原理3,结构特点3.1,引脚设计3.2,电阻体3.3,封装4,工艺流程4.1,材料准备4.2,电阻体制作4.3,引脚焊接4.4,绝缘处理4.5,测试与筛选4.6,包装与存储...

视频私有云,HDMI/AV多硬件设备终端接入,SFU/MCU视频会议交互方案。

在视频业务深入的过程中越来越多的硬件设备接入视频交互的视频会议中远程交互&#xff0c;有的是视频采集&#xff0c;有的是医疗影像等资料&#xff0c;都需要在终端承显&#xff0c;这就需要我们的设备终端能多设备&#xff0c;多协议接入&#xff0c;设备接入如下。 1&#…...

mac os 配置两个github账号

1. 清空git全局配置的username和email git config --global --unset user.name git config --global --unset user.emailgit config --list 可以查看是否清空了 2. 定义两个标识符,这两个标识符以后会被用来代替“github.com”来使用。 假设两个账号的邮箱地址分别是a@gmai…...

【SpringBoot】登录校验之会话技术、统一拦截技术

真正的登录功能应该是&#xff1a; 登陆后才能访问后端系统页面&#xff0c;不登陆则跳转登陆页面进行登陆。 当我们没有设置登录校验&#xff0c;可以直接通过修改地址栏直接进入管理系统内部&#xff0c;跳过登录页。而后端系统的增删改查功能&#xff0c;没有添加判断用户是…...

Cohere发布大模型Command-R:35B参数,128K上下文,高性能 RAG 功能,支持中文

引言 随着人工智能技术的快速发展&#xff0c;大型语言模型&#xff08;LLM&#xff09;在各行各业的应用日益广泛。Cohere最新发布的Command-R模型&#xff0c;以其35B参数和128K的长上下文能力&#xff0c;为企业级应用带来了前所未有的可能性。本文将深入探讨Command-R的核…...

vue+element 前端实现增删查改+分页,不调用后端

前端实现增删查改分页&#xff0c;不调用后端。 大概就是对数组内的数据进行增删查改分页 没调什么样式&#xff0c;不想写后端&#xff0c;当做练习 <template><div><!-- 查询 --><el-form :inline"true" :model"formQuery">&l…...

浅谈如何自我实现一个消息队列服务器(2)——实现 broker server 服务器

文章目录 一、实现 broker server 服务器1.1 创建一个SpringBoot项目1.2 创建Java类 二、硬盘持久化存储 broker server 里的数据2.1 数据库存储2.1.1 浅谈SQLiteMyBatis 2.1.2 如何使用SQLite 2.2 使用DataBaseManager类封装数据库操作2.3 文件存储消息2.3.1 存储消息时&#…...

html5cssjs代码 039 元素尺寸

html5&css&js代码 039 元素尺寸 一、代码二、解释 使用CSS来定义HTML元素的尺寸&#xff0c;并通过不同的计量单位来设置元素的大小。 一、代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><tit…...

Lucene的lukeall工具的下载和使用图解

Lucene的lukeall工具的下载和使用图解-CSDN博客 Releases DmitryKey/luke (github.com) 需要github的用户名和密码&#xff0c;没有是下载不成功的....

【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷

极安云科专注职业教育技能竞赛培训4年&#xff0c;包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点&#xff0c;提供完整全面的系统性理论教学与技能培训&#xff0c;成立至今持续优化教学资源与讲师结构&#xff0…...

OpenRewrite框架原理解析

目录 1. OpenRewrite处理流程概述 2. OpenRewrite访问者模式的应用 2.1 访问者模式简介 2.2 OpenRewrite框架如何应用访问者模式 2.2.1 抽象访问者&具体访问者 2.2.2 抽象元素&具体元素 3. LST无损语义树构造 4. 配方&#xff08;Recipe&#xff09;执行流程 …...

LeetCode_Java_递归系列(题目+思路+代码)

206.反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]以此类推&#xff0c;直到反转结束返回头结点 class Solution {public ListNode rever…...

c++ 编译为WebAssembly时,怎么判断是release/debug环境?

我对这块研究不深 我的需求是把cpp代码编译为wasm的形式时&#xff0c;需要知道是debug/release 然而 尝试了一些办法 没有满足我的需求 尝试1&#xff1a; #include <iostream>bool isDebugMode() { #ifdef EMSCRIPTENbool isDebug EM_ASM_INT({return (typeof conso…...

信号处理--基于正则化聚合的共空间模态(CSP)脑电信号分类

目录 理论 工具 方法实现 代码获取 参考文献 理论 传统的通用空间模式 (CSP) 是一种流行的算法,用于对脑电图 (EEG) 信号进行分类。本文主要介绍小样本设置 (SSS) 中 CSP 的正则化和聚合技术。传统的 CSP 基于样本协方差矩阵估计。如果训练样本数量较少,其脑电图分类的…...

【2024年5月备考新增】《软考真题分章练习(含答案解析) - 11 项目风险管理(高项)》

1 题目 1、风险可以从不同角度、根据不同的标准来进行分类。百年不遇的暴雨属于()。 A.不可预测风险 B.可预测风险 C.已知风险 D.技术风险 2、人们对风险事件都有一定的承受能力,当()时,人们愿意承担的风险越大。 A.项目活动投入的越多 B.项目的收益越大 C.个人、组织拥…...

【3GPP】【核心网】【4G】4G手机接入过程,手机附着过程(超详细)

1. 4G手机接入过程&#xff0c;手机附着过程 附着&#xff08;Attach&#xff09;&#xff1a; 终端在PLMN中注册&#xff0c;从而建立自己的档案&#xff0c;即终端上下文 进行附着的三种情况&#xff1a; ①终端开机后的附着&#xff0c;初始附着 ②终端从覆盖盲区返回到…...

【LeetCode-46.全排列】

题目详情&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2&#xff1a; …...

【Web】浅聊Jackson序列化getter的利用——POJONode

目录 核心速览 原理分析 EXP TemplatesImpl利用 SignedObject利用 核心速览 writeValueAsString是jackson序列化自带的入口&#xff0c;在调用该方法的过程中将会通过遍历的方法将bean对象中的所有的属性的getter方法进行调用 下面介绍如下利用链&#xff1a; BadAttrib…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

VSCode 使用CMake 构建 Qt 5 窗口程序

首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...

简单介绍C++中 string与wstring

在C中&#xff0c;string和wstring是两种用于处理不同字符编码的字符串类型&#xff0c;分别基于char和wchar_t字符类型。以下是它们的详细说明和对比&#xff1a; 1. 基础定义 string 类型&#xff1a;std::string 字符类型&#xff1a;char&#xff08;通常为8位&#xff09…...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...