首页 >> 大全

网络编程:TCP与UDP简介及端口映射技术

2023-11-02 大全 32 作者:考证青年

这是张富涛的第5篇原创 网络编程:TCP与UDP简介及端口映射技术 1. TCP与UDP简介

在Java中,网络编程有两种通讯协议:TCP 和 UDP。

其中两种传输方式的优缺点对比:

传输方式的差别:

2. 什么是端口

每个应用程序都有权利去接收和发送一些网络数据,而一个计算机上可能运行着上千个应用程序,所以计算机发明了一个计算机上的地址——端口。端口用来区分接发信息的网络应用程序的唯一性的东西。

端口最多有65535个,但是1~4000端口是“系统保留端口”,“系统保留端口”的意思是系统霸占了的端口,我们尽量不要用4000以下的端口,因为系统不确定什么时候会用,但是这也说明:系统要是用端口,就不会用4000以上的端口。 所以4000以上的端口都是用户注册的端口。

TCP和UDP同时可以占用一个端口,但是尽量不要用同一个端口。

3. 端口映射

比如A和B两个电脑通过路由器连接网络,他们共同分享的ip是路由器中公网的ip,同时他们自己也有一个ip,是内网的ip,外界是无法直接找到连接到路由器中的电脑的,原因就是在于内网的ip是虚拟的,多个计算机链接路由器上网,他们没有属于公网中的ip,他们共用的是路由器的ip,而路由器也不知道这条请求到底是访问到哪个计算机的哪个端口,所以出现了端口映射这个概念:

如下图,路由器通过ASDL拨号上网获得到的公网ip为:61.1.1.1,电脑A和B通过路由器上网,他们共享“61.1.1.1”的网络,并且或得到了两个内网的ip:“168.160.1.1”和“168.160.1.2”。

映射类型tcp__端口映射代码

外界无法直接找到电脑A或者电脑B,如果外界发送一条请求,找到的ip只能为“61.1.1.1”,可是这个路由器也分不清究竟这条请求时找的电脑A还是电脑B,此时我们就要用“端口映射”这个技术来解决这个问题了。

我们可以手动操作:将“电脑A”的要接收这条请求的应用端口,映射到路由器中的一个端口,比如“电脑A”的4001端口需要接收这条请求,我们将路由器的4002端口,对应到“电脑A”的4001端口,请求发送到“61.1.1.1:4002”,就会转发到电脑A的内网:“168.160.1.1:4001”上。

这就是端口映射技术。

那为什么我们平时在家链接路由器,QQ等软件不需要我们手动的去将端口映射到路由器上呢?这是因为我们平时用QQ等软件、IE浏览器还有玩游戏等路由器都自动配置了映射关系,所以并不需要我们去手动配置,而如果我们在内网中搭建一个服务器,外网想要访问的时候,我们就需要手动去进行映射了。

最近我在为我们的“万方数据知识服务新平台”增加微信支付功能,如果微信支付成功,微信需要向我的服务器发送一条支付成功的通知,可是在项目正式上线之前,微信是通知不到我本地计算机的。因为我们一个办公室的网络链接的是同一个路由器,说明我们共用一个网络,不论我直接填写了“内网的ip地址”还是“路由器的公网ip”,微信都找不到我,这时我们有两个解决方案:一种是利用端口映射技术,将我们“内网ip”及“端口”都映射到路由器上,另外一盅是借另外一台直接连接到公网的计算机搭建项目进行调试。

但是无论如何,将“内网的ip地址”或“路由器的公网ip”告诉微信让其进行通知这种做法都是不对的,小伙伴们在开发的时候一定要注意哦!

---------------

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了