Articles of networking

同一台机器上的套接字适用于Windows和Linux

与Windows和Linux上的命名pipe道和其他方法相比,在执行IPC时使用套接字的效率如何? 现在,我有4个独立的应用程序在4个独立的盒子需要沟通。 两个是在Windows Server 2003 R2上运行的.NET 3.5应用程序。 两个是Linux(Suse Linux 10)。 它们通常不受CPU限制。 stream量不是那么大,但是非常重要的是低延迟。 我们现在使用套接字,在Linux机器上安装了sles10慢启动补丁。 只要简单地在同一个窗口框中运行两个Windows应用程序,并在同一个Linux机器上运行两个Linux应用程序并且不进行代码更改(即仍然使用套接字),您认为我们可以获得多less速度提升。 请问操作系统是否意识到端点在同一台机器上,并且知道不要使用这些数据包出去以太网? 他们的数据包是否仍然需要通过整个networking栈? 如果我们花时间更改命名pipe道或内存映射文件或其他东西,速度会快多less?

服务器的单个端口(套接字)上的最大并发连接数

并发客户端(使用不同的端口号)的最大数量可以在同一端口(单个套接字)上与服务器通信的最大数量是多less? 什么是可能影响这个计数的因素? 我正在Linux环境中寻找这个信息和telnet。

如何将原始套接字绑定到特定的接口

我的应用程序在CentOS 5.5上运行。 我正在使用原始套接字发送数据: sd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (sd < 0) { // Error } const int opt_on = 1; rc = setsockopt(m_SocketDescriptor, IPPROTO_IP, IP_HDRINCL, &opt_on, sizeof(opt_on)); if (rc < 0) { close(sd); // Error } struct sockaddr_in sin; memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = my_ip_address; if (sendto(m_SocketDescriptor, DataBuffer, (size_t)TotalSize, 0, (struct […]

TCP重传在Linux上的应用控制

对于急躁: 如何改变/proc/sys/net/ipv4/tcp_retries2在Linux中的单个连接的值,使用setsockopt() , ioctl()等,或者这是可能的? 更长的描述: 我正在开发一个使用长轮询HTTP请求的应用程序。 在服务器端,客户端closures连接时需要知道。 准确性并不重要,但肯定不会15分钟。 接近一分钟会好起来的。 对于那些不熟悉这个概念的人来说,一个长轮询HTTP请求就像这样工作: 客户端发送一个请求 服务器响应HTTP标头,但保持响应打开。 使用分块传输编码,允许服务器在数据可用时发送数据位。 当所有数据被发送时,服务器发送一个“closures块”来表示响应已完成。 在我的应用程序中,服务器每隔一段时间(默认30秒)向客户端发送“心跳”。 心跳只是作为响应块发送的换行符。 这是为了保持线路繁忙,以便我们通知连接丢失。 当客户端正确closures时没有问题。 但是,当强制closures(例如,客户端机器断电)时,不会发送TCP重置。 在这种情况下,服务器发送一个心跳,客户端不会确认。 在这之后,服务器在放弃并向应用层(我们的HTTP服务器)报告失败后大约持续15分钟重传数据包。 在我的情况下,15分钟太久了。 我可以通过写入/proc/sys/net/ipv4/的以下文件来控制重新传输时间: tcp_retries1 – INTEGER This value influences the time, after which TCP decides, that something is wrong due to unacknowledged RTO retransmissions, and reports this suspicion to the network layer. See tcp_retries2 for […]

如何监视Linux UDP缓冲区的可用空间?

我有一个Linux上的Java应用程序打开UDP套接字,并等待消息。 在重负载的情况下几个小时后,有一个数据包丢失,即数据包被内核接收,但不是由我的应用程序(我们看到在嗅探器中丢失的数据包,我们看到在netstat丢失的UDP数据包,我们没有看到这些数据包在我们的应用程序日志)。 我们尝试了扩大套接字缓冲区,但这没有帮助 – 我们之后开始丢失数据包,但就是这样。 对于debugging,我想知道在任何时候,操作系统udp缓冲区是多么的充足。 Googlesearch,但没有find任何东西。 你可以帮我吗? PS伙计们,我知道UDP是不可靠的。 但是 – 我的电脑收到所有UDP消息,而我的应用程序无法使用其中的一些。 我想优化我的应用程序到最大,这就是问题的原因。 谢谢。

我怎样才能模拟TCP / IP错误?

在多层应用程序中,我需要模拟各种TCP / IP错误来testing一些重新连接代码。 有谁知道任何工具(基于Windows)我可以用于这个目的? 谢谢。

制作拦截Windows中的networkingstream量的程序

我问的是“如何为Windows制作软件防火墙”,但其实并不那么复杂。 我很惊讶,在search这个时候我可以find这么一点,只是偶尔提到钩子。 所以,如果有人能指引我正确的方向,我将非常感激。 我期望用C来做这件事(不过如果还有另外一种语言你会认为会更好,我完全可以接受)。 我想创build一个监视networkingstream量的应用程序,可以提取IP地址(传入源,传出目标),并可以阻止上述networking活动。 这看起来好像在内核中要容易得多,但是我不想在那里混淆,也不能在Windows中访问。 我并不担心效率,也不想制造个人防火墙。 这只是一个关于IP地址的实验。 任何指针? 注意:重要的是我可以阻止networking某些networking活动,而不仅仅是监视它

arp -a和路由打印

我需要编写一个显示这些信息的程序: netstat的 TCP / UDP连接 有关IP ipconfig / all的信息 ARP-A 路线打印 我已经有了其中的大部分,但是我在route print和arp -a遇到了问题。 我不想使用Process.Start()执行这个命令,因为它看起来不太壮观: Process p = new Process (); p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "route"; p.StartInfo.Arguments = "PRINT"; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.CreateNoWindow = true; p.StartInfo.StandardOutputEncoding = Encoding.Default; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.Start(); TextBox1.Text = p.StandardOutput.ReadToEnd(); 我想使用foreach循环来获取数据到ListView或DataGrid列。 有没有人能够帮助我? 我怎样才能得到这个数据到每个列:目的地,networking掩码,网关,接口,指标和永久路由? 而在ARP的情况下,Internet地址types的物理地址?

无需路由器直接通过无线访问Windows Server 2012上的IIS

刚刚买了一台新的服务器,并安装了Windows Server 2012。 服务器有一个无线设备。 我打算在该服务器上部署Web应用程序,并希望所有用户通过无线方式直接连接到该服务器(不使用任何路由器/交换机)。 所以基本上,Windows Server 2012已经安装了DHCP分配IP地址给无线连接到该服务器的任何用户; 并且用户能够导航到部署在IIS中的网站。 如何configurationWindows Server 2012来提供此function? 最终的结果是: – >用户可以看到由Windows服务器广播的WIFI名称 – >然后用户连接到它与一些安全保护(例如:WEP) – >然后用户打开他的浏览器,并导航到通过input本地IP地址来访问Web应用程序。 谢谢你的任何build议。

如何从Windows程序访问类似netstat的以太网统计信息

如何从C / C ++代码如netstat -e访问以太网统计信息? Interface Statistics Received Sent Bytes 21010071 15425579 Unicast packets 95512 94166 Non-unicast packets 12510 7 Discards 0 0 Errors 0 3 Unknown protocols 0