草庐IT

Networking

全部标签

c - "Sliding Window"- 是否可以增加协议(protocol)的可靠性并避免流量控制实现?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。作为个人项目的一部分,我正在制作一个可靠的应用程序级协议(protocol)(封装在UDP中)。为了实现可靠性,我必须跟踪我发送了哪些数据包,以及在另一端接收了哪些数据包。这是在滑动窗口的帮助下完成的,它还保持了流量控制。除了标准的滑动窗口/流量控制技术之外,是否还有其他方法可以实现可靠性。如果否,是否有人会分享他的经验/设计原理/代码并在这篇文章中进行讨论。如果是,您是否已实现它,或者您是否知

networking - 通过 TCP 代理的 RDP

第一次使用Stackoverflow,希望有人能帮助我。我正在研究通过TCP代理/隧道传递RDP流量的概念证明,该代理/隧道将使用HTTPS穿过防火墙。问题与将图像部署到机器有关,因此不能假定.NET框架将存在,因此在连接的部署端使用C++。我目前拥有的基本系统是一个程序,它监听端口上的客户端连接,然后将任何数据传递给WCF服务,该服务将其存储为字节数组。部署机器(使用GSoap和C++)轮询WCF服务以获取消息,如果找到消息,则通过套接字将数据传递到目标服务器进程。我知道这听起来很糟糕,但它适用于简单的测试客户端和服务器,通过此WCF/C++/C#代理层将数据传入和传出简单的测试客户

macos - 不同浏览器发送不同的 TCP/IP RST

在MacOSX(10.6)上,如果我开始下载YouTube视频并拉以太网电缆5秒左右,然后重新插入,我会得到不同的结果,具体取决于浏览器。使用Opera和Chrome,在我重新插入电缆后,视频会继续加载。但对于Safari和Firefox,它永远不会。使用Wireshark查看流量,我发现Opera和Chrome在电缆重新插入后简单地确认了来自YouTube的第一个数据包,但是Safari和Firefox在TCPheader中设置了RST标志(0x4)并且没有更多流量随之而来。我可以在机器和互联网连接之间放置一个集线器,问题消失了,当电缆重新插入集线器时,所有四个浏览器都继续加载视频。

c - 线程服务器,在客户端之间发送消息

我正在编写一个C网络服务器,它将两个客户端配对在一起并允许它们相互发送消息。目前,每个客户端在服务器中都有自己的线程,在线程中我有一个循环,基本上是while((numBytesRead=read(fd,buffer,1024))>0)。这工作正常,我能够接收消息,然后将它们回显给客户端。我的问题是我不确定通过服务器将消息从一个客户端传输到另一个客户端的最佳方式。我认为我最大的问题是read()阻塞,所以我无法向客户端发送消息,直到客户端向服务器发送一些文本以便读取停止阻塞.有什么办法解决这个问题吗?我最初的想法是创建一个线程用于从客户端读取,一个线程用于写入客户端,但如果读取在一个线

c# - WAN 上的 TCP 和 UDP 套接字服务器

我正在尝试创建一个同时使用TCP和UDP的服务器和客户端。服务器在LAN设置中运行良好,但在通过WAN传输时未收到UDP消息。我相信这是因为用于发送数据的UDP套接字在NAT表中的保留时间不足以返回任何信息。有没有办法让UDP端口在路由器中保持打开状态(没有端口转发)或使用与已连接的TCP连接相同的UDP端口?提前致谢。 最佳答案 如果您没有获得任何流量,它可能只是被防火墙阻止了。在这种情况下它不是关于转发,而是关于打开端口。大多数(如果不是全部)NAT/防火墙设备在NAT被打穿一个洞后将允许双向的UDP流量。也就是说,如果我的笔记

c# - 自动获取服务器IP给客户端

编写聊天程序(很多人都这样做),我发现我希望能够让客户端自动连接到服务器。但是,服务器的IP地址不是永久的,所以我不能将它硬核到程序中在TCP中,我正在寻找某种广播功能,让客户端知道服务器在哪里有什么想法吗?编辑:应该说,这将只是一个LAN程序-没有外部连接 最佳答案 如果您正在谈论LAN中的聊天并且出于某种原因您不能或不想使用DNS,您可以实现或找到UPnP使用的发现协议(protocol)的实现。SSDP基于UDP广播。据我所知,不可能通过TCP进行多播,因为TCP需要一个session。如果您想通过互联网使用聊天服务器,您别无

networking - TCP - 接收顺序错误

是否有可能以错误的顺序获取TCP数据包,由序列号指示?那么在接收方会发生什么?例如,是否有任何队列存放“过早”到达的口袋? 最佳答案 也许吧。接收TCP引擎有几个关于要做什么的选择。它唯一不能做的就是将那些乱序数据包中的数据乱序地传递给接收进程。接收TCP引擎可以丢弃无序数据。最终,发送TCP引擎将重新传输它们。在此之前,它当然也会重传间隙中的数据。当间隙中的数据到达时,接收引擎可以将其按顺序传递给接收进程。接收TCP引擎可以保存乱序数据。最终,要么间隙中的数据到达,要么发送TCP引擎将重传它。无论哪种方式,间隙都会被填补,接收引擎

sockets - 关闭/关闭对 TCP 接收缓冲区的影响

假设我有一个TCP客户端和一个TCP服务器。首先,客户端向服务器发送了一些数据,但是服务器正忙于做其他事情,所以它没有读取这个连接。数据保存在服务器主机上的TCP接收缓冲区中。在这一点上,请帮助我澄清在以下不同情况下会发生什么:在服务器调用读取之前,客户端在此连接上调用close。FIN已经到达服务器TCP,服务器TCP发送了ACK。此时,如果服务器在这个套接字上调用read,它会返回什么?它是否返回TCP接收缓冲区中的未读数据?还是只返回0表示EOF,未读数据被丢弃?在服务器调用read之前,客户端在此连接上使用SHUT_WR调用shutdown。FIN已经到达服务器TCP,服务器T

networking - 在 heroku 上设置 $PORT 变量

在heroku上,有一个名为$PORT的变量这是每次heroku启动应用程序时随机生成的。有没有办法设置它,使其在启动时保持不变?注意:我尝试了herokuconfig:set和config:add但除非我做错了,否则它没有生效。感谢任何帮助。 最佳答案 您不能更改分配的端口。如果您绑定(bind)到指定端口以外的任何其他端口,我们将使用R11errorcode终止您的进程。 关于networking-在heroku上设置$PORT变量,我们在StackOverflow上找到一个类似的问

sockets - 三向握手后是否发生接受事件?

我正在使用套接字编程在Linux(客户端和服务器)上编写应用程序。我遇到过这种情况,我的服务器应用程序从不响应另一端的初始SYN数据包。我还在调试这个问题。因为我的服务器正在监听一个端口,所以它从不生成接受事件。accept事件是在TCP握手完成后生成还是在收到初始SYN数据包时生成?一些有用的链接,会很有帮助。最好的 最佳答案 IstheaccepteventisgeneratedaftertheTCPhandshakeisdone是的。ORtheaccepteventisgeneratedwhentheinitialSYNpac