草庐IT

network-flow

全部标签

networking - TCP 慢启动术语混淆

我对慢启动这个词感到困惑。为什么TCP拥塞控制策略在其大小呈指数增长时称为慢启动。如果因为初始尺寸小而被称为慢启动,那么它不应该被称为低启动吗? 最佳答案 早期(非常早)的实现不使用拥塞窗口。因此,他们通过发送完整的数据接收窗口开始非常努力。因此,尽管看起来很激进,但慢启动实际上更保守。 关于networking-TCP慢启动术语混淆,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions

networking - 如何计算非线性 skb/payload 的 TCP/UDP 校验和?

我正在尝试计算正在发送的skb上的TCP/UDPheader校验和。基本上,有两个函数应该完成所有工作(也在thisstackoverflowquestion和thisonetoo中提到):csum_tcpudp_magiccsum_partial例如,对于TCP:tcph->check=0;tcph->check=csum_tcpudp_magic(iph->saddr,iph->daddr,tcp_packet_len,IPPROTO_TCP,csum_partial((unsignedchar*)tcph,tcp_packet_len,0));这工作正常-我能够传输TCP/UDP

networking - TCP中的FIN+ACK报文是什么?

我正在为一个类(class)项目自己实现TCP,有一个细节我似乎无法理解。什么是FIN+ACK消息?在我包含在此处的图表中,收到FIN+ACK将使主机从FIN_WAIT_1状态变为TIME_WAIT状态。然而,整个图中没有状态转换发送FIN+ACK。那么,如果什么都没有发送,怎么可能收到FIN+ACK呢? 最佳答案 当应用程序调用close时,它会移动到FIN_WAIT_1从FIN_WAIT_1开始可能会发生多种情况:应用程序收到ACK:这意味着对端确认了最后发送的数据包。本地应用程序移动到FIN_WAIT_2应用程序收到FIN:这

networking - TCP 三向握手 - 搭载 ACK

我理解在三次握手中,有时接收端在建立连接时会发送一个SYNACK包(piggybacking),但是什么时候会发送一个SYN然后发送一个ACK包呢?例如:->SYN->ACK对比:->SYN->SYN_ACK谢谢! 最佳答案 不,它不会-这是原因SYN通常由“客户端”(例如您的浏览器)在想要打开到服务器(例如您的网络服务器)的TCP连接时发送。服务器无法事先“知道”哪个客户端想要打开连接(并因此发送SYN)。所以它不能发送未经请求的SYN。SYN和ACK是标志,因此来自服务器的SYN-ACK是对客户端SYN(以及它自己的SYN)的A

networking - 浏览器如何在 80 端口上与 Web 服务器建立连接?细节?

(这个问题的灵感来自对这个话题的回应:HowWebSocketserverhandlesmultipleincomingconnectionrequests?)我的理解是这样的:假设客户端IP=1.1.1.1,服务器IP=9.9.9.9浏览器选择一个随机的本地可用端口,例如5555,并启动到服务器端口80的连接。因此在客户端上,socketfd_client应该代表一个IP连接,如(1.1.1.1:5555,9.9.9.9:80,TCP)。服务器在其端口80上调用accept()并识别来自客户端的连接请求。然后服务器选择一个随机的本地可用端口,比如8888,来满足该连接请求。所以在服务

networking - tcpdump 将 tcp 流量过滤到 csv 文件中

有人可以告诉我如何使用tcpdump过滤掉特定源和目标ip上的udp或tcp流量并将输出保存到csv文件中吗?如果我可以使用etl工具将pcap文件转换为csv,则不需要csv文件。此外,我对收集数据时的100毫秒时间分辨率感兴趣,我可以使用tcpdump实现吗?谢谢。 最佳答案 您可以使用thislink中说明的方法其中解释了一种使用tshark的方法。#tshark-rtraffic.pcap-Tfields-eip.src-Eseparator=,-Eoccurrence=f>traffic.csv-r:toreadthe.p

networking - 究竟什么时候创建网络数据包?

在从客户端到主机(或反之亦然)的消息传输中,消息实际上是在哪个点被分割成数据包?根据我目前的理解,应用程序将整个文件放入套接字并将其完全交给TCP。TCP首先缓冲文件/消息,然后在合适的时候(什么时候合适?)切割缓冲区数据block(创建数据包)并添加TCPheader以将block转换为段。如果应用层根本没有数据包,为什么还要讨论应用层的数据包呢?只是整个文件...这不正确。谁能证实我的理解? 最佳答案 基于TCP的应用程序有一个消息要发送。消息是什么取决于应用程序——它可能只是一个小请求,也可能是整个文件。它将消息传递到传输层(

network-programming - 专用网络(如 IPv4)问题

我正在研究嵌入式TCP/IP4堆栈和HTTP/SNMP/SMTP相关内容。它在功能上有效,但我想让它在LAN上更快地工作。由于Nagle算法和延迟的TCP-ACK,即使在LAN上,HTTP应用程序似乎也运行缓慢。在http://en.wikipedia.org/wiki/IPv4#Private_networks上可以看出,有3个不同的专用网络,具有不同的位block值。我要做的是:我会首先通过查看自己的IP来确定我是局域网成员我会查看dst_ip并检查它是否与我属于同一局域网这些是否足以证明我和对方属于同一个局域网?当然,我会使用一个简单的hack,比如将同一个数据包发送两次加快沟通

networking - 通过网络连接进行命中检测的策略,例如 Quake 或其他 FPS 游戏

我正在学习各种网络技术,特别是UDP和TCP协议(protocol)。我读过很多次像Quake这样的游戏使用UDP的原因是,“如果你错过了导弹等的位置更新数据包也没关系,因为下一个数据包会将导弹放在它需要的位置”这个思维过程在物体的飞行路径中是很好的,但当导弹到达目标时就不好了。如果一台计算机收到导弹已到达预定目标的消息,但该数据包被另一台计算机丢弃,就会造成一些麻烦。很明显,这种事情在《雷神之锤》这样的游戏中并没有真正发生,那么他们使用什么策略来确保每个人都与瞬时类型的事件(例如碰撞)保持同步? 最佳答案 您已经确定了两种不同类型

networking - 如果您可以在浏览器中访问比 TCP 更低的级别

我正在了解NetworkProtocols,然后看到靠近最低层的是原始以太网协议(protocol):Ethernet:thisisthebasicprotocolthatsendsdatatoanothermachineonyourlocalnetworkusingyourMACaddress.Thisisthebuildingblockforalltherestasyouneedtosenddatatotherouterifyouwanttocommunicatewiththeoutsideworld.上面是互联网协议(protocol)(IP),TCP和UDP就是例子。在TCP之