必威体育Betway必威体育官网
当前位置:首页 > IT技术

UDP打洞原理总结

时间:2019-09-11 01:10:00来源:IT技术作者:seo实验室小编阅读:84次「手机版」
 

打洞

一:UDP打洞的用途

    当你编写的程序,需要两个局域网能够进行通信的时候,UDP打洞不失为一种好方法。简而言之,UDP打洞是为了实现两个局域网进行直接通信。

    两个局域网为什么不能通信呢?(这里所说的是两个不同的局域网),主要原因就是局域网中的ip不能被互联网认识,与外网交互必须通过NAT服务。

    那什么是NAT服务呢?NAT服务一般继承在路由器,防火墙,或者单独的NAT设备中,英文全称为Network Address Translation.顾名思义,NAT服务的作用就是网络地址转换。

    简而言之,由于中国区域分配的ip太少,我们只有利用NAT服务来实现很多电脑使用一个ip的效果,许多共用一个上网ip的电脑组成了一个局域网,例如家里的路由器可以提供家里的手机,电脑,等一起上网。

    NAT服务的原理:当一台局域网的主机想连接互联网的时候,这台主机向往常一样,把自己的消息封装好,然后填上要发送的ip地址,然后发给局域网里的交换机,交换机收到消息后对ip地址进行判断,发现ip地址不在本局域网,交换机就会把消息发送给网关,(网关相当于自己局域网通向internet的大门,这个时候nat服务发生作用,)把这台主机的内网ip端口号封装成可以在外网使用的ip和端口号,并记录下来,这个主机就对应这个ip和端口号,然后把消息发送出去,外边的主机发送消息给这台主机的时候,他们发送过来的消息的ip必须是刚才封装好的ip和端口号,然后网关接收到之后进行查询,就知道对应的是本局域网的那一台主机了,然后把消息发给它。从而实现局域网主机上网的功能。

二:UDP打洞的原理

    在上面的解释中我们已经知道NAT的用途和原理,那要怎样实现两个局域网之间的通信呢?需要借助一个中间服务器,

    第一:两台局域网主机分别先和服务器连接,服务器获得两边的经过NAT转换的ip和端口号。

    第二:其中一台局域网主机,向服务器发送消息,告诉服务器他要和另一台局域网进行打洞,服务器接收到消息会把主动要求连接的一方的ip和端口号发给被动的一方。

    第三:被动的一方收到之后先给这个ip和端口发送一个消息,但是主动的一方不会收到消息,消息会被NAT丢弃,因为主动的一方不曾给被动的一方发送过消息,NAT没有注册这条通道,所以不认识被动主机的ip。然后被动的主机再给服务器发送个消息,让服务器告诉主动的主机这边已经注册好了NAT可以进行通信。

    第四:主动的主机这时候拿到了服务器发给它的被动的主机的ip和端口号,然后发送消息,被动的主机就可以进行接收了。两边就建立了一个类似洞口一样的东西,这就是UDP打洞。

由于本人才疏学浅,表达能力有所欠缺,有疑问直接留言吧,希望能够帮到你。

相关阅读

基于UDP协议的服务器

本博客已弃用,当时存在一些小细节错误后期也不再修改了 欢迎来我的新博客 在撸我们的服务器之前,先好好给大家好好理一理套接字这块

UDP协议开发

1 简介 在进行电网插件开发的过程中,对电网接入程序进行了开发,使得在综合安防管理平台上能够非常方便的接入天地维正电网设备。

网络——UDP协议,TCP协议浅析

一、传输层TCP和UDP都是传输层协议,传输层是OSI模型中的第四层,实现端对端的数据传输,该层是两台计算机经过网络进行数据通信时,第一

TCP 和 UDP 的区别

文章目录前言1. UDP2. TCP2.1 TCP 的三次握手2.2 TCP 四次挥手2.3 累计确认2.4 顺序问题和丢包问题2.5 流量控制的问题2.6 拥塞控

穿透内网,连接动态ip,内网ip打洞-----p2p实现原理

转自:http://www.cnblogs.com/eyye/archive/2012/10/23/2734807.html 网上找了很多,代码大堆,原理讲清楚透彻的不多。 本人找几篇讲

分享到:

栏目导航

推荐阅读

热门阅读