从一次远程ip连接docker引发的计网复习

本文作者通过远程连接阿里云Docker的经历,复习了计算机网络知识,包括路由表、ARP表和交换机的工作原理,以及公网IP和私网IP的区别。文中详细解释了如何通过公网IP直接连接远程服务,以及NAT和VPDN在内网与外网通信中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一次认真学习计网还是去年春招找实习2333,现在回头复习一下,看了几本书,博客,感觉又有了新的学习心得。

背景

  最近买了丐版阿里云服务器,在本地写毕设,做完一部分想发到阿里云上部署瞅瞅。通过idea-docker插件连接阿里云上的docker,惊呼竟然可以通过公网ip直接连接(在这之前楼主都是以为只有有了域名才可以访问,一直以为需要通过公网ip+私网ip的方式才能建立连接)。
  通过上文也可以知道楼主计网基础并不扎实了2333。

  总共看了两本书,一篇博客:

  • 《网络是怎样连接的》
  • 《计算机网络》-谢希仁著
  • 《图解网络系列》-小林coding公众号的PDF

基本概念

存储表结构与基本算法

路由表

路由表

路由选择规则:

  1. 目标ip与掩码作&运算得出结果 与 路由表中的目标地址做最长匹配;多个结果取跃点数小的作为下一跳。
  2. 无匹配则使用默认路由下一跳
  3. 无默认路由则使用ICMP协议回传错误报文。

转发:
下一跳若网关为空,则说明已达目的地(本机/同一局域网),直接交付;否则使用arp协议查询对应mac地址通过交换机发送。

arp表

没找具体的图,可以根据本机缓存等抽象一下。
一张ip -> Mac 的映射表。

arp协议的算法:
考虑本机缓存都失效,需要广播的情况。
这里讲述两种情况:
假设 A主机 发往 B主机

  • 发送方与接收方同处一片局域网
    通过局域网广播即可获取接收方mac地址
  • 发送方与接收方处于不同网络中
     1. 通过路由选择算法得出B的网络号、网关,发现与A主机处于不同网络,则只需要发至网关即可
     2. 要发往对应网关就需要知晓对应网关的mac地址,这时因为 A主机 与 该网关同处一片局域网,只需要广播arp报文即可收到该网关的mac地址
     3. 将报文发往该网关即可。
     4. 该网关收到报文以这两种情况进行鉴别即可发往目的地。

交换机

交换表结构:
交换表

当知晓了接收方mac地址,需要通过交换机发送报文,通过查询交换表即可知道传输端口,走对应端口线路即可。
当交换表中没有查询到对应端口时,则全发。这里可能会有人想这么做可能会浪费很多传输资源,但其实没有那么大的问题,当接收方接收到报文时会拆帧检查接收方的mac地址是否为自己,若不是则直接丢弃了。

ip

这里也不分类,全部以<网络号,主机号>(即超网)的形式讲解。

公网ip与私网ip

  起初博主看了很多文章,都将其比作 某市 + 某小区;这样说就会带来许多误解,从现实的角度想,别的地方的人要联系我岂不是需要同时知道公网ip与私网ip才能定位到我。起码在楼主这个转不过脑筋来的理解上这是错误的,只要分配了公网ip,就一定能找到你
  在非直接交付中,路由转发中起作用的只是网络号(这里其实不是很准确,应该是在每一次做路由选择时与每一条目掩码计算出来的网络号),当需要直接交付时(本机/同一局域网)主机号才会发挥作用。

  关于私网ip,是仅在内网使用的ip,毕竟不与外网连接的网络中也需要互相传递信息,也需要借助 TCP/IP 来完成。

当然有时内网也需要与外部进行连接,这里分为两种:

  • 不同地方架设了同一公司的内网,使用vpn通过隧道传输。借图说明
    vpn技术
      进入互联网就需要一个全球外一唯一的ip来完成互联网中的信息传输,所以发送方接收方各都需要路由器,传输过程无异。R1 将 原本的数据报加密(A中的私网源ip 与 目的地的B私网源ip) ,重新加上ip首部,写入 R1的ip目的地R2的ip,这样这个包就可以参与互联网的路由转发了。
      而中间的转发过程对 A 与 B 来说都是不用关心的。
    当然vpn技术还有其他用途,这里仅为说明私网ip不再细说其他。

  • 内网需要访问外网信息,使用nat/napt技术。借图说明

nat过程
上图为采用NAT/NAPT技术时内网访问外网的流程,同样的也需要一个路由器(该路由器具有NAT/NAPT技术)。

在这里插入图片描述
上图为NAPT表地址映射。NAT下的映射没有端口。

只能从内网访问外网,外网访问不到内网(若入方向表中无映射,并且对于外网来说只能看到nat路由器的ip/端口)。

  当 内网A主机 想要访问 外网中的B主机 时,第一个网关出口必定为NAT路由器(因为要访问外网,网络号肯定不是同样的),当包到达NAT路由器时,该路由器从闲置端口中抽一个出来作为内网映射,改写ip首部 源ip,发包。收包时再与映射表做匹配即可,匹配不到直接丢弃。

  可以看出公网ip与私网ip没有任何关系。
而私网ip存在的原因就是 公网ip是有限的(网络号确定的情况下,主机号是有限的),该主机并不需要联网(或很少连接,只在使用时分配,使用完毕回收)。

未完待续

可能还有想写和补充的,暂时先到这里。

参考与引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值