草庐IT

network-flow

全部标签

networking - TCP 状态实现

在我的网络类(class)中,我学习了11种tcp状态,它们如下:关闭听同步发送同步接收成立Fin_Wait_1Fin_Wait_2结束Time_Wait最后确认关闭等待我不知道在Linux内核网络架构中实际实现了多少这些状态。我想使用系统调用编写一个程序,该程序可以捕获所有这些在Linux内核中实现的状态。实际上我想使用套接字编程和系统调用来捕获这些状态,例如:每当我执行netstat-taupen|greptcp,我想在不同时间的相同tcp连接的状态列中查看所有这些连接状态。有人给我一些关于如何编写这样的代码的想法。 最佳答案

networking - 如果接收进程停止或挂起,TCP 连接会发生什么情况?

例如,在TCPTahoe连接中,如果发生大文件传输。突然接收进程或主机关闭或挂起,我知道我们会超时,此时窗口大小将被重置等。据我了解,我们将重新发送未确认的数据包,然后重试,可能又一次?不过我想知道,在这样的超时之后,在假设接收方不再存在并且数据将停止发送之前,数据将被重新发送多少次。如果进程从挂起状态恢复,它是否能够继续接收数据?我知道数据会在三次重复确认或超时后重新传输。但是,如果多次重传失败,或者接收进程突然停止接收,我找不到太多可读的内容。 最佳答案 如果接收进程退出或被杀死,其端的套接字将被关闭。当发送方继续发送数据包时,

networking - tcp_probe 模块没有输出

我正在尝试使用iperf和tcp_probe模块绘制TCP拥塞窗口和慢启动阈值。我完全按照这里所说的去做:获取数据:modprobetcp_probeport=5001chmod444/proc/net/tcpprobecat/proc/net/tcpprobe>/tmp/tcpprobe.out&TCPCAP=$!iperf-i10-t100-creceiverkill$TCPCAP糟糕!/tmp/tcpprobe.out是空的:(这是Ubuntu11.04x86并且已经在Ubuntu11.04x64上尝试过同样的操作有什么建议吗? 最佳答案

networking - MSS 和 tcp 窗口大小

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion在A和B之间的通信过程中,当A向B发送数据时,段大小将取决于B的窗口大小。最初,在B成功接收到数据后,它将窗口大小加倍,然后继续。现在B知道它的MSS。因此在向A发送段大小时,可以确保它不超过MSS值。那为什么B要先通知MSS给A呢?

networking - 程序的最佳端口是什么?

以下哪个端口最适合用于程序。我正在努力使用仍在开发中的自定义协议(protocol)。我正在寻找一个几乎所有连接到公共(public)Internet的主机都可以访问的端口(也就是说,每个可以查看网站的主机都可以使用此端口)。三个主要选项是:端口53UDP(DNS)端口80TCP(HTTP)端口443TCP(HTTPS)其中哪些可以通过Internet最广泛地访问,包括所有ISPs、企业防火墙等 最佳答案 所有这些端口都被众所周知的服务使用,你不应该使用它们(如果你的产品不是网络服务器或DNS服务器。)DCCP众所周知的端口不应该在

networking - Node.js 套接字服务器如何知道客户端连接到哪个 IP 或域?

我如何知道客户端连接到node.jsTCP服务器中的哪个IP/主机名?varserver=net.createServer(function(stream){//Theserverisbehindafirewall,//howcanIknowhowtheclientconnecttothisserver?console.log(stream.localAddress);});server.listen(21,'0.0.0.0');谢谢 最佳答案 得到答案:我们可以使用stream.address()来获取客户端连接到的端口和主机。

networking - 关于 tcp tahoe 和 reno?

我想了解tcptahoe和tcpreno?我已经关注了kurose和ross的网络书籍和sallyfloyd论文,但无法理解,我还需要一些网站,在那里我可以找到一些基于tcp和套接字的viva问题编程?请帮助我。 最佳答案 假设您已阅读有关拥塞的维基百科文章:Reno/Tahoe只是防止TCP在数据包丢失时react过度的方法。在现实世界中,即使您的网络不拥塞,您有时也会收到丢包,并且您的连接往往会在其生命周期内保持相同的吞吐量,因此在正常情况下,您应该能够弄清楚“嘿,我可以非常快地同时处理N个数据包,如果数据包丢失,我几乎总是可以

network-programming - Linux 网络堆栈是否在多核机器上并行运行?

我有一台运行Linux2.6.x的4核机器。该机器是单宿主机(即具有1个NIC)。在这台机器上,我运行4个进程(或者,1个进程中有4个线程),它们与网络上的4个不同主机进行网络I/O。问题:这4个网络I/O线程可以并行运行吗?我可以假设TCP/IP堆栈(包括NIC设备驱动程序)都是可以利用多个内核完全并行运行的并发代码吗?在它们的网络I/O的任何阶段,这些线程是否会阻止尝试获取TCP/IP堆栈中的某些共享资源,从而导致堆栈的一部分——以及位于顶部的4个应用程序级线程——部分中断顺序而不是完全并行? 最佳答案 是的,所有4个线程都会进

networking - 在进入网络时显示数据包丢失 - 可能导致什么?

带有1GbNIC的流量源(服务器)连接到Cisco交换机的1Gb端口。我将此流量(SPAN)镜像到同一交换机上的单独千兆位端口,然后在高吞吐量捕获设备(riverbedshark)上捕获此流量。Wireshark对捕获的分析表明存在一定程度的数据包丢失-大约0.1%的TCP段正在丢失(基于序列号分析)。鉴于这是此流量在网络上的第一个点,什么会导致此丢失?吞吐量不接近1吉比特,没有端口错误(这可能表明存在不可靠的补丁引导)。在理查德·史蒂文斯(RichardStevens)的TCP插图书中,他提到了“本地拥塞”——TCP堆栈以比清空底层本地队列更快的速度生成数据。这会是我看到的吗?如果是

network-programming - 编程中以太网和 TCP/IP 协议(protocol)的区别?

如果一个套接字对以太网开放,那么它是否与TCP/IP中的套接字相同?在一些现有代码中,我发现它支持以太网协议(protocol),这是否意味着我可以使用TCP套接字客户端连接到此以太网套接字。我很困惑,请帮忙。提前致谢萨加尔 最佳答案 原始以太网套接字,例如SOCK_RAW,如果您不编写协议(protocol)处理程序(您不想这样做),则不能用于TCP通信。您应该知道如何在原始以太网模式下打开套接字时序列化/反序列化以太网帧。SOCK_STREAM是TCP的模式,互联网上充斥着TCP客户端/服务器代码的示例。