前一阵子做路由器的联网,由于利用了Openwrt操作系统,做起来虽然方便,但是很多原理细节都被忽略了。所以这里再来老生常谈一下wan口和lan口的区别,以及他们之间的工作原理。

首先百度一下,基本知识:

熟悉网络的朋友都知道WAN是英文Wide Area Network的首字母所写,即代表广域网;而LAN则是Local Area Network的所写,即本地(或叫局域网)。那么我们不妨给路由器上的WAN口和LAN口取一个中文名称,分别是广域网端口和本地网端口。从名称中不难发现,WAN口主要用来连接外部网络,如ADSL、LAN、光纤等各种接进线路;而LAN口用来连接内部网络,主要与局域网中的交换机、集线器或PC相连。在家里使用时,路由器WAN口使用的IP地址为网络运营商所提供的静态或动态公网IP地址,而LAN口所使用的IP地址则是局域网中分配的内网IP地址。因此,每一个路由器都会拥用一个私有IP地址,这样既可让路由器充当局域网中的网关,也便于网管对路由器进行治理。宽带路由器的路由功能就体现在wan口IP地址和lan口IP地址之间的数据路由上,通常我们根据网络运营商所提供的接入方式来设置WAN口的网络参数,通常有静态IP地址、动态IP地址或PPPOE等方式,它与网络运营商的接入设备处于同一个外网。而将LAN口的IP地址则设置为本地局域网内的IP地址,通常是我们自己可以在宽带路由器上自行设定的IP地址,LAN口下所连接的计算机组成一个“本地网”,路由器的LAN口IP地址是这个网络的网关。

再详细说说数据在同一个路由器上wan口和lan口数据是如何走的。其实这个过程就是NAT的一个过程。NAT技术的出发点事为了解决IPv4地址不足的问题,提高现有IPv4地址利用率,但他们的实现机制不一样。VLSM和CIDR也是这个目的,他们是通过调整子网掩码长度。而NAT技术通过允许组织内部网络使用非全局可路由IP地址的用通过地址转换为全局可路由的IP地址来访问Internet,以降低对公网IP地址的需求。

NAT就运行在位于内外网之间的路由设备上,在内外网用户之间通信时对数据包中的地址进行转换。

主要用于三种情形:(1)无足够的公网IP地址可用时(2)重构网络IP地址部署(3)实现简单的TCP负载均衡。

我们这里用家庭网络来做举例,家庭内部网络的机器都是接lan口,通过lan口向外部网络发送数据包,首先发送一个请求到默认网关,其实就是cpu上的lan口,这里我们这么理解,一般的路由器上的网关就是指cpu上的lan口,它一般通过交换芯片扩展出4个lan口,这些lan口就是平时使用的那几个lan口。路由器在分析下面发送来的数据包后,检查数据包中的内网IP地址时会检查设备本身的NAT地址转换表。在找到相应条目后,把源地址也就是本来的内网IP地址换成wan口的IP地址,目的地址不变,发送到外网上去。外部网络接受到数据包后,会解析出数据包中的路由器wan口IP地址,将响应数据包返回到这个wan口IP地址,发送回路由器。路由器将这个返回数据包中目的地址(wan口IP)NAT转换为内网IP,最终共完成整个数据包的发送和接受。

这里其实有一个问题要深入一下,这么多lan口,你怎么区别返回数据时NAT该怎么转换?

另外路由器是怎么给这些lan口自动分配内网IP地址的?

先来回答第一个问题:

当一台小型商务企业的内部网计算机用户连接到 Internet 资源时,该用户的 TCP/IP 协议产生一个 IP 数据包,该数据包包含以下值,这些值位于 IP 和 TCP 或 UDP 标头中:(粗体内容表示受 NAT 影响的项目):
  
  • 目标 IP 地址:Internet 资源 IP 地址
  • 源 IP 地址:私有 IP 地址
  • 目标端口:Internet 资源 TCP 或 UDP 端口
  • 源端口: 源应用程序 TCP 或 UDP 端口
  
  请求源主机或者其它路由器将此 IP 数据包发送给 NAT, 然后由 NAT 将向外发送的数据包的地址解析如下:
  
  • 目标IP地址:Internet 资源 IP 地址
  • 源IP 地址:ISP 分配的公用地址
  • 目标端口:Internet 资源 TCP 或 UDP 端口
  • 源端口:重新映射的源应用程序TCP 或 UDP 端口
  
  NAT 将重新映射的 IP 数据包发送到 Internet 。响应计算机将向 NAT 返回一个响应。当 NAT 接收到此响应时,该数据包将包含以下地址信息:
  
  • 目标IP 地址:ISP 分配的公用地址
  • 源IP地址:Internet 资源 IP 地址
  • 目标端口:重新映射的源应用程序 TCP 或 UDP 端口
  • 源端口:Internet 资源的 TCP 或者 UDP 端口
  
  当 NAT 完成映射和解析地址后,将向 Internet 客户端发送数据包,此数据包包含以下地址信息:
  
  • 目标 IP 地址:私有 IP 地址
  • 源 IP 地址:Internet 资源 IP 地址
  • 目标端口:源应用程序TCP 或者 UDP 端口
  • 源端口:Internet 资源 TCP 或 UDP 端口

看完这段,我的理解是根据NAT表和端口号来对不同的lan和不同的服务做区别的。NAT表应该是临时创建的,哪个lan口发出请求,NAT表就增加一项,记录私有(内网)IP,不同的服务使用端口号的映射来做区别。

那么第二个问题就要涉及DHCP了。我们再来了解下这个应用层服务。基础知识可以先百度。

DHCP是一个基于广播的协议,它的操作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。

