【问题标题】:TCP/IP protocol and network topologyTCP/IP 协议和网络拓扑
【发布时间】:2010-08-03 18:30:03
【问题描述】:

我是网络相关方面的新手。我有一些与 tcp/ip 协议和网络相关的基本问题

  1. 如果两台 PC 正在运行的客户端和服务器(通过异步套接字进行通信)之间的网络交换机(在 LAN 网络中)断电。可以通知客户端和服务器端的套接字连接不再活跃。客户端和服务器在 Win XP 操作系统上运行,并使用 C# 编码。

  2. 在套接字客户端和套接字服务器之间连接半开的情况下,网络拓扑是否起作用。例如是否将其中一方或双方的断开状态通知给另一端,是否取决于网络拓扑。

提前致谢。

【问题讨论】:

    标签: network-programming tcp


    【解决方案1】:
    1. 如果路由器/集线器/交换机等网络元素出现故障,它不会主动导致 TCP 层发生任何事情。操作系统可能会注意到物理层已关闭,并且如果它是直接连接到损坏的 PC 的网络元素,则该网卡上绑定的所有套接字都会出错 - 这将因操作系统/网卡和其他事物而异。除此之外,为了检测连接已被切断,您必须发送一些东西并依靠 TCP 超时机制来出错。这可以通过在连接上启用TCP Keepalives 来隐式完成。

    2. 只有当这些消息到达另一端时,才会注意到一侧的断开连接,如果网络拓扑发生变化或在连接中间出现某些中断,导致消息不再到达另一端,不会注意到断开连接。 (NAT 网关是此类问题的一大来源,它们可能会超时他们正在跟踪的 TCP 连接,除非您尝试编写某些内容(或启用 TCP keepalives),否则您永远不会知道该连接不再有效到连接)。请注意,大多数网络 API 要求您从连接中读取以发现另一端已关闭连接 - 假设这些“关闭”消息实际到达您身边。

    【讨论】:

      猜你喜欢
      • 2020-04-26
      • 2012-05-31
      • 1970-01-01
      • 2014-10-14
      • 2011-03-31
      • 2011-05-08
      • 2018-06-25
      • 2013-06-30
      • 2012-02-05
      相关资源
      最近更新 更多