在全球网络中编写客户端 - 服务器应用

时间:2016-06-16 16:54:54

标签: networking network-programming lan wan

我知道,如何编写一个通过本地网络工作的C#应用​​程序。

我的意思是我知道,如何让我的客户端应用程序在一个本地网络中访问我的服务器端应用程序。

但我想知道:Skype,TeamViewer和其他许多应用程序如何通过全球网络连接?

我很抱歉,如果这个问题很简单或明显,但我无法找到有关这些问题的任何信息。

请帮助我,我将非常感激。任何信息都被接受 - 文章,简明信息,书籍,等等......

1 个答案:

答案 0 :(得分:1)

问题非常广泛,我尝试做简短的概述。

在LAN(局域网)和WAN(广域网)之间存在重大差异:

网络质量

局域网或多或少稳定,广域网可能存在以下网络问题:

  1. 数据包丢失(您需要使用TCP或UDP等容错传输,并重新发送或丢失数据包)
  2. 数据包抖动(数据包间隔可能与发送部分有很大不同)。最常见的是数据包突发。
  3. 数据包重新排序
  4. 数据包重复
  5. 网络连接

    WAN不如LAN稳定。所以你需要妥善处理所有的事情:

    1. 陈旧连接
    2. 连接丢失
    3. 连接中间的错误(例如,如果使用UDP)
    4. <强>地址

      在WAN中,您可以处理客户端和服务器之间的不同网络设备(或者在点对点通信的情况下使用对等设备)。你需要考虑:

      1. NATs - 大多数客户端都在NAT之后,你需要通过它们。据技术称为“NAT遍历”
      2. 防火墙 - ISP可以拥有自己的规则,客户可以做什么或不能做什么。因此,如果您执行特定的定制传输协议,您可能会遇到ISP防火墙。
      3. 路由 - 尤其是多播和广播通信。通常情况下,无法进行多播路由。广播永远不会被路由。因此,如果要使用WAN,则需要使用此类通信。
      4. 可能是我忘记了什么。但这些要点很重要。你可以阅读很多关于它们的文章。