Questions tagged «tcp»

传输控制协议(TCP)是一种传输层协议,可提供面向连接的数据流服务,并保证按顺序传送。

8
Web服务器可以处理多少个套接字连接?
说如果要共享,虚拟或专用托管,我读到某处服务器/机器一次只能处理64,000个TCP连接的情况,这是真的吗?不管带宽如何,任何类型的主机可以处理多少个?我假设HTTP通过TCP起作用。 这是否意味着只有64,000个用户可以连接到该网站,并且如果我想提供更多服务,就不得不转到网络农场?


5
Linux:是否有超时的套接字读取或接收?
如何尝试在超时的情况下从套接字读取数据?我知道,选择,pselect,轮询具有超时字段,但是使用它们会禁用tcp reno堆栈中的“ tcp快速路径”。 我唯一的想法是在循环中使用recv(fd,...,MSG_DONTWAIT)
105 c  linux  sockets  tcp 


14
HTTP是否使用UDP?
这可能是一个愚蠢的问题: HTTP是否曾经使用过用户数据报协议? 例如: 如果使用HTTP流式传输MP3或视频,它内部是否使用UDP进行传输?
103 http  tcp  udp 

13
视频流上的TCP与UDP
我刚从网络编程考试中回来,他们问我们的一个问题是“如果要流式传输视频,您将使用TCP还是UDP?对存储的视频和实时视频流进行解释”。对于这个问题,他们只是希望对存储的视频使用TCP做出简短的回答,对实时视频使用UDP做出简短的回答,但是我在回家的路上就想到了这一点,并且使用UDP传输实时视频是否一定更好?我的意思是,如果您有足够的带宽,并且说您正在直播足球比赛或音乐会,那么您真的需要使用UDP吗? 可以说,在播放此音乐会或使用TCP的任何内容时,您开始丢失数据包(在您和发送方之间的某些网络中发生了一些不好的事情),并且一整分钟您都没有收到任何数据包。视频流将暂停,一分钟后,数据包将再次开始通过(IP为您找到了一条新路由)。然后将发生的情况是,TCP将在您丢失的那一刻重新传输并继续向您发送实时流。假设带宽高于流的比特率,并且ping不太高,因此在很短的时间内,您丢失的一分钟将为您充当流的缓冲区。 ,如果再次发生丢包,您将不会注意到。 现在,我可以想到一些不是一个好主意的设备,例如视频会议,您需要始终处于视频流的结尾,因为视频聊天过程中的延迟太可怕了,但是在足球比赛或音乐会中,如果您落后于直播,那又有什么关系呢?另外,可以确保您获得所有数据,并且最好保存起来以备以后查看,而不会出现任何错误。 因此,这使我想到了问题。使用TCP进行实时流传输是否有我不知道的缺点?还是真的应该这样,如果您有带宽,那么就应该使用TCP,因为它对网络“更小”(流控制)?


15
我是否需要心跳以保持TCP连接打开?
我有两个通过TCP / IP进行通信的组件。组件A充当服务器/侦听器,而组件B充当客户端。两者应尽快沟通。任何时候都只能有一个连接(尽管此问题除外)。我公司的一位高级开发人员表示,我需要在两个组件之间使用应用程序级心跳,以确保连接保持打开状态。 我以为使用TCP / IP可以保持连接打开,但是我读过许多博客/站点,这是在这些应用程序之间进行心跳检测的非常标准的做法。 我知道组件A心跳组件B的部分原因是,它可以在组件B存在通信问题(链接断开或组件B未运行)时通知支持。是否由于其他原因需要心跳?如要确保经常有“管道中的东西”保持打开状态? 当前,组件A每20秒对组件B进行一次心跳检测,如果在120​​秒内没有收到来自组件B的任何反馈,则关闭连接。然后假定组件B在链路断开的情况下会定期尝试重新连接,它会继续侦听连接。这可以成功工作。 重申我的问题:是否必须保持心跳才能保持TCP / IP连接的活动?
94 sockets  tcp 

13
当您需要可靠的UDP时使用什么?
如果您遇到TCP连接可能太慢而UDP'连接'可能太不可靠的情况,该怎么使用?有各种各样的标准可靠的UDP协议,您对它们有什么经验? 请针对每个答复讨论一种协议,如果其他人已经提及您使用的协议,则可以考虑将其投票,并在需要时使用评论详细说明。 我对这里的各种选项感兴趣,其中TCP处于规模的一端,而UDP处于另一端。提供了各种可靠的UDP选项,每个选项都将TCP的某些元素引入UDP。 我知道,TCP通常是正确的选择,但是列出替代方案通常有助于帮助得出这一结论。基于UDP构建的诸如Enet,RUDP等之类的东西各有利弊,您使用过它们,您的经验是什么? 为避免疑问,没有更多的信息,这是一个假设性的问题,我希望能引出一系列答复,详细说明需要做出决定的人可以使用的各种选择和替代方案。

