您当前的位置: 首页 > 首页 > 程序人生 首页 程序人生
内网设备如何与外网通信
发布时间:2017-12-22 10:34:41 编辑:唱不完的离歌 浏览次数:2397 点赞数: 1
记得刚学java的网络编程时就有这样的疑问,内网设备明明没有外网ip,那它是怎么实现与外网设备通信的呢。刚开始以为只要内网设备主动请求外网设备,它们之间就会建立起一条通道(错误)就这么过了,后来越到后面越发现以前的认知是错误的,所以最近仔细看了看《计算机网络》这个基础型书籍,来填补只是盲区。
言归正传,我们都知道,计算机之间的通信走的是tcp/ip协议。当然,学过计算机网络的人都知道国际标准其实是“ISO模型",只不过tcp/ip协议成了事实上的标准。我们以tcp通信为例,使用tcp连接,tcp处于运输层,我们屏蔽它之下的网际层、数据链路层和物理层。
直接从运输层看它与其它设备之间的通信。假如server与client都在一个局域网内,则直接由client发起tcp请求,server接收从而建立起连接。
如果server在公网,而client在内网,那它们之间是如何通信的呢?这里叫需要介绍一个叫"NAT"的东西了,它的全称叫“Network Address Translation(网络地址转换)”是一个通常装在路由器上的软件,它的作用就是所有本地地址的主机在与外界通信时,都用在NAT路由器上将其本地地址转换为外网地址这样才实现内网设备与外网设备通信。
因为ipv4的资源紧缺,所以实际情况中NAT会把端口也用上,所以实际使用中用的是NAPT(Network Address Port Translation),这样就是将一个ip:port对应一个内网的ip:port。
这样,当一个内网设备访问外网设备时,NAT路由会给它设置一个公网映射ip:port,对应内网某个设备的ip:port,当外网的server将数据发往NAT时,NAT就可以通过查询映射表,将对应的数据发给内网的某个设备,完成内外网通信。
大致总结了一下自己的看法,如果有什么讲的不对的地方欢迎指正。 计算机网络第6版(谢希仁)的资源我将会发在资源分享中,可自行下载。
关键字词:
上一篇: 磨磨唧唧也算完成了这个博客
下一篇: 计算机网络第6版