关于TCP协议,我有两个问题:
我使用python和套接字库。
发布于 2021-03-30 18:23:30
TCP是一种流协议。这意味着您作为发送方无法控制内核中实际执行了多少发送操作。这里有几种机制在发挥作用。客户端只需一个字节就可以多次调用send。TCP将尝试累积这些字节,直到填充L2的MTU,然后才发送,或者在到达超时时才发送。在一次发送操作中,您可以发送64K左右。要发送一个文件,您需要几个发送操作,直到整个文件被发送。
在TCP的接收端,发送操作的数量和接收操作的数量没有关系。如果发送者连续和快速地发送5次10字节,很可能在一次接收操作中接收到50字节。
实际上,对于TCP来说,没有像数据包这样的东西。它被称为框架。数据包用于UDP,因为UDP不是流协议。在UDP中,如果发送5个字节,由于UDP不面向连接,接收方将接收5个字节或什么也不接收。而TCP是。对于UDP,最大大小约为64k。这64k将被IP切碎,通过电线发送,IP将在接收时将其重新组合在一起。这一切都是因为L2的MTU。
https://stackoverflow.com/questions/66857509
复制相似问题