[网络通信原理]——TCP/IP模型—网络层

网络层

网络层概述

网络层位于OSI模型的第三层,它定义网络设备的逻辑地址,也就是我们说的IP地址,能够在不同的网段之间选择最佳数据转发路径。在网络层中有许多协议,其中主要的协议是IP协议。
IP数据包格式
在这里插入图片描述
IP数据报是可变长度的,它由两部分组成:首部和数据

  • 首部由两部分组成:固定部分和可变部分
  • 固定部分20字节,可变部分由一些选项组成,最长40字节

版本号:表示IP协议的版本是ipv4 还是ipv6
首部长度:表示IP报头的多大,固定长度:20字节+可选项最多40字节
优先级与服务类型:表示是否有需要优先发送的报文
总长度:表示IP报头+数据的总大小

  • IP数据包最大长度为 65536 字节(2^16次方)
  • 由于MTU(最大传输单元)的限制,长度超过1500字节的数据报都将被分片传输

标识符 :IP数据报的编号,标识主机发送的每一个数据报,同一个数据报的所有分片都具有相同的标识值
标志:表示数据是否进行了分片
段偏移量:表示该IP包在该组分片包中的位置

TTL: time to live 生存时间

  • 每个数据报发出去时,会添加一个生存时间
  • 数据包每经过一台路由器,TTL值会减1,当TTL为0时,数据包被丢弃
  • TTL可以防止数据包陷入路由死循环,预防路由环路,避免数据包在网络中无限循环浪费带宽资源

协议号:表示IP协议上层所使用的协议
协议号 协议名称
1 ICMP
6 TCP
17 UDP
首部校验和:用来做IP头部的正确性检测,但不包含数据部分
源IP地址 :表示发送这个数据包的设备的IP地址
目标IP地址:表示接收这个数据包的设备的IP地址

特别说明:数据每经过一台路由器,TTL值就会减1 TTL的作用:预防路由环路

ICMP协议

1、什么是ICMP?

因特网控制报文协议ICMP(Internet Control Message Protocol)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

作用:测试网络联通性。

2、ICMP的典型应用

IP数据报及其他应用程序通过ICMP报文可以实现多种应用,其中Ping程序和Tracert(Traceroute)程序最为常见。
Ping
Ping程序是最常见的用于检测IPv4和IPv6网络设备是否可达的调试手段,它使用ICMP的echo信息来确定:

  • 远程设备是否可达;
  • 与远程主机通信的来回旅程(round-trip)的延迟;
  • 报文包的丢失情况。

Tracert
Tracert程序主要用于查看数据包从源端到目的端的路径信息,从而检查网络连接是否可用。当网络出现故障时,用户可以使用该命令定位故障点。
Tracert利用ICMP超时信息和目的不可达信息来确定从一个主机到网络上其他主机的路由,并显示IP网络中每一跳的延迟(这里的延迟是指:分组从信息源发送到目的地所需的时间,延迟也分为许多的种类——传播延迟、传输延迟、处理延迟、排队延迟等)。

3、ICMP 消息提示

以下是几种常见的ping反馈结果:
Reply from 目标地址——表示连接建立成功
Destination host unreachable——表示目标主机不可达
此反馈常见原因:

  • 同网段中没有这个IP地址
  • 跨网段通信时,本主机没有填写网关地址

Request timed out——表示请求时间超时
此反馈常见原因:

  • 数据包从主机中发出去了,但是中间传输的网络设备无法找到目标主机
  • 数据包从主机中发出去了,传输的网络设备将数据包发送给目标主机了,但是目标主机没有回复,或者目标主机回复的消息,中间的传输设备没能正常转发给源主机
  • 对方主机没有填写网关地址

Unknown host——未知主机名
此提示常见原因:

  • IP地址是一个不合法的IP地址,或者是一个不存在的主机名

ARP协议

1、ARP协议概述

ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项。地址解析协议ARP即可实现将IP地址解析为MAC地址。

作用:基于目标IP获取相应目标MAC,完成数据帧的封装,实现数据的快速转发

