套接字和以太网如何协同工作?

时间:2015-07-08 20:38:21

标签: sockets tcp ethernet

假设我使用tcp / ip连接了两台使用单根以太网电缆的计算机。如果计算机1使用端口12345连接到计算机2,而计算机2通过端口54321连接到计算机1,那么当两台计算机同时发送恒定数据流时会发生什么?

每台计算机是否都将以太网电缆的一半用作单向管道,或者是否轮流通过以太网电缆发送数据,以便一次仅通过它传输一条数据?

1 个答案:

答案 0 :(得分:1)

在物理层(并假设常规的Cat5 TP电缆和以太网硬件)上,每个通信伙伴都有自己的线对,允许同时发送和接收。这称为全双工操作。在较旧的硬件中,例如令牌环,几台计算机必须共享相同的线路,并且在某些特殊情况下只能使用全双工。

幸运的是(正如已经指出的那样),TCP / IP套接字可以在protocol stack的更高层上工作,从实际类型的物理访问中高度抽象。您可以根据需要在两个合作伙伴之间建立尽可能多的打开连接,实际上至少可以。网络堆栈将您的所有通信包装成数据包,使用端口号,源地址和目标地址对其进行标记,然后将其传递到下一层,直到它到达介质。因此,端口号和套接字是逻辑,几乎与实际硬件无关。你甚至不需要为某种套接字提供网络硬件。

事实上,整个方案要复杂得多,我建议在WP上阅读Network socket,以简要介绍套接字如何工作以及它们的工作方式。有关详细信息,Andrew Tanenbaum的计算机网络是一本非常好的书,涵盖了所有相关细节并且易于阅读。