首页 > 其他分享 >以太网UDP:心跳包、ICMP与ARP

以太网UDP:心跳包、ICMP与ARP

时间:2024-04-07 21:11:52浏览次数:27  
标签:ARP UDP 发送 心跳 Heartbeat ICMP 以太网 客户端

参考:

https://juejin.cn/post/6844903951452602375

心跳包

  • UDP:用户数据报协议:主要用在实时性要求比较高的以及对质量相对较弱的地方.但是面对现在高质量的线路不会容易丢包,除非是一些拥塞条件下,如流媒体
  • TCP:传输控制协议:是面连接的那么运行环境必然要求其可靠性不可丢包,有良好的拥塞控制机制如 http ftp telnet等。
网络中的接收和发送数据都是使用操作系统中的SOCKET进行实现。 但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题。 可是如何判断这个套接字是否还可以使用呢?这个就需要在系统中创建心跳机制。 其实TCP中已经为我们实现了一个叫做心跳的机制。 如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。 所谓“心跳”就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己“在线”。以确保链接的有效性。 所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。 代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。 比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。 发包方可以是客户也可以是服务端,看哪边实现方便合理。一般是客户端。服务器也可以定时轮询发心跳下去。 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。 事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项。系统默认是设置的是2小时的心跳频率。 但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。 一般,如果只是用于保活还是可以的。心跳包一般来说都是在逻辑层发送空的包来实现的。 下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了。 只需要send或者recv一下,如果结果为零,则为掉线。 但是,在长连接下,有可能很长一段时间都没有数据往来。 理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。 更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活。 在获知了断线之后,服务器逻辑可能需要做一些事情,比如断线后的数据清理呀,重新连接呀当然,这个自然是要由逻辑层根据需求去做了。 总的来说,心跳包主要也就是用于长连接的保活和断线处理。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。

心跳检测步骤:

1.客户端每隔一个时间间隔发生一个探测包给服务器 2.客户端发包时启动一个超时定时器 3.服务器端接收到检测包,应该回应一个包 4.如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器 5.如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了  

Heartbeat和ARP的差别

Heartbeat(心跳包)和ARP(地址解析协议,Address Resolution Protocol)之间存在本质上的区别,它们在网络中扮演着不同的角色并服务于不同的目的。

Heartbeat(心跳包)

  • 用途:Heartbeat机制主要用于监测网络中的两个点(例如,两台服务器或客户端和服务器之间)的连通性。通过定期发送小的数据包(即心跳包)来确认对方是否在线和可响应。这种机制广泛用于高可用性系统中,以确保系统组件间的持续通信,并快速检测故障。
  • 层级:心跳包可以在多种网络层级上实现,包括应用层、传输层(TCP/UDP)或更低的网络层。

ARP(地址解析协议)

  • 用途:ARP的目的是解决网络层到链路层地址的映射问题。在IPv4网络中,当一个设备需要向同一局域网(LAN)内的另一个设备发送数据时,它需要将目标设备的IP地址转换为物理MAC地址。ARP允许任何设备广播一个请求,来询问具有特定IP地址的设备的MAC地址。
  • 层级:ARP工作在链路层,直接与网络接口卡(NIC)交互,以解析网络层的IP地址到链路层的MAC地址。

主要差别

  • 目的不同:Heartbeat用于监控和维护网络连接的状态,而ARP用于解析网络地址到物理地址。
  • 工作原理不同:Heartbeat通过发送和接收简单的消息包来检测网络连通性;ARP通过广播请求来查询特定IP地址对应的MAC地址,并接收回应。
  • 应用场景不同:Heartbeat多用于确保高可用性和故障转移场景中的设备或服务连通性,ARP是局域网内部设备进行通信的基础服务。

总的来说,Heartbeat和ARP服务于网络通信的不同方面,Heartbeat关注于连接的持续性和可靠性,而ARP解决的是如何在网络中准确地定位和通信到特定的设备。

Heartbeat与ICMP的异同

ICMP用于实现类似心跳包操作的ping命令和其他类型的心跳包机制之间存在一些关键的相似之处和差异。下面是它们之间的一些主要异同点:

相似之处

  1. 连通性检测:ICMP的ping命令和心跳包都被用来检测网络中的设备是否可达,即对方是否在线且网络连接是否正常。
  2. 基于消息的简单请求-响应模型:无论是ICMP的ping操作还是其他心跳机制,通常都采用了简单的请求-响应模型来实现。发送方发送一个请求(或心跳包),并等待接收方的响应。
  3. 网络诊断工具:它们都可以作为网络诊断的工具,帮助识别网络中的问题,比如路由问题、延迟、丢包等。

