在家中访问一个网站的思考

在家中访问一个网站的思考

问题链接: 在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?

1、家庭网络简介

  • 要连接公网,通过 Modem 光猫 pppoe 拨号。
  • wlan路由器的wan口链接ADSL 猫,一般情况下会动态获取一个公网IP地址,在广域网内,任何一个主机,均可以访问到该ip地址。
  • 终端可以通过有线或者无线的方式通过共享无线路由器的wan口访问公网。
  • 台式机、手机、ipad、笔记本等终端通过路由器的dhcp协议自动获取的地址是局域网地址。
  • 局域网内终端通过NAT协议进行源、目的IP,源、目的端口号的转换后共享WAN口地址上网。
  • 局域网内终端之间通信可通过arp协议学习其他网口的mac地址,网卡通过mac地址过滤数据帧。
  • 公网内路由器之间数据传输一般是ppp协议。

2、家庭WLAN + DHCP

家用路由器也是路由器一种,只是他只能连接两个网络,一个是局域网,一个是与运营商连接的那个网络。

2.1、家庭路由器PPPOE拨号

  • 家用路由器上网通常是通过PPPoE拨号上网,账号密码由运营商提供。
  • 拨号成功后会获得一个公网IP。如果拥有一个固定的公网IP,那么此处也可以设置固定ip。
  1. 登录管理界面 :以TP-LINK为例,打开 http://192.168.1.1 网页,在弹出的设置管理密码界面中,设置6~15位的管理密码,点击 确定,登录路由器管理界面。

  2. 选择上网方式: PPPoE(ADSL虚拟拨号)

  3. 输入上网宽带账号和密码

  4. 设置无线参数 :SSID 即无线网络名称(可根据实际需求设置),选中 WPA-PSK/WPA2-PSK 并设置 PSK密码,点击 下一步。

  5. 设置完成,重启,查看 WAN口状态

2.2、DHCP(动态主机配置协议)

路由器开启dhcp并配置一个IP地址范围,开启DHCP客户端的主机接入LAN网络时就可以自动获得DHCP分配的IP地址、子网掩码、租期、网关、DNS等配置信息。

如上地址池是 192.168.2.100~192.168.2.199;终端连接家用路由器之后会获得地址其中的一个地址。

2.3、接入家庭网的主机IP地址

我的笔记本是通过无线路由器连接的无线Wi-Fi。本机无线网卡信息配置信息如下:

bash 复制代码
ipconfig /all

2.4、家庭总线型以太网

基于IEEE802.11标准的无线局域网大多使用的是 2.4GHz 或 5GHz 的射频。

如下总线型网络中,主机B向主机D发送数据,总线上的每一个工作的计算机都能检测到 B 发送的数据信号。由于只有计算机 D 的MAC 地址与数据帧首部的目标MAC 地址一致,因此只有 D 才接收这个数据帧。其他所有的计算机(A, C 和 E)都检测到不是发送给它们的数据帧,因此就丢弃这个数据帧而不能够收下来。这样就在具有广播特性的总线上实现了一对一的通信。

随机访问 介质访问控制 协议 对比:
ALOHA 协议 :不听就说 ;
CSMA 协议 :先听再说 ;
CSMA/CD 协议 :先听再说 , 边听边说 ;
CSMA/CA 协议:先听再说 , 边听边说 ;

CSMA/CD(Carrier Sense Multiple Access / Collision Detection)载波监听多点接入 / 碰撞检测 【有线】。

CSMA/CA(Carrier Sense Multiple Access With Collision Avoidance)载波监听多点接入 / 碰撞避免 【无线】。

2.5、以太网协议MAC地址

  • 在以太网中,硬件地址又称为物理地址,或 MAC 地址,6个字节,共48 位。
  • IEEE 注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位)。
  • 网络适配器从网络上每收到一个数据帧就首先用硬件检查数据帧中的 MAC 地址,如果是发往本站的帧则收下进行其他的处理;否则就将此帧丢弃不再进行其他的处理。

2.6、ARP协议

假如我们要访问局域网中的另外一个pc上的进程,假设我们只知道对方的IP地址,那么如何才能知道对方的mac地址呢?可以通过ARP协议。

IP地址和MAC地址存在对应关系,打一个不恰当比喻:李白,字太白,号青莲居士;我们知道李白,想知道他的字,就大声喊一嗓子 "李白,你的字是什么?李白收到后就会回复 字太白"。

ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值不存在,那么主机就向网络发送一个ARP协议广播包。

这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。

而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。

bash 复制代码
Windows的ARP表查询
arp -a

2.7、IP协议 & UDP/TCP协议

2.8、NAT(Network Address Translation,网络地址转换)

