数据链路层数据帧格式及网络层IP数据包格式

devtools/2024/10/17 18:16:12/

数据帧格式

前导码:进入物理层之前的缓冲区,包含的是7个字节(56比特)交替出现的0和1,作用:提醒接受系统有帧到来,并且使它与输入定时同步

帧起始定界符:1字节(8比特)作为帧开始的信号

目的地址:6字节(48比特),包含的是目标设备的MAC地址

源地址:6字节(48比特),包含的是源设备的MAC地址

类型:两字节(16比特),包含的是上层协议的协议类型

数据:数据包,46-1500字节(368比特-12000比特)

帧校验序列:数据传送前用某种算法算出一个值,数据到达后再算一次,如果结果相同表示数据传送没有出错

IP数据包格式

版本:0.5字节(4比特),包含IP地址的格式,例如0100指代的是IP地址为IPV4格式

首部长度:0.5字节(4比特),以四字节为单位,例如0101指代的是IP数据包首部长度为20字节(最小),1111指代的是IP数据包首部长度为60字节(最大,20字节的固定部分加上40字节的可选部分)

优先级与服务类型:1字节(8比特),用于区分IP数据包所提供的服务质量,例如低延时、高带宽等,根据数字不同提供不同等级的服务,事实上不怎么被使用

总长度:2字节(16比特),包含首部长度和数据长度之和,以字节为单位,最大值为2^16-1字节

例题:已知首部长度为0101,总长度为001111111100,求首部长度,总长度,数据载荷长度?

答案:20字节,1020字节,1000字节

标识符:2字节(16比特),IP数据报在过大(超过1500字节,以太网帧的最大数据载荷为1500字节,mtu)时候,会被切分成许多小数据报,每个相同父数据报的小数据报都应该拥有相同的标识,例如1和2(标识符相同,以源IP地址区分

段偏移量:13比特,以8字节为单位,分片数据部分相对于在原数据部分的偏移量

标志:3比特,分为MF位(1比特,该分片数据是否还有下一位,1表示还有,0表示没有),DF位(该分片数据是否还允许被切分,0表示允许,1表示不允许),和保留位

TTL:1字节(8比特),生存周期,最大为255,最初以秒为单位,每1秒TTL减1,现以路由跳转的个数为单位,数据报每经过一个路由,TTL减1,TTL为0时,数据包被丢弃

TIPS:通过TTL的返回值确定系统,128为windows,64为linux

协议:1字节(8比特),确认数据报的数据部分是哪一种协议数据单元

首部校验和:2字节(16比特)用某种算法算出一个值,在每次经过路由器时都算一次,因为首部的TTL值、段偏移量等都有可能发生变化

源IP地址:4字节(32比特),包含原设备的IP地址

目标地址:4字节(32比特),包含目标设备的IP地址

可选部分(包含填充部分):1-40字节,用于排错、测量等、很少用到,填充部分确保首部长度为4字节的整数倍,例如首部长度为1字节,填充部分你会自动设置为3字节,用全0填充

ping命令及选项

一般用ping命令检测主机之间是否联通(双向)

两台主机之间ping(ApingB),发送ICMP请求包,B返回回应包

typecode描述
80echo request请求
30网络不可达
31主机不可达
32协议不可达
33端口不可达
110超时
00echo replay回复
ping命令及选项作用
ping -t一直ping,ctrl+c停止
ping -n发送数据包的个数
ping -l发送数据包的大小
ping -w当ping一个地址不通时,只等待数字秒数回复

疑问:如果Aping不通B,那么A和B之间是否一定无法通信?答案:并不是一定无法通信,防火墙可以控制协议,如果禁止ICMP协议,等同于禁掉了ping命令

当你的服务器出了问题,排错思路

1.ping 自己127.0.0.1(回环地址)硬件

2.看双方地址是否有问题

3.看网关是否有问题

4.防火墙策略是否有问题(配合/找网络工程师)


http://www.ppmy.cn/devtools/126522.html

相关文章

推荐算法的学习

文章目录 前言1、模型1.1 从本领域模型的发展历史中学习1.1.1 在历史中总结发展规律和趋势1.1.2 发现模型之间的共性,方便记忆 1.2 从其他领域的发展中学习1.2.1 注意力机制1.2.2 残差网络 1.3 实践该怎么办? 2、 特征2.1 数据源的选择与建立2.2 特征构造…

APIJSON的使用

APIJSON是一个用于简化后端接口开发的工具&#xff0c;在Java中可以按照以下步骤使用&#xff1a; 1. 引入依赖 在Java项目中&#xff0c;需要引入APIJSON的相关依赖。如果使用Maven&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId…

Linux 挂载新磁盘到指定目录

目录 1. 背景2. 创建新的磁盘3. 创建挂载点4. 格式化新磁盘&#xff08;如果尚未格式化&#xff09;5. 挂载新磁盘6. 开机自启&#xff08;可选&#xff09;7. 卸载磁盘 1. 背景 最近需要使用 Linux 搭建一个 NFS 服务器&#xff0c;主要用于 K8S 的日志和配置的持久化。但是考…

MySQL插入优化-性能对比

插入优化主要包括&#xff1a; 批量插入条数据&#xff0c;而不是单个记录逐条插入。手动提交事务&#xff0c;避免自动提交事务带来的额外开销。使用load命令从本地文件导入。 性能对比 创建数据库表 CREATE TABLE if not exists tb_sku ( id int(20) …

基于Java的可携宠物酒店管理系统的设计与实现(论文+源码)_kaic

摘 要 随着社会经济的不断发‎‏展&#xff0c;现如今出行并住酒店的人越来越多&#xff0c;与之而来的是酒店行业的工作量日益增加&#xff0c;酒店的管理效率亟待提升。此外很多人出门旅游时会有携带宠物的情况&#xff0c;但是现如今酒店对宠物的限制&#xff0c;导致许多…

西门子网络程序传输,无需开通网络驱动器直接接入底层,支持各类数控 如发那科、三菱 、新代、海德汉、广数、精雕、马扎克等等

有关西门子的程序传输问题&#xff0c;大家一般是通过文件共享、ftp、网络驱动器等方式&#xff0c;其中828D还需要授权开通网络启动器 下面介绍一种方式直接进入西门子Linux底层系统实现和NCK的文件交互功能 软件截图如下 功能表如下 机床程序上载至电脑 电脑程序下传…

IO进程---day3

1、完成标准io的单字符实现两个文件的拷贝&#xff1b; #include<myhead.h>//标准io的单字符现两个文件的拷贝&#xff1b; int main(int argc, const char *argv[]) {//判断是否有3个文件传入if(3 ! argc){fputs("input file error\n",stderr);return -1;}//打…

构建高效购物推荐系统:SpringBoot实战

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…