草庐IT

TCP_CORK

全部标签

networking - 如果其中一台机器死机,TCP 连接如何终止?

如果在两台主机(A和B)之间建立了TCP连接,假设主机A向主机B发送了5个八位字节,然后主机B崩溃(由于未知原因)。主机A将等待确认,但如果没有收到,将重新发送八位字节并减小发送方窗口大小。这将重复几次,直到窗口大小由于数据包丢失而缩小为零。我的问题是,接下来会发生什么? 最佳答案 在这种情况下,TCP最终会超时等待ack,并向应用程序返回一个错误。应用程序必须从TCP套接字读取/接收以了解该错误,随后的写入/发送调用也会失败。在TCP确定连接断开之前,写入/发送调用不会失败,它们会从应用程序中看到成功,或者如果套接字缓冲区已满则阻

Java TCP/IP 套接字延迟 - 停留在 50 μs(微秒)? (用于 Java IPC)

我们一直在分析和分析我们的应用程序,以尽可能减少延迟。我们的应用程序由3个独立的Java进程组成,它们都在同一台服务器上运行,它们通过TCP/IP套接字相互传递消息。我们已将第一个组件的处理时间减少到25微秒,但我们发现TCP/IP套接字写入(在本地主机上)到下一个组件总是需要大约50微秒。我们看到了另一种异常行为,因为接受连接的组件可以更快地写入(即不是TCP/IP专家,我不知道可以做些什么来加快速度。Unix域套接字会更快吗?内存映射文件?还有哪些其他机制可能是将数据从一个Java进程传递到另一个进程的更快方法?2011年6月21日更新我们创建了2个基准应用程序,一个用Java,一

ruby - Heroku worker dyno 进程间的 TCP Socket 通信

我想知道如何在Herokuworkerdyno上的进程之间进行通信。我们希望Resqueworker读取队列并将数据发送到在同一个dyno上运行的另一个进程。“其他进程”是一个现成的软件,通常使用TCP套接字(端口xyz)来监听命令。它被设置为在Resqueworker启动之前作为后台进程运行。但是,当我们尝试在本地连接到该TCP套接字时,我们一无所获。我们设置队列的Rake任务是这样做的:task"resque:setup"do#Firstlaunchourlistenerprocessinthebackground`./some_process_that_listens_on_po

delphi - 从 "Connection Reset By Peer"Indy TCP 客户端恢复

在这种情况下我应该如何恢复?服务器崩溃,连接异常关闭。对几乎所有内容的调用都会导致“对等方重置连接”异常。我似乎已经通过在exceptblock内的TIdTCPClient对象上调用Disconnect来修复它,但它导致了一个带有相同消息的最终异常(我在第二个try-exceptblock中捕获了它)。这是Indy10和DelphiXE2。tryifnotEcomSocket.ConnectedthenEcomSocket.Connect();exceptone:ExceptiondobegintryEcomSocket.Disconnect();exceptMessageDlg('C

Java TCP/IP 套接字性能问题

我们的应用程序通过Java中的TCP/IP套接字非常快速地读取数据。我们使用带有非阻塞套接字和选择器的NIO库来指示准备好读取。平均而言,读取和处理读取数据的总处理时间为亚毫秒。然而,我们经常看到10-20毫秒的尖峰。(在Linux上运行)。使用tcpdump我们可以看到tcpdump读取2条离散消息之间的时间差,并将其与我们的应用程序时间进行比较。我们看到tcpdump似乎没有延迟,而应用程序可以显示20毫秒。我们非常确定这不是GC,因为GC日志几乎没有显示FullGC,并且在JDK6中(据我了解)默认GC是并行的,所以它不应该暂停应用程序线程(除非完整的GC)。看起来Java的Se

Wireshark抓取网卡协议分析(TCP,UDP,ARP,DNS,DHCP,HTTP超详细版本)

1.Wireshark抓包使用wireshark工具抓取ping命令操作选择本机网卡WLAN,点击开始,开始抓包在数据列表区中选取TCP协议,在数据详细区中显示出其详细信息(1)Frame:物理层的数据帧概况(2)EthernetII:数据链路层以太网帧头部信息(3)InternetProtocolVersion6:互联网层IP包头部信息(4)TransmissionControlProtocol:传输层的数据段头部信息,此处是TCP(5)HypertextTransferProtocol:应用层的信息,应用层协议中有此信息如HTTP执行抓包的操作:如pingwww.baidu.comwire

networking - 为什么TCP在接收方缓冲数据

在大多数TCPPUSH功能的描述中,都会提到PUSH特性不仅要求发送方立即发送数据(无需等待其缓冲区填满),还要求将数据推送到接收应用程序在接收端,没有被缓冲。我不明白的是为什么TCP会在接收端缓冲数据?毕竟,TCP段在IP数据报中传输,IP数据报是整体处理的(即,IP层在对携带任何给定段的IP数据报片段进行任何必要的重组后,仅将整个段传送到TCP层)。那么,为什么接收TCP层会等待将此数据传递给它的应用程序呢?一种情况可能是应用程序在那个时间点没有读取数据。但是,如果是这种情况,那么无论如何都不可能将数据强行推送到应用程序。因此,我的问题是,为什么PUSH功能需要规定有关接收方行为的

c# - 如何终止在 C# 中使用 TCP 端口的应用程序?

我想在我的应用程序启动期间释放一个TCP端口(要求用户确认),如何获取PID号,然后,如果用户确认,则终止它?我知道我可以通过netstat获取此信息,但如何在脚本中或如何在C#方法中更好。 最佳答案 您可以运行netstat,然后将输出重定向到文本流,这样您就可以解析并获取所需的信息。这是我做的。作为进程运行netstat-a-n-o重定向标准输出并捕获输出文本捕获结果,解析并返回所有正在使用的进程检查端口是否被占用使用linq查找进程运行Process.Kill()您将必须进行异常处理。namespacetest{staticc

PHP 游戏服务器,多个 TCP 客户端?

我正在制作一款基于网络浏览器的多人游戏。鉴于其实时性,我确定websockets是处理通信的最佳方式。客户端使用HTML5canvas渲染游戏,并使用websockets与主机通信。我选择使用PHP来托管游戏,因为托管服务提供商似乎更喜欢它。我以前没有使用过PHP,但在Java中用websockets做过类似的事情,但严重依赖多线程。我一直在看一些关于多客户端php套接字的教程;但他们中的大多数人都会为每个客户fork新流程。因为我会有一个不断运行的游戏循环,所以我认为这不合适。我想要实现的是一种在每个客户端连接时为其分配端口、监听新客户端、与当前客户端列表交换数据以及一起运行游戏循环

networking - 适合程序员的 TCP/IP 网络书籍?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我每天都在写Web应用程序,对HTTP有很好的理解。但是,我想弥补我在网络架构知识方面的差距。我不是系统管理员,所以一本核心的系统管理员引用书对我来说可能有点多,但我也不是在寻找一本关于如何以任何方式编写代码的书——我感兴趣的是我编写的所有有趣的Web代码背后的机制。有什么建议吗?