解析方式:发送arp广播,得到mac地址后,缓存到arp缓存表中

ARP核心工作表

  • ARP表,包含的是IP地址与MAC地址的对应关系条目
  • ARP条目分为静态和动态两种类型
  • 动态ARP条目的存活时间是 1200s (华为的网络设备的arp缓存表的默认老化时间)
  • ARP动态条目存活时间是120s(windows系统的arp缓存表的默认老化时间)

数据发送原理

  • 任何设备在发送数据包之前,必须检查 ARP 表,查看包含去往目标IP地址时所使用的MAC地址
  • 如果ARP表包含目标IP地址对应的条目,则使用目标MAC封装数据
  • 如果ARP表不包含对应的ARP条目信息,则发送ARP请求,获得目标MAC

2、ARP有哪些类型?

动态ARP
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,也可以被静态ARP表项覆盖。
动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。
静态ARP
静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,不会被动态ARP表项覆盖。
静态ARP表项分为短静态ARP表项和长静态ARP表项。

  • 短静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,未同时指定VLAN和出接口。
  • 长静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,并同时指定该ARP表项所在VLAN和出接口。

免费ARP
设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称免费ARP。
免费ARP有如下作用:

  1. IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
  2. 用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
  3. 在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换

3、ARP报文格式

ARP报文类型

  • ARP请求报文,源设备以广播的方式发送,向所有设备请求MAC地址
  • ARP回应报文,目标设备以单播的方式回应,直接返回给源设备
    ARP请求和应答的报文格式如下图所示:
    在这里插入图片描述
    报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。
    报文中相关字段的解释如下图所示:
    在这里插入图片描述

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

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

相关文章

区块链——代码格式检查(prettier、solhint)

一、引入依赖 // 导入prettier prettier-plugin-solidity yarn add --dev prettier prettier-plugin-solidity yarn add --dev solhint二、创建.prettierrc文件 {"tabWidth": 2,"semi": false,"useTabs": false,"singleQuote": fals…

《最新出炉》系列入门篇-Python+Playwright自动化测试-55- 上传文件 (非input控件)- 中篇

软件测试微信群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等。所以宏哥打算按上传文件…

100个Python基本语法知识(一)

1. 基本语法结构 缩进 Python使用缩进来定义代码块,而不是像其他语言那样使用大括号{}。通常,每个缩进级别使用4个空格。 注释 单行注释以#开头。多行注释可以使用三引号或"""。 变量 Python是动态类型语言,变量无需事先…

模块与组件、模块化与组件化的理解

在React或其他现代JavaScript框架中,模块与组件、模块化与组件化是核心概念,它们对于提高代码的可维护性、复用性和开发效率具有重要意义。以下是对这些概念的理解: 模块与组件 模块(Module) 定义:模块是…

Java从入门到精通(十二)~ 动态代理

晚上好,愿这深深的夜色给你带来安宁,让温馨的夜晚抚平你一天的疲惫,美好的梦想在这个寂静的夜晚悄悄成长。 文章目录 目录 前言 主要作用和功能: 应用场景: 二、代理概念 1.静态代理 2.动态代理 2.1 概念介绍 …

网址导航系统PHP源码分享

1、采用光年全新v5模板开发后台 2、后台内置8款主题色,分别是简约白、炫光绿、渐变紫、活力橙、少女粉、少女紫、科幻蓝、护眼黑 3、可管理无数引导页主题并且主题内可以进行不同的自定义设置,目前内置16套主题 持续增加中… 4、可单独开发各种插件&a…

OSPF Type2 Message / DBD Packet (Database Descriptor)

注:机翻,未校对。 OSPF Type2 Message / DBD Packet (Database Descriptor) DBD (Database Description or Type2 OSPF Packet) is a sort of summary of the OSPF Database in a router. DBD is used to check if the LSDB between 2 routers is the s…

Linux---make/makefile工具