差异

  1. 协议层级:ICMP是一个网络层协议,直接由IP层处理,主要用于传递控制消息。而心跳包可以在不同的层级实现,如应用层(通过特定的应用协议发送心跳)、传输层(TCP/UDP)或甚至是会话层。
  2. 用途和功能:ICMP除了可以用于实现ping操作外,还设计用来传递网络通信过程中遇到的问题和控制消息,如目标不可达、时间超时等。心跳包的主要用途是保持网络连接的活跃状态,监测对方是否在线,以及在一些系统中用于负载均衡和故障转移。
  3. 数据包结构和内容:ICMP消息有其特定的格式,包括类型、代码和校验和等字段,用于不同类型的控制消息。心跳包的结构更加灵活,根据其设计的目的和所在的协议层级,可以包含从简单到复杂的各种信息,如状态信息、序列号、时间戳等。
  4. 反馈信息的详细程度:ICMP错误消息可以提供关于网络问题的详细信息,而心跳包机制的反馈通常仅限于确认对方是否活跃或响应。

总的来说,ICMP的ping操作和心跳包机制都是网络通信中用于确保连通性和监测网络状态的重要工具。它们在实现方法、用途、以及操作层级上存在一些关键的差异,但共同目标是帮助管理和维护网络的稳定性和可靠性。

心跳包的结构

参考设计:

数据部分填入64字节的0。

 


 

标签:ARP,UDP,发送,心跳,Heartbeat,ICMP,以太网,客户端
From: https://www.cnblogs.com/VerweileDoch/p/18119881

相关文章

  • CSharp: Tuples
     //元组Tuplesvarperson=("GeovinDu",30,"SoftDeveloper");Console.WriteLine(person.Item1);Tuple<string,int,string>persons=newTuple<string,int,string>("GeovinDu",30,"SoftDeveloper");C......
  • C# 通过ARP技术来观察目标主机数据包
    由于之前写的C#实现Arp欺诈的文章属于网络攻击,不能够被展示,所以这边我们稍微说一下C#调用ARP包以及查看其他电脑上网数据包的技术,委婉的说一下ARP在局域网之中的应用。本文章纯属技术讨论,并且涵盖了如何去防止ARP攻击的手段。目录ARP作用ARP欺骗原理工具实战获取本机所有的网......
  • SharpZipLib解压文件夹 包含空文件夹
    原文链接:https://blog.csdn.net/jk007/article/details/30251963usingICSharpCode.SharpZipLib.Zip; publicstaticvoidCompressDirectory(stringiDirectory,stringoFile)    {      FastZipfastzip=newFastZip();      CreateEmp......
  • C#使用ICSharpCode.SharpZipLib.dll进行文件的压缩与解压功能
    原文链接:https://www.jb51.net/article/131706.htm网上大部分都挺复杂usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.IO;usingICSharpCode.SharpZipLib.Zip;usingICSharpCode.SharpZipLib.Checksums;usingSystem......
  • arp欺骗 中间人攻击 后门
    一,arp欺骗在xp中pingkali 并使用命令arp-a查看缓存表记录动态物理地址在win7中打开packeth包 点击interface选择网卡选择network的网卡实验目的对xp130欺骗不能上网(能上网是因为网关的mac地址对应是一样的)首先测试能否上网  把mac地址改了就不能上网......
  • socket编程——C++实现基于UDP协议的简单通信(含详解)
    文章后面有代码,可以直接复制在VisualStudio2022中运行(注意:必须是两个项目,客户端服务端各一个,连接在同一网络中,先运行服务端,并且客户端数据发送的目标IP要改为你服务端的IP)目录前言帮助文档一、UDP通信框架1.服务端2.客户端二、服务端实现1.加载库(WSAStartup函数)......
  • warp:让电脑你更懂你的指令
    什么是WARP?Warp是一款现代化的终端工具,基于Rust构建,内置了人工智能功能,旨在帮助你和你的团队更高效地构建优秀的软件。WARP的具体作用现代编辑:更快地输入、编辑和完成命令。无论你是键盘操作还是使用鼠标设置光标位置,Warp都能让你更轻松地编写命令。WarpAI:再也不用......
  • ARP 攻击神器:Macof 保姆级教程
    一、介绍macof是一个用于生成伪造数据流的网络工具,常用于进行网络攻击和测试。它的主要作用是生成大量的伪造MAC地址的数据包,并将这些数据包发送到网络中,从而混淆网络设备的MAC地址表,导致网络拥堵或服务中断。以下是macof工具的一些特点和用途:伪造MAC地址:macof能......
  • 配置M-LAG双归接入普通以太网络示例(根桥方式)
    组网需求如图4-22所示,采用M-LAG方式将主机双归接入普通以太网络。由于用户对于业务的可靠性要求很高,如果主机和接入设备之间做链路聚合只能保证链路级的可靠性,接入设备发生故障时则会导致业务中断。这时用户可以采用跨设备链路聚合技术,正常工作时链路进行负载分担且任何一台......
  • 用UDP协议实现发送接收的网络聊天室
     发送数据 UDP协议是面向无连接的"面向无连接的"通常指的是一种网络通信模式,也称为无连接通信或者数据报通信。在这种模式下,通信的两个端点之间不需要建立持续的连接,而是通过将数据分成小块(数据包)并单独发送来进行通信。每个数据包都包含了足够的信息(如源地址、目标地址......