草庐IT

tcp_sendmsg

全部标签

tcp - YouTube 是否通过 TCP 流式传输视频?

我刚刚使用wireshark嗅探了一些流量并注意到,YouTube流量依赖于TCP。我想,他们在使用UDP?但他们似乎会使用HTTP八位位组流。YouTube真的使用TCP传输流还是我遗漏了什么? 最佳答案 因为他们需要TCP提供的一切(慢启动、传输节奏、指数退避、接收窗口、重新排序、重复拒绝等),他们要么必须使用TCP,要么尝试自己做所有这些事情。没有比每个操作系统的优化TCP实现更好的方法了。 关于tcp-YouTube是否通过TCP流式传输视频?,我们在StackOverflow上

tcp - TCP ack 中的数据负载

我正在筛选一些网络跟踪并在我自己的机器上注意到当我通过HTTP连接时,数据包看起来像这样:client-->server:GETserver-->client:tcpackserver-->client:HTTPresponseclient-->server:tcpack但是,我查看了几年前保存的一些CIFS(SMB)跟踪。我看到类似的东西:client-->server:CreateRequestserver-->client:Createresponse(Thispacketalsoackstherequest)在高层次上,我想知道为什么会有差异-是什么导致了不同的行为?是什么在控

networking - 如何在不需要任何重定向配置的情况下使 TCP 服务器在路由器 (NAT) 后面工作

场景如下。我有两台机器A和B:A:客户端(在NAT后面)B:服务器(NAT后)我希望B能够监听任何给定端口,以便A可以通过该特定TCP端口向B发送数据包并接收任何响应。如果两台机器都不在NAT后面,则过程非常简单。然而,我如何让它工作,以便即使B在路由器后面也能工作,而无需他去更改路由器配置启用一些端口转发等...例如,在用户无需进行任何配置的情况下,像Torrent客户端这样的点对点程序如何工作? 最佳答案 回答点对点程序的例子,一般来说:有一种技术叫做UniversalPlugandPlayNAT路由器可以使用哪些NAT路由器允

delphi - 当设置为 500 毫秒时,*某些* PC 上的 TCP 连接超时为 20 或 21 秒

我得到了10台新PC,所有(据说)都新安装了Windows7Pro,没有对它们进行任何其他操作。我有一个程序,用DelphiXE2编码,使用Indy10组件进行网络连接。我将我的TIdTcpCleint的“连接超时”和“读取超时”属性设置为500ms,将“resusesocket”设置为“o/sdependant”(我还尝试将其设置为No)并保留“使用Nagle”(无论设置为True是什么(我也尝试过设置为false)。这就是问题所在:当我在这些PC上运行相同的.EXE并测试我拔出网络电缆的情况时,我的调试跟踪显示连接尝试/连接超时发生在同一秒或下一秒(带有粒度为1秒)-但在其他情况下

tcp - 在接受之前拒绝 TCP 连接?

winsock中有3个不同的accept版本。除了符合标准的基本accept之外,还有AcceptEx似乎是最先进的版本(由于它具有重叠的io功能),以及WSAAccept。后者支持条件回调,据我所知,它允许在连接请求被接受之前拒绝它们(当启用SO_CONDITIONAL_ACCEPT选项时)。其他版本均不支持此功能。因为我更喜欢使用重叠io的AcceptEx,我想知道为什么这个功能只在更简单的版本中可用?我不太了解TCP的内部工作原理,无法判断在连接被接受之前拒绝连接和在连接建立后立即断开套接字之间实际上有什么区别吗?如果有,是否有任何方法可以使用AcceptEx模拟WSAAccep

networking - FTP是否可以具有多个TCP连接以进行多个并行文件传输

从:(http://www.pcvr.nl/tcpip/ftp_file.htm)阅读FTP协议(protocol)规范。我遇到了这个“FTP不同于我们描述的其他应用程序,因为它使用两个TCP连接来传输文件”。我的问题是,FTP是否可以有多个TCP连接用于多个并行文件传输,例如我可以通过两个TCP连接并行传输两个文件,这是定制还是标准化的问题? 最佳答案 虽然理论上可以使FTP服务器支持多个并发传输,但RFC不支持它。或任何已知的实现。该block是一个简单的block,因为控制连接在收到传输请求后,不会返回最终状态或接受新命令,直

tcp - Ethereal 转储中的 TSV 和 TSER 字段是什么意思?

Ethereal转储中的TSV和TSER字段是什么意思?我尝试使用谷歌搜索但找不到答案。 最佳答案 TSV是TimestampValue字段。它与序列号结合使用以唯一标识段(因为序列号可能会换行)。TSER是TimestampEchoReply字段。这用于ACK消息。它保存收到的最后一个TSV值的副本。它可用于往返时间估计(RTT=当前时间-TSER)。字段在RFC1323(TCPExtensionsforHighPerformance)中正式描述:TCPTimestampsOption(TSopt):Kind:8Length:10

macos - 从终端启动 TCP 服务器

如何使用nc从端口13370上的终端启动TCP服务器?我正在学习一个教程,该教程需要在13370上启动TCP服务器并通过它发送请求。tut建议我使用“nc”打开TCP服务器我该如何继续实现这一目标? 最佳答案 来自nc文档:Itisquitesimpletobuildaverybasicclient/servermodelusingnc.Ononeconsole,startnclis-teninglisteningonaspecificportforaconnection你应该使用-l参数,用于监听端口13370:$nc-l1337

c# - 在 Internet 上保持 TCP/IP 连接的套接字保持事件状态——什么时候?如何?多少钱?

更新:如果您想省去冗长的序言,请跳至答案。TCP/IP连接KeepAlives指定为至少每两小时一次:https://www.rfc-editor.org/rfc/rfc1122#page-101.问题是这是写于1989年的,并且担心发送额外的KeepAlive数据包的成本!然而,它仍然是大多数操作系统根据规范在一段时间不活动后向连接的套接字发送KeepAlives的默认时间!当然,现在大多数连接在此之前超时,如果处于非事件状态,并且如果通过Internet连接到对等点,则在此之前您不知情(尽管设置的超时高于此时间-我怀疑是因为它们之间的路由器表不会打扰保持它还活着——我一直想知道泄露

c# - Socket.Close 并没有真正关闭 tcp 套接字? (C#)

似乎对TCP套接字使用socket.Close()并没有完全关闭套接字。在下面的示例中,我尝试在未打开的端口9999连接到example.com,在短暂的超时后,我尝试关闭套接字。for(inti=0;i但是当我在循环完成后查看netstat时,我发现有很多半开的套接字:TCPisrael-xp:6506www.example.com:9999SYN_SENTTCPisrael-xp:6507www.example.com:9999SYN_SENTTCPisrael-xp:6508www.example.com:9999SYN_SENTTCPisrael-xp:6509www.exam