12
为什么在没有尝试I / O的情况下不可能检测到TCP套接字已被对等端正常关闭?
作为对最近一个问题的回应,我想知道为什么在Java中如果不尝试在TCP套接字上进行读/写操作就无法检测到套接字已被对等端正常关闭了,这是为什么?不管是使用pre-NIO Socket还是NIO,似乎都是这种情况SocketChannel。 当对等方正常关闭TCP连接时,连接两端的TCP堆栈都会知道这一事实。服务器端(启动关闭操作的服务器)以状态结束FIN_WAIT2,而客户端端(未明确响应关闭操作的服务器)以状态服务器结束CLOSE_WAIT。为什么没有一个方法Socket或SocketChannel可以查询TCP堆栈看到底层的TCP连接是否已经终止?TCP堆栈不提供此类状态信息吗?还是为了避免昂贵地调用内核而做出的设计决定? 在已经发布了该问题的一些答案的用户的帮助下,我认为我知道问题可能来自何处。没有显式关闭连接的那一侧将以TCP状态结束,CLOSE_WAIT这意味着该连接正在关闭过程中,并等待该一侧发出自己的CLOSE操作。我想这是公平的,以至于isConnected收益true和isClosed回报false,但为什么没有像isClosing? 以下是使用pre-NIO套接字的测试类。但是使用NIO可以获得相同的结果。 import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws Exception { final ServerSocket ss = new ServerSocket(12345); final Socket cs = ss.accept(); System.out.println("Accepted connection"); Thread.sleep(5000); cs.close(); System.out.println("Closed connection"); ss.close(); Thread.sleep(100000); } } import java.net.Socket; public class MyClient { public static …


3
如何建立浏览器到浏览器(点对点)的连接?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我如何在客户端使用HTML5,CSS和JavaScript编写网站,以便在页面加载后允许客户端浏览器之间的直接tcp / ip连接。 我需要这样做以减少延迟,因为该站点要求将其中一个用户的输入尽快传输给另一用户,因此从客户端A到服务器再向客户端B发送数据并不是一个好习惯。选项。 我阅读了有关此主题的先前文章,但是没有可用的解决方案/示例。据我了解,可以使用Silverlight,Java或Flash等插件在客户端之间建立直接连接。 是否有不需要插件的解决方案?我只想使用JavaScript。
83 javascript  html  tcp  p2p  tcp-ip 

9
TCP中的流量控制和拥塞控制有什么区别?
TCP中的流量控制和拥塞控制有什么区别? 这个问题可以分为两部分: 流量和拥塞控制的总体目的是什么? 任务如何完成? 根据维基百科,TCP流控制依赖于ACK消息中报告的窗口大小。拥塞控制还依赖于确认消息。我想知道两个目标之间的区别是什么,以及它们是如何工作的。

12
Python:绑定套接字:“地址已在使用中”
我对TCP / IP网络上的客户端套接字有疑问。假设我用 try: comSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(1) try: comSocket.bind(('', 5555)) comSocket.connect() except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(2) 创建的套接字将绑定到端口5555。问题是结束连接后 comSocket.shutdown(1) comSocket.close() 使用wireshark,我看到套接字从两侧都被FIN,ACK和ACK关闭,我无法再次使用该端口。我收到以下错误: [ERROR] Address already in use 我想知道如何立即清除端口,以便下次仍可以使用该端口。 comSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) setsockopt似乎无法解决问题,谢谢!
81 python  sockets  tcp  port 

1
WebRTC是否使用TCP或UDP?
这听起来像一个非常基本的问题,但我需要确认 WebRTC是否使用TCP或UDP作为其对等传输?我怎么知道 ? 我读到有可靠性模式和DTLS协议,它们如何影响? Media和DataChannel的传输方式是否相同? 如何在TCP和UDP之间切换? 我之所以这样问,是因为我知道浏览器对并行连接的数量有限制(我认为他们谈论的是TCP),也许UDP连接不受限制。
81 tcp  udp  webrtc  channel  transport 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.