技术标签: java 网络 netty4 网络协议栈 开发语言
在网络模型中,物理层传输的单位是比特。与其他网络层(如数据链路层、网络层、传输层和应用层)不同,物理层并没有类似于这些层的报文协议。
该层的设备和技术包括网卡、集线器、中继器、光纤、电缆等。物理层是 OSI 模型中最底层的一层,负责在物理媒介上传输比特流。它处理数据的传输速率、传输介质的接口标准、信号的电压等细节。物理层主要任务包括传输比特流、对传输媒介进行编码和解码、提供物理连接的建立和维护。
当数据以比特形式在网络中传输时,以下是一般情况下的传输过程:
总的来说,数据比特在网络中传输的过程包括编码、基于物理层介质的传输、调制与解调(如果有必要)、传输延迟和接收端的解析过程。这些步骤确保了数据能够在网络中可靠地传输并最终正确地被接收端解析。
在内部服务器通过交换机进行通信时,在数据链路层,设备之间识别目标地址主要是通过目标MAC地址来实现的,每个网络设备都有一个唯一的MAC地址,用于在数据链路层中唯一标识设备。数据链路层帧中包含了源MAC地址和目标MAC地址。
MAC地址与硬件通常是一一绑定的,每个网络设备(如网卡、无线适配器)在生产过程中会被分配一个全球唯一的MAC地址。这个MAC地址是设备固化在其硬件中的,并且不可更改,确保了网络中每个设备具有唯一的身份标识。
硬件与数据链路层对接获取MAC地址的过程:
总的来说,MAC地址是设备硬件上的固定标识符,通过嵌入式设备中的芯片或电路与硬件绑定。数据链路层在需要发送或接收数据时,通过驱动程序获取硬件的MAC地址,并将其用于数据帧的封装和解析过程,以实现数据在网络中的准确传输。
监听192.168.50.223端口7778的eth0网卡,包信息导入到r1.cap的Wireshark中。
#执行命令如下,抓包操作会持续进行,直到你手动停止tcpdump命令。通常可以使用Ctrl + C来终止抓包操作,然后查看捕获的数据包。
# tcpdump host 192.168.50.223 and port 7778 -i eth0 -w ./r1.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
一下就是Wireshark打开的效果,可以继续分析数据包了。
(base) [root@vm12_efficiency01_50_221 ~]# hping3 -I eth0 -a 192.168.10.99 -S 192.168.50.224 -p 80 -i u1
HPING 192.168.50.224 (eth0 192.168.50.224): S set, 40 headers + 0 data bytes
--- 192.168.50.224 hping statistic ---
15626168 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
根据提供的hping3命令输出:
总的来说,虽然发送了大量的SYN数据包,但由于未收到回复,表示目标主机未响应或无法处理这些连接请求。可能是因为防火墙、网络设置或其他原因导致连接失败。
为什么发了这么多的包,对方的CPU一点都不涨?
我这两台机器都是内网同一个网段,中间只经过交换机,经过了交换机的包过滤,交换机可能会执行一些包过滤功能,如MAC地址过滤、端口安全等,导致部分数据包被丢弃或不被转发。
在这种情况下,虽然你发送了大量的数据包(15626168个SYN包),但目标主机仍未显示任何响应或负载变化。这可能是由于以下原因导致:
在这种情况下,发出如此多的数据包而没有看到任何影响可能意味着目标主机有能力处理这样的请求或者有相应的安全措施来防范此类攻击。
(base) [root@vm12_efficiency01_50_221 ~]# hping3 -c 100000000 -d 120 -S -w 64 -I enp1s0 -p 21 --flood --rand-source -i u0.0000001 192.168.50.224
HPING 192.168.50.224 (lo 192.168.50.224): S set, 40 headers + 120 data bytes
hping in flood mode, no replies will be shown
--- 192.168.50.224 hping statistic ---
1121223 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
根据提供的hping3命令输出:
关于目标机器CPU使用率低的原因可能包括:
虽然发送了大量的数据包并且没有成功建立连接,但由于以上原因,目标机器的CPU使用率仍然保持较低水平。在网络测试中,需要谨慎评估发送频率和数据包数量,以免对目标系统和网络造成意外影响。
(base) [root@vm12_efficiency01_50_221 ~]# hping3 -c 5000 -d 100 -S -w 64 -p 80 --flood --rand-source 192.168.50.224
HPING 192.168.50.224 (eth0 192.168.50.224): S set, 40 headers + 100 data bytes
hping in flood mode, no replies will be shown
--- 192.168.50.224 hping statistic ---
2652818 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
根据 hping3 命令的输出,可以看到以下信息:
这表明发送的5000个数据包中没有一个被目标主机192.168.50.224接收,可能由于网络配置、防火墙或其他原因导致连接失败。
这个是对目标机器发起TCP泛洪攻击,目标的CPU使用率很高,因为要接收处理报文,即使只是过滤拦截。ksoftirqd/2 是 Linux 内核中的软中断处理程序,用于处理网络和I/O相关的软中断。具体而言,ksoftirqd/2 是软中断处理程序之一,其中的 /2 表示这是针对 CPU 2 的软中断处理程序。软中断是一种低优先级的中断处理 机制,用于处理那些不需要立即响应的中断。ksoftirqd 进程负责处理这些软中断请求,例如网络数据包的接收、网络协议栈处理等。
(base) [root@vm12_efficiency01_50_221 ~]# hping3 -c 50000 -d 100 -1 -C 5 -K 1 192.168.50.224
HPING 192.168.50.224 (eth0 192.168.50.224): icmp mode set, 28 headers + 100 data bytes
--- 192.168.50.224 hping statistic ---
35 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
这表明在发送了50000个数据包后,目标主机192.168.50.224并没有接收任何数据包。可能由于网络配置、防火墙或其他原因导致连接失败。
根据 hping3 命令的输出,可以得到以下信息:
托管:https://github.com/traviscross/mtr/tree/v0.85
官网:https://www.bitwizard.nl/mtr/
mtr结合了“traceroute”和“ping”程序的功能。mtr运行在和用户指定的目标主机上。之后确定机器之间的每个网络跳的地址,它向每一个发送一个ICMP ECHO请求序列,以确定连接到每台机器的链路质量。当它这样做的时候,它会打印运行有关每台机器的统计信息。
ping命令通常是由操作系统提供的,包括在Linux系统中。ping命令用于测试与另一个主机的网络连接,并可以帮助确定网络是否正常工作以及网络延迟情况等。在Linux系统中,ping命令通常作为网络诊断工具的一部分,可通过终端运行来执行网络连通性测试。
traceroute命令通常也是由操作系统提供的,包括在Linux系统中。traceroute命令用于确定数据包从本地计算机到目标主机之间所经过的路由路径。它显示了数据包在路由器之间传输时经过的跳数和延迟时间。在Linux系统中,traceroute命令是网络诊断工具的一部分,可用于帮助诊断网络连接问题并分析网络路径。
Ping 和 Traceroute 都是网络诊断工具,但它们的功能和用途有一些区别:
总的来说,Ping 用于测试主机之间的基本连通性和响应时间,而 Traceroute 则用于跟踪数据包在网络中的传输路径。两者结合使用可以帮助定位网络问题并进行全面的网络诊断。
# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=51 time=19.0 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=51 time=19.9 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=51 time=17.9 ms
根据你运行的 ping www.baidu.com 命令的输出结果,我们可以看到与百度服务器(220.181.38.149)之间的 ICMP 回显请求和回显应答的信息。
每一行显示了从你的计算机向百度服务器发送 ICMP Echo Request 报文并接收 ICMP Echo Reply 报文的情况。以下是一些关键信息的分析:
综合分析来看,通过 ping 命令可以测试主机之间的连通性并测量延迟时间。在这种情况下,连接到百度服务器的网络连接是正常的,并且数据包能够在较短的时间内往返。如果遇到网络问题或延迟增加,请进一步检查网络设备、路由器设置等方面。
# traceroute www.baidu.com
traceroute to www.baidu.com (220.181.38.149), 30 hops max, 60 byte packets
1 gateway (192.168.50.1) 2.690 ms 2.821 ms *
2 * * *
3 * * *
4 * * *
5 * * *
这个输出显示了数据包从你的计算机到百度服务器(220.181.38.149)之间经过的路由路径的每一跳。每一行表示一个路由器,显示了该路由器的 IP 地址以及数据包经过该路由器时的延迟时间。
根据输出结果可以推断:
为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。windows系统一般是以太网、Linux一般是eth0
从上到下有几个区域:过滤条件、封包列表、封包信息、16进制、统计信息等等。
Burp Suite Community Edition官网使用文档:https://portswigger.net/burp/documentation/desktop/getting-started/intercepting-http-traffic?utm_source=burp_suite_community&utm_medium=learn_tab&utm_campaign=onboarding
Burp Suite Community Edition这款是免费版本,一般都用这中版本。
使用内置的浏览器打开,执行普通的GET请求。
以下是抓包的记录。
short f1 = buffer.readUnsignedByte();
//取出最高位的值,0x80 = 1000 0000
boolean variableFlag = (f1 & 0x80) == 0x80;
//读取低7位的值,0x7F = 0111 1111
byte messageWay = (byte) (f1 & 0x7F);
short v4 = buffer.readUnsignedByte();
//retain字段占据v4的高4位,因此可以通过右移4位来得到它的值。
int retain = v4 >> 4;
//dupFlag字段占据v4的第4位(从右往左数),因此可以通过与0x08进行按位与操作来判断它是否为1。
boolean dupFlag = (v4 & 0x08) == 0x08;
//qosLevel字段占据v4的第3和第2位,因此可以通过与0x06进行按位与操作后再右移1位来得到它的值。 0x06是16进制数,它的二进制表示为00000110,按位与第3和第2位会被保留下来,其余位都被置为0。
int qosLevel = (v4 & 0x06) >> 1;
//rewriteFlag字段占据v4的最低位,因此可以通过与0x01进行按位与操作来判断它是否为1。
boolean rewriteFlag = (v4 & 0x01) != 0;
文章浏览阅读6.4k次,点赞13次,收藏51次。文中主要讲述了常用编程语言的编译器的特点,GCC、MinGW、MinGW-w64 、TDM-GCC、Cygwin、MSYS、MSYS2的区别,MinGW-w64编译器套件下载及安装,安装后的环境变量配置(设置),编译器的运行及其与集成开发环境的关系、编译器的来源。_c++编译器
文章浏览阅读6.2k次。打开excel提示损坏的映像的解决办法根据提示找到相应的目录,将提示的dll文件选定,右键属性,依次点击安全,编辑,在其中勾选读取和执行为允许(默认为允许),将读取勾选为拒绝(默认问允许),然后依次点击确定,应用完成后重新打开excel,若还是提示损坏的文件,则按照上面的方法将提示的dll文件依次做相同设置,一般只有两三个,设置完成后,即可顺利打开excel。(亲测有效)..._excelexe损坏的映像
文章浏览阅读2k次。C++语法规定赋值运算符重载函数不能被继承。关于这一点我的理解是赋值运算符和构造、析构函数一样,都是为类量身定做的,继承没有意义,所以编译器屏蔽了这个继承。 最近在网上看到一篇文章(http://blog.csdn.net/pbmichael/article/details/1608250),认为“‘赋值运算符重载函数’不是不能被派生类继承,而是被派生类的默认‘赋值运算符重载函数’给_基类的赋值运算符重载函数能不能够被继承?
文章浏览阅读1.7k次。常见的软件窗口大小改变(最大化、手动改变时)需要窗口的部件能够自适应布局,而在Qt的应用程序界面设计中,对于像我一样的初学者如何实现窗口自适应调整还是要绕点弯路的。网上百度了很多,多数说的很含糊,还有很多是用程序实现的,既然已经有Qt Creator那么高集成度的工具了,我还是倾向于直接在Qt Creator中通过可视化配置的方式完成,一是所见即所得,而是效率要高不少。Qt中如果想实现窗体内空_qt creater qtreewidget 可缩放大小
文章浏览阅读190次。飞腾平台 EDK2 调试记录_phytium bios setup
文章浏览阅读965次,点赞2次,收藏2次。点击上方“zhisheng”,选择“设为星标”公众号(zhisheng)内回复:ffa可以获取到所有PPT 和视频随着云计算、大数据等新一代IT技术在各行业的深入应用,政企机构IT规..._关联分析引擎
文章浏览阅读4.6k次,点赞4次,收藏10次。前言由于在项目中需要,我们又为了节省服务器资源,决定不同步节点数据。也就说说,很多的一些API,我们是不能直接用的了,最直接的有创建地址、签名交易等等相关API修改地址生成TronUtils.java /** * 离线创建地址 * * @return */ public static Map<String, String> createAddress() { ECKey eCkey = new ECKey(random); String privateKey_tron离线签名
文章浏览阅读3.9w次,点赞90次,收藏651次。关于AD20的基础操作,小白可以学一学,方便操作_ad20
文章浏览阅读148次。QML 有许多基本类型,例如整型int或字符串类型string,这和 QML 对象类型形成对比,QML 对象类型是指具有属性、信号、方法等的对象,与对象类型不同的是,基本类型不能用于声明 QML 对象,例如不能声明 int{}对象或size{}对象。与对象类型的属性不同,基本类型的属性不提供它们自己的属性更改信号。相反,对象类型的属性发出它们自己的属性更改信号,并且仅在将属性重新分配给不同的对象值时才调用对象类型属性的属性更改信号处理程序。在 Qt 的全局对象提供有用的功能,用于操作基本类型的值。_qml表示double
文章浏览阅读1.1k次。多线程卡死或者崩溃的时候,bt直接显示的堆栈可能不是崩溃的那个,那么就 需要分析所有的堆栈,可以采用的方式就是把所有的堆栈log下来,这样可以使用文本分析器或者编写脚本去进行处理log所有的堆栈的方式如下:首先要进入gdb的界面然后一次输入如下指令:set logging file xxxx.txtset pagination offset logging file on..._linux va_start 多线程崩溃
文章浏览阅读626次。进入下面的网站进行QT的ide的下载:(下载5.12.9版本使用,可以复制链接到迅雷,下载的比比较快)_学习qt
文章浏览阅读691次。实时音视频的开发学习有很多可以参考的开源项目。一个实时音视频应用共包括几个环节:采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每一个细分环节,还有更细分的技术模块。比如,前后处理环节有美颜、滤镜、回声消除、噪声抑制等,采集有麦克风阵列等,编解码有VP8、VP9、H.264、H.265等。我们今天汇总了一些能帮助到正在学习或进行音视频开发的实时音视频开发者们的开源项目与几个也在为开源社区贡献力量的商业服务。这些项目分为几类:音视频编解码类、视频前后处理、服务端类等。_voice changer client demo