现阶段的互联网软件通讯方式
简单数据通讯模型
双向,可靠的字节流,最常见。
World Wide Web(万维网)
也是一个非常简单的网络结构,从客户端发送到服务器,服务器响应后将数据返回本地的客户端。
BitTorrent(bt下载)
BitTorrent是一个程序可以让人们可以共享和交换大文件,当一个用户从Tracker下载文件后,会允许其他正在下载该文件的用户从自己已经完成的文件下载。所以bt下载的人数越多越好,这样可以获得更快的速度。
bt的下载是可靠的,和udp不太一样,bt的下载都是分块的,所以,在下载过程中看到的一个一个小方格,那个不是每个浏览器为bt设置的进度条,而是实际的bt下载方式。
Skype
Skype是一款即时通信应用软件,跨平台,免费,世界通用(cn能不能用不知道)
最简单的通讯
看起来有点像万维网,就是简单的进行通讯,但是实际上几乎不是这样的,至少在国内v4地址严重不足的情况下,人们的手机,电脑等通讯设备的IP实际上都是经过NAT转换后的地址,像这种纯公网的Client互访很少能实现,也很少有这个条件。
反向通讯
由于NAt地址的转换问题,如图里所示的这样,在NAT外侧的设备不能访问内网设备,但是内网可以访问公网设备,所以应对这种情况,反向通讯就成为了必须。在原本的情况下,A想访问B是需要和B建立链接的,但是B在Nat后无法被访问,这个时候就需要一个中介的服务器负责“传令”。B登陆Rendezvous,当A需要向B发送消息的时候,A选择的连接方式就变成了和传令联系,由传令告诉已经B,B知道A要和自己联络,且A在公网环境时,B就可以通过地址直接和A取得联系。这样做绕过了NAT的地址转换带来的限制,链接的线路也从A->B ,变成了B->A。
同理,当AB都需要进行NAT转换时,则和上文一样的处理方式,设立传令兵,A把发给B的消息通过NAT后传输给传令兵,传令兵在确认B已经接入的情况下,将A的信息发给B,这样就完成了一次通讯,但是这样来看的话,这种通讯方式似乎并不属于反向的通讯。我觉得在国内大部分的聊天实时通信软件的处理逻辑应该都是这样的。