TCP在不可靠的网络上实现可靠的传输,必然会有丢包。TCP是一个“流”协议,一个详细的包将会被TCP拆分为好几个包上传,也是将会把小的封裝成大的上传,这就是说TCP粘包和拆包难题。但是许多人有不同的理解。TCP协议本身确保传输的数据不会丢失完整性。如果在传输过程中发现数据丢失或数据包丢失,最大的可能性是在发送或接收程序的过程中出现问题。例如,服务器向客户端发送大量数据,并且发送频率非常高,因此发送
TODO: 此篇比较杂乱, 待整理 !!!术语解释解决网络问题的思路流控理论网络性能问题拥塞重传RTO: 丢包的 Retransmission Timeout 被触发 -> 进入超时重传阶段超时重传快速重传选择重传: SACk延迟确认: Delayed ACK来自: <<一篇关于Vmware的文章>> , <<来点有深度的>>含义: 当需要发送
转载
2024-03-21 22:52:00
56阅读
Debug 网络质量的时候,我们一般会关注两个因素:延迟和吞吐量(带宽)。延迟比较好验证,Ping 一下或者 mtr[1] 一下就能看出来。这篇文章分享一个 debug 吞吐量的办法。看重吞吐量的场景一般是所谓的长肥管道(Long Fat Networks, LFN, rfc7323[2]). 比如下载大文件。吞吐量没有达到网络的上限,主要可能受 3 个方面的影响:发
转载
2024-03-20 08:16:22
935阅读
客户端:172.16.16.128 服务器:74.125.95.104一、线路原因通过上图可以看到在第一个数据包和第二个数据包之间,第四个和第五个数据包之间出现了较大的时间差。可以判断是线路问题(由服务器和客户端之间的设备导致的) 原因: 1.当服务器收到一个SYN数据包时,由于不涉及传输层以上的处理,发送一个一个响应只需要一小的处理量,即使服务器正在承受着非常大的流量负载,也会迅速的响应一个[S
转载
2024-05-01 19:56:58
110阅读
TCP是基于不可靠的网络实现可靠的传输,肯定也会存在掉包的情况,如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题。 例如服务端要给客户端发送大量数据,Send频率很高,那么就很有可能在Send环节出现错误(1.程序处理逻辑错误,2.多线程同
转载
2024-04-21 17:19:08
539阅读
一、TCP协议和UDP协议的区别TCP协议和UDP协议的区别1.TCP是面向连接的,所以有TCP三次握手和四次挥手的过程。UDP是无连接的协议,因为没建立任何的连接,所以没有握手和挥手的过程。2.TCP有可靠的连接机制,所以TCP是一个可靠协议。UDP没有连接和确认机制,所以UDP协议会丢包,会出错,所以它是一个不可靠的协议。3.TCP协议:数据量很大,防止它丢包,正确重传。(如果数据量很大,那么
转载
2024-02-22 22:53:18
177阅读
关于TCP三次握手和四次挥手大家都在《计算机网络》课程里学过,还记得当时高超老师耐心地讲解。大学里我遇到的最好的老师大概就是这位了,虽然他只给我讲过《java程序设计》和《计算机网络》,但每次课几乎都动手敲代码或者当场做实验。好了不扯了,下面进入正题。 关于三次握手和四次挥手的理论部分可以在很多资料上找到,我今天动手抓了几个包验证书上的理论,毕竟那
转载
2024-03-22 09:41:26
213阅读
一.根据定位问题到解决问题的思路:1.确认网络链路问题,ping测和traceroute确认链路是否健康。如果链路有问题,找对应网络管理员排查网络。2.确认系统问题,通过wireshark或者tcpdump在应用系统两端抓包,定位问题所在,排查是发送或者接受系统网卡、性能问题3.从tcp应用本身排查,通过在程序上添加调试代码,核查是否应用逻辑处理问题二.考虑TCP协议为什么会丢包,在什么样的情况下
转载
2024-03-22 16:46:47
527阅读
1 Wireshark:界面与基本操作 正式分享之前,先简单介绍一下 Wireshark。Wireshark 的前称是 Ethereal,该开源软件的功能正如其名,用来还原以太网的真相。Wireshark 可以捕获网络封包,并尽可能显示出最为详细的网络数据包信息。通过对捕获的包进行分析,可以了解用户的行为和传输的数据内容等。Wireshark 的主界面如上图示意,主要包含显示过
转载
2024-05-02 23:34:31
1773阅读
今天使用wireshark来分析一下tcp的一些原理。首先我们建立一个tcp服务器。const net = require('net');
net.createServer().listen(11111);再建立一个tcp客户端。const net = require('net');
net.connect({port: 11111, host: '192.168.8.226'})我们逐个情况分析
转载
2024-07-03 06:01:06
722阅读
倪朋飞 《Linux 性能优化实战》33 | 关于 Linux 网络,你必须知道这些(上) 网络模型:7层网络模型(OSI 网络模型)与4层网络模型(TCP/IP 网络模型)Linux 网络收发流程;环形缓冲区、sk_buff 缓冲区、套接字缓冲区;网卡接收数据后,经过几次拷贝才能到用户进程
====================================================
流媒体播放中,常常需要借助wireshark从TCP层面对交互过程进行分析,本文记录一些常见的TCP异常报文及其分析。乱序与丢包1、[TCP Previous segment not captured] [TCP Previous segment not captured]报文指的是在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标志。
转载
2024-05-07 11:48:51
491阅读
上周六写了《
在Wireshark的tcptrace图中看清TCP拥塞控制算法的细节(CUBIC/BBR算法为例)》,收到一封邮件,说我文中的图示画错了。
确实,关于CUBIC,我只说了缠绕,关于BBR我只说了顺延,并没有说具体如何,甚至我没有提一嘴关于重传的细节,更
转载
2024-03-18 06:42:46
237阅读
1 起因 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况。这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了。在排查问题的过程中使用到了tcpdump和Wireshark进行抓包分析。感觉这两个工具搭配起来干活,非常完美。所有的网络传输在这两个工具搭配下,都无处遁形。 为了更好、更顺手地能够用好这两个工具,特整理
一:数据包过滤过滤需要的IP地址 ip.addr==在数据包过滤的基础上过滤协议ip.addr==xxx.xxx.xxx.xxx and tcp过滤端口ip.addr==xxx.xxx.xxx.xxx and http and tcp.port==80指定源地址 目的地址ip.src==xxx.xxx.xxx.xxx and ip.dst==xxx.xxx.xxx.xxxSEQ字段(序列号)过滤(
转载
2024-03-17 09:51:17
88阅读
UDP 通信程序设计【实验名称】基于 UDP 丢包统计程序设计【实验目的】选择一个操作系统(Linux 或者 Windows),编制 UDP/IP 通信程序,完成一定的通信功能。【实验要求】在发送 UDP 数据包时做一个循环,连续发送 100 个数据包;在接收端统计丢失的数据包。实验时,请运行 Wireshark 软件,对通信时的数据包进行跟踪分析。【实验原理】以上为一般 UDP 网络编程的流程图
转载
2024-02-29 15:11:18
708阅读
网络包tcp和udp的比较一直是老生常谈,udp接收方会进行组包,如果丢了一个包之后,客户端不得不重传所有包,如果是tcp只需要重传丢失的部分。组包:MTU对数据分片,每个包里都有More fragement的标志。1表示还有分片,0表示最后一个分片可以组装了whirshark- statistics->summary (查看统计信息,比如平均流量)- statistics->serv
转载
2024-04-28 06:50:12
858阅读
一:数据包过滤过滤需要的IP地址 ip.addr==在数据包过滤的基础上过滤协议ip.addr==xxx.xxx.xxx.xxx and tcp过滤端口ip.addr==xxx.xxx.xxx.xxx and http and tcp.port==80指定源地址 目的地址ip.src==xxx.xxx.xxx.xxx and ip.dst==xxx.xxx.xxx.xxxSEQ字段(序列号)过滤(
转载
2024-05-24 21:52:03
266阅读
一、RTP协议简介RTP 数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP 数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12 个字节的含义是固定的,而负载则可以是音频或者视频数据。RTP 数据报的头部格式下图所示: RTP 数据协议负责对流媒体数据进行封包并实现媒体流的实时
转载
2023-12-25 08:14:49
287阅读
分析问题的前期准备步骤:1. 准备一台笔记本电脑,并且安装360免费wifi。2. 两部移动终端连接上360共享的wifi3. 在笔记本电脑上开启wireshark抓包,并且在linux服务
转载
2024-09-11 09:50:56
433阅读