Networking 在全球网络中编写客户机-服务器应用程序

Networking 在全球网络中编写客户机-服务器应用程序,networking,network-programming,lan,wan,Networking,Network Programming,Lan,Wan,我知道如何编写通过本地网络工作的C#应用程序 我的意思是,我知道如何让客户端应用程序在单个本地网络中访问服务器端应用程序 但我想知道:Skype、TeamViewer和许多其他应用程序如何通过全球网络进行连接 我很抱歉,如果这个问题很简单或者很明显,但是我找不到关于这个东西的任何信息 请帮帮我,我会非常感激的。任何信息都可以接受——文章、简单信息、书籍等等……问题非常广泛,我尝试做简短的概述 LAN(局域网)和WAN(广域网)之间的主要区别如下: 网络质量: LAN或多或少是稳定的,WAN可能会

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

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

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

我很抱歉,如果这个问题很简单或者很明显,但是我找不到关于这个东西的任何信息


请帮帮我,我会非常感激的。任何信息都可以接受——文章、简单信息、书籍等等……

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

LAN(局域网)和WAN(广域网)之间的主要区别如下:

网络质量

LAN或多或少是稳定的,WAN可能会出现以下网络问题:

  • 数据包丢失(您需要使用诸如TCP或UDP之类的具有重传或数据包丢失隐藏功能的容错传输)
  • 数据包抖动(数据包间隔可能与发送部分有很大差异)。最常见的是数据包突发
  • 数据包重新排序
  • 数据包复制
  • 网络连接

    广域网不如局域网稳定。因此,您需要正确处理所有事情,如:

  • 连接失效
  • 连接损耗
  • 连接中间的错误(例如,如果使用UDP) 地址

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

  • NAT-大多数客户机都支持NAT,您需要通过NAT。相应的技术称为“NAT遍历”
  • 防火墙-ISP可能有自己的规则,客户可以做什么,不能做什么。所以,如果你做一些特定的事情,比如定制传输协议,你可能会碰到ISP防火墙
  • 路由-特别是多播和广播通信。通常情况下,无法路由多播。广播从不被路由。因此,如果您想使用WAN,您需要利用这种类型的通信
  • 可能是我忘了什么。但这些都是重要的。你可以阅读许多关于它们的文章