NAT将有助于减缓可用的IP地址空间的枯竭。在RFC 2663中有对NAT的说明。经过NAT转换的数据包IP地址替换见下图:

  1. 从局域网内部发往路由器的数据包,源ip和源port【10.0.0.1:3345 】,经过路由器之后源ip和源port替换为【138.76.29.7:5001】。
  2. 从服务器返回的数据包的目的ip和目的port【138.76.29.7:5001 】,经过路由器之后目的ip和目的port替换为【10.0.0.1:3345】。
  3. 完美。

华为链接: 接入路由器 AR1000&2000&3000 NAT相关配置文档

3、Router路由器

路由器(Router)是互联网的主要结点设备。路由器通过路由策略决定数据的转发。

作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络。

家庭常用的路由器通常有一个Wan口,4个Lan口。既可以通过网线连接,也可以通过无线连接,通常带宽100M到1000M。

还有在大型机房中性能强悍的带宽可高达T级大型路由器。

以下是1个企业级网络的组网拓扑图,我们通常用图中的图标表示路由器:企业级网络拓扑结构

路由器的一些使用规则:

  • 路由器工作在IP(网络)层;
  • 路由器用来连接不同的网络;
  • 路由器的每一个接口都必须是不同网段的;
  • 路由器之间互联是接口直接连接,一般用ppp协议通信;
  • 处于不同网络中的2个设备要想互相通信,必须通过路由器;
  • 一个成熟稳定的网络,路由器必须知道每一个网络设备到达另外一个网络的通路,否则会直接丢弃,路由器通过路由表来维护这些通路;
  • 路由器只解析到数据包的IP层(传输层和应用层不会查看)

3.1、源IP & 目的IP

公网中的数据包都是ip数据包,ip数据包头中有个非常重要的协议字段:「目的地址」。随机抓取了一个本机网络通信的ip数据包:

如上图所示, 源ip地址是:192.168.0.104 目的ip地址是:140.246.147.33

很显然,源地址是一个c类地址,就是本机地址,也是一个私网地址, 目的地址是一个公网地址。

路由器之所以能转发数据包就是靠路由表 和IP数据包中的目的IP地址 +源IP地址

3.2、路由表

bash 复制代码
以下是windows下的路由表 windows路由表
route print

路由表中包含了若干个路由条目。

「PC路由条目:」

名称 说明
网络目标 表示要到达某个网段的网络,可以查询该条路由条目
网络掩码 点分十进制法,配合网络目标,可得出最终的目标网络号
网关 数据包要发送给哪个网口所在的路由器
接口 表示数据包要从哪个本地的接口发送出去
跃点数 数据包在网络中最多能经过多少个路由器,放置数据包在网络中无限转发

永久路由:

网络地址 网络掩码 网关地址 跃点数
0.0.0.0 0.0.0.0 192.168.168.1 默认

该条路由其实是一条默认路由,表示如果查找不到路由条目,就将数据包发送给192.168.0.1这个ip地址所在的路由器。

3.3、路由器中的路由协议

  • 内部网关协议(IGP:Interior Gateway Protocol):适用于单个ISP的统一路由协议的运行,一般由一个ISP运营的网络位于一个AS(自治系统)内,有统一的AS number(自治系统号),用来处理内部路由。

    RIP、IGRP(Cisco私有协议)、EIGRP(Cisco私有协议)、OSPF、IS-IS等都是内部网关协议。

  • 域间路由协议(BGP:Border Gateway Protocol):BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider)之间。

华为链接: IP知识百科------什么是BGP

4、 IP报文在设备间的传递过程

  1. 路由器的IP地址分wan口和lan口,wan口地址是PPPoE拨号时运营商的其他设备分配的用于公网寻址,lan口地址在路由器中设置,用于和局域网内终端通信。
  2. 终端连接无线路由器时,路由器通过DHCP协议给终端分配了动态IP地址,通过DHCP的地址池可以设置分配的ip地址的范围。
  3. 分配IP地址的时候,同时终端会将无线路由器的lan口地址设置为自己的默认网关,所以PC访问外网,所有的数据包都会发送给网关,就是无线路由器。
  4. 当用户要访问外网的时候,需要知道网关的mac地址,如果arp缓存中没有对应的的arp条目,那么就通过arp协议找到lan口的mac地址,因为网关地址已分配。
  5. 局域网内终端通过共享wan地址上网,所有走wlan路由器的数据包都要通过NAT协议进行源IP <-> 目的IP源PORT <-> 目的PORT的转换。

其他链接: IP报文在设备间传递的封装过程

5、 小彩蛋

小彩蛋 华为 IP知识百科
小彩蛋 华为 IP报文格式大全
小彩蛋 华为 职业认证