1.访问网站的过程
设访问www.xyz.com
①通过DNS查询IP地址
1.查询DNS缓存→若之前访问过,则可以通过DNS缓存直接获得该网站的IP地址
2.递归+迭代查询IP地址
②通过ARP查询MAC地址
1.查询ARP缓存→若之前访问过,则可以通过ARP缓存直接获得下一跳的MAC地址
2.广播目的地址为FF-FF-FF-FF的ARP请求分组:通过目的IP地址和子网掩码逐位相与的方式判断目的IP地址是否为本网络内主机
(1)本网络内主机(发送给目的主机):ARP请求分组的目的IP地址就是www.xyz.com的IP地址,返回目的主机的MAC地址
(2)非本网络内主机(发送给默认路由):ARP请求分组的目的IP地址是默认路由的IP地址,默认路由返回默认路由的MAC地址,返回默认路由的MAC地址
③主机与服务器建立TCP连接:HTTP协议基于TCP连接
在数据发送过程中,目的IP地址和源IP地址不变,但是目的MAC地址和源MAC地址进入下一条(新网段)时会发生改变
④主机发送HTTP协议请求,服务器相应请求
第三次握手选择是否携带有关HTTP协议请求的内容(第三次握手才能开始携带数据)
2.TCP报文段、IP数据保和MAC帧
2.1.TCP报文段
组成:TCP首部(20B) + 应用层数据(例如HTTP协议请求)
①源地址和目的地址:2B
②序号、确认号:4B
③数据偏移:4bit
④确认位ACK:当ACK = 1 时,确认号有效。当建立连接后,所有报文的ACK都必须为1
⑤同步位SYN:当SYN = 1 时,表明是连接请求/连接接受报文
⑥终止位FIN:当FIN = 1时,表明发送方数据已发送完,要求释放连接
2.2.IP数据报
组成:IP首部(20B,单位为4B,通过DNS得到的IP地址) + TCP报文段
①源地址和目的地址:4B
②总长度:4B,单位为1B
③片偏移:单位为8B
④标识:同一数据报的分片使用同一标识(接收端根据标识将相同标识的分片组成数据)
⑤标志:
中间位:DF(Dont Fragment) = 1,禁止分片; DF = 0,允许分片
最低位:MF(More Fragment)= 1,后面还有分片;MF = 0,最后一个分片 / 没分片
2.3.MAC帧
组成:MAC头部 + MAC尾部(18B) + IP数据报
①源地址和目的地址:6B
②总长度64B - 1518B:控制部分18B(头部尾部)+ 数据部分(46B - 1500B)
3.转发表、ARP表和路由表
3.1.转发表
自学习功能:初始转发表为空
(1)当收到A→B的数据时:
①检查发送方的地址:将会检查数据的源MAC地址,发现表中并没有关于A地址和其接口的转发表项,则将A和其数据进来的接口写入表中
②检查接收方的地址:将会检查数据的目的MAC地址,发现表中并没有关于B地址的转发表项,则从除了接口1外的所有接口都将转发该数据(但只有B会真正收到数据,CD收到后将该数据丢弃)
(2)当收到B→A的数据时:
①检查发送方的地址:将会检查数据的源MAC地址,发现表中并没有关于B地址和其接口的转发表项,则将B和其数据进来的接口写入表中
②检查接收方的地址:将会检查数据的目的MAC地址,此时表中有目的地址A的转发表项,从接口1中发出
总结:新源地址进来增加新地址表项,新目的地址广播,旧目的地址单播
3.2.ARP表
1.检查ARP缓存是否有该IP地址和MAC地址的映射
2.若1中没有,则广播目的地址为FF-FF-FF-FF的ARP请求分组
3.目的主机(本网络)或者默认网关(其他网络)将会单播返回一个带有其IP地址和MAC地址的ARP响应分组
4.源主机收到后写入ARP缓存
3.3.路由表
1.静态路由:事先人为创建
2.动态路由:RIP、OSPF
3.有网络前缀不需要子网掩码:都是表示多少位是网络位,多少位是主机位(不同表示形式)
4.接口:收到前往该地址的数据后,应该从自己的哪个接口转发出去,因此写的是自己的物理接口
5.网关:不与自己直接相连的网络,下一跳地址
源地址和目的地址不在同一网络,需要网关带其进入下一网段,填该网关的IP地址
源地址和目的地址在同一网络,不需要网关,不填
6.题中路由表缺失:路由聚合或者默认路由(网络ID和子网掩码全0,作用是当接收到数据的目的地址在并不在路由表中,则转发给默认路由,通过其去其他网络)
①黄色(10.0.0.1/8 - 100.0.0.100/8):与R1直接相连,通过接口1,不需要借助网关
②橙色:172.16.0.1/24 - 172.16.0.2/24:与R1直接相连,通过接口2,不需要借助网关
③绿色(192.168.0.1/24、192.168.0.2/24):与R1不直接相连,通过接口2,需要借助网关,网关IP地址为R2
④绿色(192.168.100.0/24、192.168.100.100/24):与R1不直接相连,通过接口2,需要借助网关,网关IP地址为R2(需要通过R2才能到达R3)
⑤默认路由(0.0.0.0):选择R2为R1的默认路由
①黄色(10.0.0.1/8 - 100.0.0.100/8):与R2不直接相连,通过接口3,需要借助网关,网关IP地址为R1
②橙色(172.16.0.1/24 - 172.16.0.2/24):与R2直接相连,通过接口3,不需要借助网关
③绿色(192.168.0.1/24、192.168.0.2/24):与R2直接相连,通过接口4,不需要借助网关
④绿色(192.168.100.0/24、192.168.100.100/24):与R2不直接相连,通过接口4,需要借助网关,网关IP地址为R3
①黄色(10.0.0.1/8 - 100.0.0.100/8):与R3不直接相连,通过接口5,需要借助网关,网关IP地址为R2
②橙色(172.16.0.1/24 - 172.16.0.2/24):与R3不直接相连,通过接口5,需要借助网关,网关IP地址为R2
③绿色(192.168.0.1/24、192.168.0.2/24):与R3直接相连,通过接口5,不需要借助网关
④绿色(192.168.100.0/24、192.168.100.100/24):与R3直接相连,通过接口6,不需要借助网关
⑤默认路由(0.0.0.0):选择R2作为R3的默认路由