gpt4 book ai didi

language-agnostic - tcp底层传输机制/网络编程

转载 作者:可可西里 更新时间:2023-11-01 02:55:50 27 4
gpt4 key购买 nike


我已搜索但找不到以下内容:
Process1 通过 TCP 套接字传输数据。做传输的代码是(伪代码)

//Section 1
write(sock,data,len);//any language.Just write data
//Section 2

写入后的Process1可以在section 2中继续,但这并不意味着数据已经传输完毕。 TCP 可以缓冲数据以供以后传输。
现在 Process2 与 Process1 同时运行。这两个进程都尝试并发 发送数据。 IE。两者都有上面的代码。
问题1:如果两个进程同时向TCP套接字写入数据,数据最终将如何通过IP/OS在线传输?
a) Process1 的所有数据后跟 Process2 的所有数据(或反向),即某种 FIFO 顺序?
或者
b) 来自 Process1 和 Process2 的数据将通过网络由 IP 层(或操作系统)多路复用,并“同时”发送?
问题 2:我添加了一个延迟,我是否可以确保来自 2 个进程的数据通过线路串行发送(例如,Process1 的所有数据后跟 Process2 的所有数据)?
更新:
Process1 和 Process2 不是父子。他们也在不同的 socket 上工作
谢谢

最佳答案

嗯,您是在谈论由两个进程(如父进程和子进程)共享的单个套接字吗?在这种情况下,数据将按照输出系统调用 (write(2)s) 的顺序进行缓冲。

如果(更有可能)您在谈论两个进程中的两个不相关的 TCP 套接字,则无法保证数据传输的任何顺序。原因是套接字可能连接到以不同速度消耗数据的远程点。 TCP flow control然后确保快速发送者不会压倒慢速接收者。

关于language-agnostic - tcp底层传输机制/网络编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com