草庐IT

cellular-network

全部标签

networking - 我如何强制 tcp 丢弃缓冲区中最旧的数据段并接受 NS2 中应用程序写入的新数据

我正在尝试调整TCP以在实时通信中正常工作。要做到这一点,规范之一是强制TCP接受应用程序写入的新数据,即使缓冲区已满,这使得TCP有时“不可靠”。这样,应用程序写入调用就不会被阻塞,发送方应用程序的时间也不会中断。我认为NS2中必须有一个选项才能使其成为可能。那么,如何强制TCP丢弃缓冲区中最旧的数据段并接受NS2中应用程序写入的新数据? 最佳答案 你不能。TCP是“可靠流”。任何允许删除数据的功能都与该目标背道而驰,因此不存在此类支持。如果您希望能够丢弃数据,如果您想要“最可靠的传送”而不是“最大努力”,您将不得不切换到UDP之

networking - 数据包IP标识生成

我正在研究IP数据包结构,我想知道操作系统是如何生成IP标识号的。我相信不同的平台会有不同的算法。如果有人能指出一些可靠的引用资料来理解细节,我将不胜感激。谢谢 最佳答案 如果您想了解操作系统如何实现某些功能,只需查看几种可用的免费操作系统之一的源代码即可。在这种情况下,您要查找的代码在Linux的__ip_select_ident中。功能。看起来它保留了一些每个点(每个目标地址)的状态信息(基本上是一个计数器),但它也有一个回退算法,以防查找此状态信息失败。 关于networking-

networking - 小 TCP 接收窗口的好处?

当我遇到接收窗口的概念时,我正试图了解TCP流量控制的工作原理。我的问题是,为什么TCP接收窗口是可扩展的?实现较小的接收窗口大小有什么好处吗?因为据我了解,接收窗口大小越大,吞吐量就越高。而接收窗口越小,吞吐量越低,因为TCP将始终等待分配的缓冲区未满,然后再发送更多数据。那么,让接收窗口始终处于最大值以获得最大传输速率是否有意义? 最佳答案 Myquestionis,whyistheTCPreceivewindowscale-able?这里有两个问题。窗口缩放是将比例乘以2的幂的能力,因此您可以使窗口大小>64k。但是,您的问题

networking - 需要帮助决定何时在我的基本聊天网络中使用 UDP over TCP

我已经阅读了很多关于UDP与TCP的其他线程,但还没有真正找到任何能够正确回答我的设计问题的线程我将为一个项目开发的聊天网络将有3个主要应用程序:客户端、服务器和一个HUB(服务器)。HUB服务器是将所有服务器连接在一起形成网络的主要服务器。服务器将跟上正在创建的聊天室,换句话说,它将托管聊天室。客户端将用于连接到服务器以加入聊天室。现在我主要关心的是,在从客户端到客户端、服务器到服务器或服务器到客户端发送或执行请求时,我什么时候应该使用UDPoverTCP,反之亦然?注意:整个聊天网络项目100%基于文本,没有图形、网络摄像头、麦克风或文件共享功能。 最佳

networking - HTTP 响应是否兼作 TCP 确认信号?

我知道TCP被认为是一种可靠的协议(protocol),因为它向发送器发送确认信号,使其知道数据包已完好无损地到达目的地。在处理传入的HTTP请求时,TCP是否会在将数据传递给HTTP协议(protocol)进行处理之前发送确认信号?还是HTTP协议(protocol)发送的响应报文兼作确认信号? 最佳答案 您的问题在这里似乎有些离题。但是……简短的回答是肯定的。TCP在HTTP看到数据之前发送ACK。但是HTTP响应不是TCPACK。稍微长一点的答案是,在大多数系统上,TCPack独立于堆栈中较高层的处理。通常为每个数据窗口发送一

networking - TCP 数据包的旅程和每一跳的变化(IP 地址和端口发生)

我试图了解在跃点期间IP数据包发生了什么样的结构变化。请允许我用例子解释我的问题。traceroute-w1google.comtraceroutetogoogle.com(216.58.199.174),64hopsmax,52bytepackets1192.168.0.1(192.168.0.1)1.055ms0.857ms0.822ms210.0.0.1(10.0.0.1)2.038ms1.477ms1.540ms3***4114.79.130.1.dvois.com(114.79.130.1)3.091ms2.076ms2.329ms510.241.1.6(10.241.1.6

networking - IP 分段中的额外字节

我目前正在浏览我的网络幻灯片,想知道是否有人可以帮助我了解碎片化的概念所以我理解第一部分直到“108字节”,但我不明白的是这个“8字节=13.5=>13*8字节=104字节”这些额外的字节是什么?剩下的就清楚了。 最佳答案 您必须在八字节边界上对数据包负载进行分段。对于128字节的MTU,您可以拥有的最大负载片段是104字节,这比简单地从MTU中减去IP报头(108字节)要小。文本告诉您的是,从MTU中减去数据包header大小(20字节),下一个可被8整除的较小片段大小是104字节。RFC791,InternetProtocol完

networking - TCP 连接持久状态

是否有任何字段/选项/任何我可以放入TCP数据包(无论是syn还是ack或只是纯数据)我可以确定会被另一端原封不动地返回?例如。我想用一个数字“标记”一个特定的连接(src、srcport、dst、dstport),我总是可以从属于该连接的数据包中读取该数字。这意味着我可以在不使用4元组的情况下识别连接(如上所述)。 最佳答案 是的:它被称为封装在TCP服务器协议(protocol)中的Client协议(protocol)。换句话说:定义客户端协议(protocol)以满足您的需求。不要试图在TCP开销中“推”额外的位。当然还有'o

networking - TCP 状态实现

在我的网络类(class)中,我学习了11种tcp状态,它们如下:关闭听同步发送同步接收成立Fin_Wait_1Fin_Wait_2结束Time_Wait最后确认关闭等待我不知道在Linux内核网络架构中实际实现了多少这些状态。我想使用系统调用编写一个程序,该程序可以捕获所有这些在Linux内核中实现的状态。实际上我想使用套接字编程和系统调用来捕获这些状态,例如:每当我执行netstat-taupen|greptcp,我想在不同时间的相同tcp连接的状态列中查看所有这些连接状态。有人给我一些关于如何编写这样的代码的想法。 最佳答案

networking - 如果接收进程停止或挂起,TCP 连接会发生什么情况?

例如,在TCPTahoe连接中,如果发生大文件传输。突然接收进程或主机关闭或挂起,我知道我们会超时,此时窗口大小将被重置等。据我了解,我们将重新发送未确认的数据包,然后重试,可能又一次?不过我想知道,在这样的超时之后,在假设接收方不再存在并且数据将停止发送之前,数据将被重新发送多少次。如果进程从挂起状态恢复,它是否能够继续接收数据?我知道数据会在三次重复确认或超时后重新传输。但是,如果多次重传失败,或者接收进程突然停止接收,我找不到太多可读的内容。 最佳答案 如果接收进程退出或被杀死,其端的套接字将被关闭。当发送方继续发送数据包时,