从这4个名词中我们就知道DHCP的基本工作原理了,首先lan广播找到DCHP服务器,那么lan广播的这一段就是DHCP客户端。接着可能有很多DHCP服务器返回了OFFER报文进行IP地址预分配,然后DHCP客户端选择(一般是第一个收到的offer)进行确认REQUEST,DHCP服务器收到确认后,带着预先准备好的ip发送ACK报文,完成整个过程。那么这里的服务器就是我们的网关咯,也就是CPU,它是装过dhcp服务的openwrt系统,但是openwrt系统的dhcp和linux不一样,完了再慢慢研究吧。不过我想原理是差不多的。

路由器WAN口和LAN口详解的更多相关文章

  1. HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别?

    HoloWAN在连接路由器时应该选择WAN口还是LAN口,有什么区别? 在解决问题前,需要连接到,路由器的WAN口和LAN口的作用不同. WAN口是对外的接口,连接广域网.当联网设备和路由器都开启了D ...

  2. wan口mac=lan口mac加一,wlan是lan口mac加二

    (1)路由器有两个mac地址,一个用于外网(wan),一个用于内网(wlan和lan): (2)一般路由器上面或者配置路由器的网页上面只标注外网的mac地址: (3)内网的mac地址和外网mac地址一 ...

  3. 路由器WAN端与LAN端的区别

    路由器WAN端与LAN端的区别 WAN的全称为Wide Area Network,即广域网.而LAN的全称为Local Area Network,即局域网.WAN口主要用于连接外部网络,如ADSL.D ...

  4. 双层路由设置,WAN口和LAN口连接的方法设置

    WAN口设置方法,社路由器分别为路1 和路2 1 路2的LAN口地址改为172.16.1.1,重启 2 笔记本改成172.16.1.X,然后进入设置,在里面WAN地址设置为静态地址 192.168.1 ...

  5. WAN口和LAN 口有什么区别

    WAN口不能够用来连接电脑. LAN(1.2.3.4)口只能够用来连接电脑. 拓展资料 路由器(Router),是连接因特网中各局域网.广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径, ...

  6. 无线路由器wan口和lan口ip同网段导致无法上网解决办法

    环境 本地网段为192.168.0.0/24 路由器默认网段也是192.168.0.0/24 设置好路由器wan口DHCP自动获取ip以后无法上网 解决办法 把路由器是lan口地址设置为192.168 ...

  7. 单片机I/O口的结构的详解

    1.什么是源型 漏型?什么是上拉电阻?下拉电阻?什么是 线驱动输出 集电极开路输出,推挽式输出? 我们先来说说集电极开路输出的结构.集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所 ...

  8. 通过路由器的IP映射来解决,两个不同IP地址的PC机之间的从LAN口到WAN口的单向通讯问题

    1.问题假设: 在B机中IP地址与子网掩码都固定,网关是路由器的LAN口的IP地址,我们希望通过路由器来实现B机与A机之间的单向通讯问题,也就是说B可以ping通A且可以访问A提供的FTP站点. 2. ...

  9. OpenWrt刷机后LAN口无法连通的问题

    [路由器开发板硬件固件配置] MTK双频:MT7620a + MT7612e 内存:256 MB 闪存:16 MB 固件:MTK自带SDK中的OpenWrt固件(mtksdk-openwrt-2.6. ...

随机推荐

  1. mysql的distinct理解

    select distinct id,name from route where update_time>=''; 上面的sql语句的逻辑是两条记录的id,name只要有一个不一样,就算不一样. ...

  2. (转)js获取url参数值

    明天有空编辑下 今天做项目遇到js取得url地址问号后面的参数,找了下面的,用着非常好,项目是选项卡样式的,也就是一点击二级分类,底下的同样名字的背景变红(选项卡倍选中) http://www.cnb ...

  3. Struts2 处理表单重复提交

    * 在表单页面中增加一个隐藏域:<s:token></s:token>(需要在表单内)        * 创建一个struts.xml的配置文件,具体配置如下:         ...

  4. QT5在VS2013中找不到QtNetwork或QTcpSocket或QTcpSocket等头文件

    一.首先是要有相关的库文件 方法一:手动添加库文件Qt5Networkd.lib 对项目进行右键,找到相关的属性,然后查看Linker中input部分的红色选项中是否含有Qt5Networkd.lib ...

  5. windows核心编程-信号量(semaphore)

    线程同步的方式主要有:临界区.互斥区.事件.信号量四种方式. 前边讲过了互斥器线程同步-----windows核心编程-互斥器(Mutexes),这章我来介绍一下信号量(semaphore)线程同步. ...

  6. 多线程09-Lock和Condition

    1.概念 Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象.两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象. 2. ...

  7. rpc和websocket的区别

    虽然很久以前用过rpc但是当时没用过websocket,也没做过对比,现在就对比一下 rpc的用法是客户端直接调用服务端的函数,其实他就是把数据传给服务端,服务端处理完以后返回给客户端, websoc ...

  8. redis数据结构HyperLogLog

    如果我们要实现记录网站每天访问的独立IP数量这样的一个功能 集合实现: 使用集合来储存每个访客的 IP ,通过集合性质(集合中的每个元素都各不相同)来得到多个独立 IP ,然后通过调用 SCARD 命 ...

  9. destoon程序中qq号码,手机号,msn必选项实现方法

    最近发现好多客户,信息不完全!还是把qq号码,手机号,msn设为必选项比较好!下面以把qq设为必选项为例找到模板 template/default/member/edit.htm 找到 functio ...

  10. 安卓4.2原生rom状态栏显示运营商

    前言:要调整状态栏布局,需反编译systemui.apk.单卡机修改status_bar.xml和signal_cluster_view.xml,双卡机修改gemini_status_bar.xml和 ...