什么是TCP连接的最大数据包大小,或者如何获得最大数据包大小?
我运行一个Express js应用程序与socket.io为一个聊天的Web应用程序,我得到了以下错误在24小时内大约5次随机。 节点进程被永久封装,并立即重新启动。 问题是,重新启动快速将我的用户踢出他们的房间,没有人愿意。 Web服务器由HAProxy代理。 没有套接字稳定性问题,只使用websocket和flashsockets传输。 我无法重现这个故意。 这是节点v0.10.11的错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET //alternatively it sa 'write' at errnoException (net.js:900:11) at TCP.onread (net.js:555:19) error: Forever detected script exited with code: 8 error: Forever restarting script for 2 time 编辑(2013-07-22) 添加了socket.io客户端error handling程序和未捕获的exception处理程序。 似乎这个错误发生了: process.on('uncaughtException', function (err) { console.error(err.stack); console.log("Node NOT […]
最近我查阅了Richards Stevens 编写的“UNIX Network Programming,Vol。1”一书,发现TCP和UDP之外还有第三种传输层标准: SCTP 。 简介:SCTP是一种像UDP一样的消息驱动的传输级协议,但像TCP一样可靠。 这是IBM DeveloperWorks的简短介绍 。 老实说,我从来没有听说过SCTP。 我不记得在任何networking书籍中读过这些东西,或者我在课堂上听说过这些东西。 阅读提到SCTP的其他stackoverflow问题表明,我并不孤单知识缺乏。 为什么SCTP如此不明? 为什么没有太多的使用?
假设硬件性能无限,一个Linux机箱能支持> 65536个打开的TCP连接吗? 我知道短暂端口数(<65536)限制了从一个本地IP到一个远程IP上的一个端口的连接数量。 元组(本地ip,本地端口,远程ip,远程端口)是唯一定义TCP连接的东西; 这是否意味着如果这些参数中有多于一个是免费的,则可以支持超过65K个连接。 例如从多个本地IP连接到多个远程主机上的单个端口号。 系统中还有16位的限制吗? 文件描述符的数量也许?
我想在Linux上模拟UDP和TCP数据包延迟和丢失来衡量应用程序的性能。 有一个简单的方法来做到这一点?
我收到连接超时时发生了一个软件错误。 这些错误是非常罕见的(通常当我的连接被我们的内部networking丢弃时)。 我怎么能人为地产生这种效果,所以我可以testing我们的软件? 如果有问题,应用程序是使用CAsyncSocket类在C ++ / MFC中编写的。 编辑: 我试过使用一个不存在的主机,我得到的套接字错误: WSAEINVAL(10022)无效的参数 我下一个尝试是使用亚历山大的build议,连接到不同的端口,例如81(在我自己的服务器上)。 这很好。 与丢弃的连接完全相同(60秒等待,然后错误)。 谢谢!
什么是最高的端口号码可以使用?
我被要求写一个servlet,收集客户的详细信息,如IP,MAC地址等 得到他的IP是非常直接的( request.getRemoteAddr() ),但我没有find一个优雅的方式来获得他的MAC地址。 似乎是合理的,networking服务器可以访问数据,如Mac地址等,因为它获取TCP数据包和所有。 这个数据是否在某个地方注册? 可以访问吗? (我正在Tomcat6之上工作)
假设有一个客户端与服务器build立了很多短暂的连接。 如果客户端closures连接,则在客户端将有许多处于TIME_WAIT状态的端口。 由于客户端用完了本地端口,因此不可能迅速build立新的连接。 如果服务器closures连接,我会在服务器端看到很多TIME_WAIT 。 但是,这是否有害? 客户端(或其他客户端)可以继续进行连接尝试,因为它永远不会从本地端口中耗尽,并且服务器端的TIME_WAIT状态数将增加。 最终会发生什么? 有什么不好发生? (减速,崩溃,连接断开等) 请注意,我的问题不是“ TIME_WAIT的目的是什么? 但是“如果服务器上有这么多的TIME_WAIT状态会发生什么? 我已经知道在TCP / IP中closures连接时会发生什么,以及为什么需要TIME_WAIT状态。 我不是在试图麻烦 – 拍摄它,而是想知道它有什么潜在的问题。 简而言之,让我们说netstat -nat | grep :8080 | grep TIME_WAIT | wc -l netstat -nat | grep :8080 | grep TIME_WAIT | wc -l netstat -nat | grep :8080 | grep TIME_WAIT | wc -l打印100000 。 会发生什么? O […]
这可能是一个非常基本的问题,但它使我感到困惑。 两个不同的连接sockets可以共享一个端口吗? 我正在编写一个能够处理超过10万个并发连接的应用程序服务器,并且我们知道系统上可用端口的数量大约为60k(16位)。 一个连接的套接字被分配给一个新的(专用)端口,所以这意味着并发连接的数量受到端口数量的限制,除非多个套接字可以共享相同的端口。 所以这个问题。 我在这里先向您的帮助表示感谢!