Network programming TCP/IP协议与网络拓扑

Network programming TCP/IP协议与网络拓扑,network-programming,tcp,Network Programming,Tcp,我是网络相关方面的新手。我有一些关于tcp/ip协议和网络的基本问题 如果两台PC正在运行的客户端和服务器(通过async.sockets进行通信)之间的网络交换机(在LAN网络中)断电。Can将通知客户端和服务器套接字连接不再处于活动状态。客户端和服务器在Win XP操作系统上运行,并使用C#进行编码 在套接字客户端和套接字服务器之间存在半开放连接的情况下,网络拓扑是否起作用。例如,一个或两个的断开状态是否会通知另一端,是否取决于网络拓扑 提前谢谢 路由器/集线器/交换机之类的网络元件在TCP

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

  • 如果两台PC正在运行的客户端和服务器(通过async.sockets进行通信)之间的网络交换机(在LAN网络中)断电。Can将通知客户端和服务器套接字连接不再处于活动状态。客户端和服务器在Win XP操作系统上运行,并使用C#进行编码

  • 在套接字客户端和套接字服务器之间存在半开放连接的情况下,网络拓扑是否起作用。例如,一个或两个的断开状态是否会通知另一端,是否取决于网络拓扑

  • 提前谢谢

  • 路由器/集线器/交换机之类的网络元件在TCP层发生故障时不会导致任何事情发生。操作系统可能会注意到,物理层已关闭,如果是直接连接到PC的网络元件发生故障,则会将该网卡上绑定的所有套接字出错-这在操作系统/网卡和其他方面会有所不同。除此之外,为了检测连接是否已断开,您必须发送一些信息并依靠TCP超时机制出错。这可以通过在连接上启用隐式实现

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