目录 基本了解 makefile基础语法 依赖关系 依赖方法 makefile文件内容格式 make执行机制 补充知识 机制解释 PHONY关键字 makefile补充语法 基本了解 在Linux中,make/makefile是项目自动化构建工具。如果我们没有make/makefile,那我们要编译一…

基于Java的模拟写字板的设计与实现

点击下载链接 基于Java的模拟写字板的设计与实现 摘要:目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并且涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首…

Linux系统编程——生产者消费者模型

目录 一,模型介绍 1.1 预备知识(超市买东西的例子) 1.2 模型介绍 1.3 CP模型特点 二,基于阻塞队列的CP模型 2.1 介绍 2.2 阻塞队列的实现 2.3 主函数实现 2.4 效果展示 三,POSIX信号量 3.1 信号量原理 3…

一篇文章带你学完Java所有的时间与日期类

目录 一、传统时间与日期类 1.Date类 构造方法 获取日期和时间信息的方法 设置日期和时间信息的方法 2.Calendar类 主要特点和功能 常用方法 1. 获取当前日历对象 2. 获取日历中的某个信息 3. 获取日期对象 4. 获取时间毫秒值 5. 修改日历的某个信息 6. 为某个信息增…

力扣 快慢指针

1 环形链表 141. 环形链表 - 力扣(LeetCode) 定义两个指针,一快一慢。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针和快指针都在位置 head,这样一来,如果在移动的过程中&#x…

05。拿捏ArkTS 第 3 天 --- 对象、联合类型、枚举

1,什么是对象?对象是干什么的? ~用来存储不同类型数据的容器 ~用来描述物体的特征和行为 //特征就是属性,行为就是方法(对象内的函数) 2,对象的基本样式是? …

Noah-MP陆面生态水文模拟与多源遥感数据同化技术

了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用;熟悉模型的发展历程,常见模型及各自特点;理解Noah-MP模型的原理,掌握Noah-MP模型在单站和区域的模拟、模拟结果的输出和后续分析及可视化等方法;…

OpenGL入门第六步:材质

目录 结果显示 材质介绍 函数解析 具体代码 结果显示 材质介绍 当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)和镜面光照(Specular Lighting)。通过为每…

JQuery 弹幕可上下左右

水平弹幕,可设置向左、向右 containerId为显示弹幕容器ID, message弹幕内容, direction弹幕移动方向 // Jquery指定容器 向左或向右弹幕function sendBarrage_horizontal(containerId, message, direction) {// 第1部分,设置并挂载元素// 定义弹幕元素&#xff0c…

23.jdk源码阅读之Thread(下)

1. 写在前面 上篇文章我们介绍了Tread的一些方法的底层代码实现&#xff0c;这篇文章我们继续。 2. join()方法的底层实现 /*** Waits at most {code millis} milliseconds for this thread to* die. A timeout of {code 0} means to wait forever.** <p> This impleme…

【java】【springboot】启动方法注解详解

在Spring Boot中&#xff0c;启动方法通常是main方法&#xff0c;它位于应用程序的主类中&#xff0c;负责启动Spring应用上下文。 一、SpringBootApplication SpringBootApplication 是 Spring Boot 中一个非常核心的注解&#xff0c;它是一个复合注解&#xff0c;包含了三个…

从工艺到性能:模具3D打印材料不断革新

在模具3D打印领域&#xff0c;材料性能的持续优化与创新是推动模具3D打印的关键因素&#xff0c;近年来&#xff0c;各种3D打印新材料不断涌现&#xff0c;模具3D打印材料也开始重工艺导向逐步向性能导向发展&#xff0c;如毅速公司推出的ESU-EM191/191S及ESU-EM201不锈钢粉末、…

电脑文件误删除如何恢复?数据恢复第一步是什么?这五点要第一时间处理!

电脑文件误删除如何恢复&#xff1f;数据删除恢复的第一时间要做什么&#xff0c;你知道吗&#xff1f; 在使用电脑的过程中&#xff0c;误删除重要文件的情况时有发生。面对这种情况&#xff0c;不必过于慌张&#xff0c;因为有多种方法可以帮助你恢复误删除的文件。以下是恢复…