草庐IT

network-analysis

全部标签

networking - 带有FIN标志的TCP数据包也能有数据吗?

我正在开发一个数据包捕获程序。TCP数据包是否有可能设置了FIN标志但也有数据? 最佳答案 严格来说,可以将数据放入TCPFIN数据包中...引用自RFC793(强调我的):TheSYNandFINaretheonlycontrolsrequiringthisprotection,andthesecontrolsareusedonlyatconnectionopeningandclosing.Forsequencenumberpurposes,theSYNisconsideredtooccurbeforethefirstactual

networking - 谁能解释一下 TCP 中的 TSO/LRO 硬件功能是什么?

谁能解释一下TCP中的TSO/LRO硬件功能是什么以及这些功能是否也对确认机制负责? 最佳答案 我知道这是一个旧话题,但我觉得答案不完整。您首先要了解的是,就网络性能提升技术而言,TSO只是冰山一角。让我们考虑基本的网络接口(interface)。您的操作系统使用PIO(程序输入/输出,即一次一个字(通常为32位))将整个数据包发送到NIC(网络接口(interface)卡),因为它应该只出现在线路上,不包括帧检查序列。这些是数据传输速度的提升。所以第一个速度提升是使用DMA(直接内存访问),这允许处理器在硬件复制数据包的同时做其他

networking - 如何衡量网络压力?

假设我正在构建自己的下载加速器。让我们将其简化为:我的代码在我无法控制的网络参数的第3方运行从单个IP下载一个项目并行范围传输的数量是可调的将有很多迁移来学习理想参数客户端运行Linux服务器不在我的控制范围内路径通过WAN,下载通过HTTPS下载的片段很大如何衡量是否使用了足够多的连接来使客户端和服务器之间的路径饱和?getsockopt(...,TCP_INFO)中的哪些位实际上有用?我能以多快的速度适应不同的网络条件?可以测量客户端系统的CPU和内存压力,网络压力如何? 最佳答案 答案很简单:一个TCP连接足以填满客户端和服务

networking - shutdown(sock, SHUT_RD) 与 TCP 的行为

当使用TCP套接字时,有什么作用shutdown(sock,SHUT_RD);实际上呢?它只是让所有recv()调用返回一个错误代码吗?如果是,是哪个错误代码?它会导致底层TCP连接发送任何数据包吗?另一方此时发送的任何数据会发生什么情况-它是否保留,并且连接的窗口大小一直缩小直到它变为0,或者它只是被丢弃,窗口大小不缩小? 最佳答案 关闭套接字的读取端将导致任何阻塞的recv(或类似)调用返回0(表示正常关闭)。我不知道当前在IP堆栈上传输的数据会发生什么情况。它肯定会忽略来自另一端的传输中的数据。它根本不会影响对该套接字的写入。

networking - OCaml 适合写网络服务器吗?

我想知道OCaml在处理多线程环境中基于TCP的典型客户端/服务器交互时,在性能和易于实现方面是否表现良好。我的意思是一些非常典型的东西,比如每个客户端都有一个线程来接收数据,对游戏状态进行操作更改并将其发送回客户端。这是因为我需要为游戏编写一个服务器,我总是用C来做这些事情,但自从我知道OCaml以来,我很想知道它是否可以,或者我会发现自己试图解决一个典型的问题用一种不太适合的语言来解决问题。 最佳答案 性能:可能不会。OCaml的线程不提供并行执行,它们只是构建程序的一种方式。OCaml运行时本身不是线程安全的,因此唯一可能与单

networking - 为什么UDP+软件可靠点餐系统比TCP快?

现在有些游戏使用网络系统,通过UDP传输消息,并确保消息的可靠性和有序性。例如,RakNet是一个流行的游戏网络引擎。它仅使用UDP进行连接,并有一个完整的系统来确保数据包可靠且有序(如果您愿意)。我的基本问题是,这是怎么回事?TCP与有序、可靠的UDP不是一回事吗?是什么让它变得如此慢,以至于人们不得不重新发明轮子? 最佳答案 通用/特化TCP是一个通用的可靠系统UDP+任何特殊用途的可靠系统。专用的东西通常比通用的东西更好,因为它们是专门的东西。流/消息TCP是基于流的UDP是基于消息的将离散游戏信息映射通常更好地发送到基于消息

networking - 不可路由的 IP 地址

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎不是关于aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers的.如果您认为这个问题是关于anotherStackExchangesite的主题,您可以发表评论,说明问题可能在哪里得到解答。关闭11个月前。社区在11个月前审查了是否重新打开此问题,然后将其关闭:原始关闭原因未解决Improvethisquestion我知道127.0.0.1按照惯例是环回地址,并且有各种

networking - 数据链路层和传输层

当传输层提供差错控制时,数据链路层需要什么差错控制?两种错误控制有什么区别? 最佳答案 传输层数据可以分解为许多数据链路层帧/数据包。因此,即使没有任何数据链路错误,传输层流/数据包也可能已损坏。编辑:这是因为传输层路径通常由许多数据链路层跃点组成,例如:Host1switch1switch2Host2如果数据包在switch1和switch2之间丢失,那么switch2Host2上不会记录任何错误>链接,但相应的传输层流将被破坏。另一方面-一旦遇到数据链路错误,就可以丢弃/重新启动传输层传输,而不会浪费资源。

networking - 为什么说TCP/IP族中的IP协议(protocol)是无连接的呢?

IP为什么叫无连接协议(protocol)?如果是,那么什么是面向连接的协议(protocol)?谢谢。更新-1-20:212010/12/26我认为,为了更好地回答我的问题,最好从物理上和逻辑上解释“连接”的实际含义。更新-2-2013年2月1日上午9:59根据下面的所有回答,我觉得这里所说的“联系”应该被视为一组行动/安排/纪律。因此它更像是一个抽象的概念,而不是一个具体的对象。更新-2015年6月18日3-11:35这是一个更物理的解释:IP协议(protocol)是无连接的,因为IP网络中的所有数据包都是独立路由的,它们不一定经过相同的路由,而在面向连接的虚电路网络中,所有数据

networking - 用于可靠网络连接的实用 NAT 穿越

我已经看到并阅读了很多类似的问题,以及相应的维基百科文章(NATtraversal、STUN、TURN、TCPholepunching),但是大量的信息并不能真正帮助我我的问题很简单:我正在编写一个P2P应用程序,我希望NAT后面的我的应用程序的两个用户能够相互连接。连接必须可靠(与TCP的可靠性相当),所以我不能只切换到UDP。该解决方案无需重新配置即可在当今的通用系统上运行。如果有帮助,该解决方案可能涉及可连接的第3方,只要它不必代理整个数据(例如,获取对等方的外部(WAN)IP地址)。据我所知,我唯一的选择是使用“可靠的UDP”库+UDPholepunching.是否有用于此的(