首页
学习
活动
专区
圈层
工具
发布

NAT 原理以及 UDP 穿透

://github.com/samyk/pwnat),经过学习研究后发现这个项目也有很多局限性;借此机会,学习了下 NAT 原理和 UDP 穿透的实现。...本文详细介绍了 NAT 的原理,并以此作为基础介绍了 UDP 穿透的原理和实现。...[1.NAT分类] 1.基础NAT 基础NAT 仅对网络地址进行转换,要求对每一个当前连接都要对应一个公网IP地址,所以需要有一个公网 ip 池;基础NAT 内部有一张 NAT 表以记录对应关系,如下...同时,由于 TCP 工作比较复杂,在 NAT 穿透中存在一些局限性,所以在实际场景中 UDP 穿透使用得更广泛一些,这里我们详细看看 UDP 穿透的原理和流程。...在使用端口复用选项后,TCP 就按照 UDP 穿透的流程一样借助公网服务器然后向对端发送 syn 报文了,其中靠后的 syn 报文就可以正确穿透完成 TCP 握手并建立连接。

4.6K54
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenHarmony 网络管理-Socket连接(UDP)

    本示例主要演示了Socket在网络通信方面的应用,展示了Socket在两端设备的连接验证、聊天通信方面的应用。...constructUDPSocketInstance方法创建一个UDPSocket对象创建房间模块点击创建房间按钮,弹出创建房间框,输入房间号,点击确定,进入聊天页面聊天模块bindOption方法监听消息,设置在线与离线相关概念...UDP Socket是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对方,适用于一次传输数据量很少、对可靠性要求不高的或对实时性要求高的应用场景。...openharmony/applications_app_samples.gitgit pull origin master写在最后如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:点赞,转发,有你们的 『点赞和评论

    79920

    TCP 和 UDP ...

    报文段的差异 TCP 和 UDP 同属于传输层协议,传输层协议传输的数据统称为报文段,TCP 和 UDP 的报文段的主要差异如下。...校验和(Checksum):UDP 使用校验和来保证数据安全性,UDP 的校验和也提供了差错检测功能,差错检测用于校验报文段从源到目标主机的过程中,数据的完整性是否发生了改变。...一般情况下,PSH 和 URG 并没有使用。 所以从报文段结构的对比可以看出,TCP 相比 UDP 多了许多 Flags、序号和确认号,这些都属于 TCP 的连接控制。...为此,发送方需要设置缓存来保留这些需要重传的报文段,直到收到他们的确认应答。...像是这种场景使用 UDP 就好了;像是 Ping 和 DNS Lookup,这类型的操作只需要一次简单的请求/返回,不需要建立连接,用 UDP 就足够了。

    83410

    TCP和UDP

    1.TCP和UDP的区别 这样理解比较难以理解:我们做个比喻。 TCP好比是打电话,UDP好比是发短信: 打电话时候必须双方确认,才能进行通话,发短信时候是不用接收方同意的,直接发送就行了。...所有TCP是有连接,UDP是无连接的。...2.UDP的使用场景(简单叙述)和UDP编程 1.使用场景: 一般使用在一些数据不是很重要的场景,可以丢失一些数据,举个不是很恰当的例子:比如共享单车的定位数据, 其实比较重要的是起始位置的日志数据和终点的日志数据...TCP和UDP的服务端和客户端连接的不同体现(网络上体现) 我们会发现,UDP是不显示服务端和客户端连接的信息,而TCP是会显示的。所以这也证明了,UDP是不连接的,TCP是连接的。...6.长连接和短连接 TCP发送数据时候,都需要建立连接,什么时候关闭决定着是长连接或者短连接 短连接:建立连接后,客户端发送一次消息后,并接收到服务器的响应后,必须关闭的连接就是短连接。

    49021

    TCP和UDP

    1 下面着重讲解一下TCP协议和UDP协议的区别 1、基于连接与无连接; 2、对系统资源的要求(TCP较多,UDP少); 3、UDP程序结构较简单; 4、流模式与数据报模式 ; 5、TCP保证数据正确性...在另方面,UDP主要用于那些对高速传输和实时性较高要求的通信或广播通信。...TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。...6 UDP(User Data Protocol,用户数据报协议) 1、UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上...ping命令是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。

    1.3K10

    你说UDP是无连接的,那么UDP connect 有啥用?

    UDP 套接字调用 connect 函数和 TCP connect 调用引起 TCP 三次握手,建立 TCP 有效连接不同,UDP connect 函数的调用,并不会引起和服务器目标端的网络交互,也就是说...如果我们不进行 connect 操作,建立(UDP 套接字——目的地址 + 端口)之间的映射关系,操作系统内核就没有办法把 ICMP 不可达的信息和 UDP 套接字进行关联,也就没有办法将 ICMP 信息通知给应用程序...套接字;14-18 行创建 IPv4 地址,绑定到 ANY 和对应端口;20 行绑定 UDP 套接字和 IPv4 地址;27 行为该程序注册一个信号处理函数,以响应 Ctrl+C 信号量操作;32-37...一般来说,客户端通过 connect 绑定服务端的地址和端口,对 UDP 而言,可以有一定程度的性能提升。...因为如果不使用 connect 方式,每次发送报文都会需要这样的过程:连接套接字→发送报文→断开套接字→连接套接字→发送报文→断开套接字 →………而如果使用 connect 方式,就会变成下面这样:连接套接字

    1.2K20

    iptables之NAT端口转发设置

    不然nat转发会有问题!一般如上面在nat转发规则设置好并save和restart防火墙之后就会自动在/etc/sysconfig/iptables文件里删除掉下面两行内容了。...在一般的白名单设置中,如果这两行不注释,也会造成iptables对端口的设置无效 #-A FORWARD -j REJECT --reject-with icmp-host-prohibited [root...ip(内网网关地址一定要保持和宿主机内网网关地址一致!...如果没有内网网关地址,那么就把它的网关设置成宿主机的内网ip地址!)...--------------------------------------------------------------- 下面贴出几个其他转口的转发规则(本机开启ip路由转发,目标机器注意防火墙和网关设置

    4.4K90

    告知你不为人知的 UDP:连接性和负载均衡

    UDP的”连接性” 估计很多同学认为UDP的连接性只是将UDP通信双方都固定下来了,一对一只是多对多的一个特例而已,这样UDP连接不连接到无所谓了。果真如此吗?...其实不然,UDP的连接性可以带来以下两个好处: 1.1 高效率、低消耗 我们知道Linux系统有用户空间(用户态)和内核空间(内核态)之分,对于x86处理器以及大多数其它处理器,用户空间和内核空间之前的切换是比较耗时...server端具体过程如下: UDP svr创建UDP socket fd,设置socket为REUSEADDR和REUSEPORT、同时bind本地地址local_addr listen_fd = socket...包并根据recvfrom返回的client地址, 创建一个新的socket(new_fd)与之对应,设置new_fd为REUSEADDR和REUSEPORT、同时bind本地地址local_addr,然后...UDP和4元组没有必然的对应关系,也就是UDP的无连接性。

    17.1K143

    让人迷糊的 socket udp 连接问题

    公司内部的一个 golang 中间件报 UDP 连接异常的日志,问题很明显,对端的服务挂了,自然重启下就可以了。 哈哈,但让我疑惑的问题是 udp 是如何检测对端挂了?...通过抓包可以发现返回的协议为 ICMP,但含有源端口和目的端口,客户端系统解析该报文时,通过五元组找到对应的 socket,并 errno 返回异常错误,如果客户端陷入等待,则唤醒起来,设置错误状态....netcat nc udp 的逻辑 为什么当 ip 不连通或者报文被 DROP 时,返回连接成功?...UDP 连接信息 在客户端的主机上,通过 ss lsof netstat 可以看到 UDP 五元组连接信息。...但当有异常时,会有以下的情况: 当 ip 地址无法连通时,udp 客户端连接时,通常会显示成功。

    2.5K11

    Confluence 6 代理和 HTTPS 设置连接器

    代理和 HTTPS 访问都已经在 Tomcat 中配置了,Tomcat 是 Confluence 使用的应用服务器。...简单连接器 对 Confluence 进行配置和设置,越简单越好,我们会尽可能的让配置简单。我们已经在 Tomcat 中提供了一系列的连接器样本。...连接器示例 描述 DEFAULT - 直接连接,不使用代理,针对不使用代理的 HTTP 访问 Confluence 这个是默认的选项。当你没有使用反向代理并且没有启用 HTTPS,启用这个选项。...我们仅提供 HTTP/HTTPS 连接器的示例。如果你不能使用 AJP 连接器(例如,使用 Apache mod_jk)为 Synchrony。...Synchrony 在配置在协同编辑使用,不能接受 AJP 连接。 如果你计划使用协同编辑,这里有一系列的基于代理和 SSL 连接的考虑。

    82730

    TCP和UDP详解

    TCP 短连接和长连接的区别 短连接 长连接 TCP粘包、拆包及解决办法 什么是粘包、拆包? 为什么会发生TCP粘包、拆包? 粘包、拆包解决办法 为什么常说TCP有粘包和拆包的问题而不说UDP?...,因为TCP必须创建连接,以保证消息的可靠交付和有序性,毕竟TCP协议比UDP复杂 UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等) TCP...这也反映在用于承载元数据的头的大小 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信 。...基于UDP不需要建立连接,所以且适合多播的环境,UDP是大量使用在游戏和娱乐场所 TCP 的三次握手 假设 A 为客户端,B 为服务器端。...设置消息边界:服务端从网络流中按消息边界分离出消息内容。在包尾增加回车换行符进行分割,例如 FTP 协议。 将消息分为消息头和消息体:消息头中包含表示消息总长度(或者消息体长度)的字段。

    1.6K20

    TCP和UDP协议

    TCP和UDP是互联网协议中最常用的传输协议之一。它们的不同点在于它们如何在网络上传输数据。 TCP协议 TCP(传输控制协议)是一种面向连接的协议,这意味着在数据传输之前,必须建立一个连接。...面向连接:在数据传输之前,必须先建立一个连接,这意味着发送方和接收方之间必须进行一些握手操作,以确保它们之间的通信能够顺利进行。一旦连接建立,数据传输就可以开始了。...UDP协议 UDP(用户数据报协议)是一种无连接协议,这意味着在数据传输之前,不需要建立连接。数据包在网络上传输时,不会像TCP协议那样保证可靠性和有序性。...以下是UDP协议的主要特点: 无连接:在数据传输之前不需要建立连接,发送方可以直接向接收方发送数据包。 不可靠性:UDP协议不提供可靠的数据传输,因为它不使用确认机制和重传机制。...无序性:UDP协议不保证数据包的顺序,这意味着接收方收到的数据包的顺序可能与发送方发送的顺序不同。 速度快:由于UDP协议不需要建立连接和保证数据可靠性,因此它的传输速度比TCP协议要快。

    89020

    TCP和UDP协议

    TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。...,这是第一次对话;主机B向主机 A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”...面向非连接的UDP协议 “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。与手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。...UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!...这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。

    90520
    领券