当刘小立访问Google时,刘小立如何能访问? ---《计算机网络-自顶向下方法》

当刘小立访问Google时,刘小立如何能访问? —《计算机网络-自顶向下方法》

标签: 网络 校招 面试 读书笔记


因为现在的网络设备多是集成的设备.为了简化,我们认为宿舍内的光猫是一个透明的调制解调器.虽然现在的猫设备都集成了路由器和NAT的功能.
学校不会给每个宿舍分配一个公网IP地址,所以在宿舍子网中可能还有一层NAT.为了简单起见,我们假定学校给每个宿舍都分配了一个IP地址.

准备:DHCP、UDP、IP和以太网

刘小立首先将其便携机与网络连接时,没有IP地址他就不能做任何事情.所以刘小立的笔记本首先所采取的一个网络相关的动作是运行DHCP,以从本地的DHCP服务器获得一个IP地址以及其他信息.

  1. 刘小立笔记本上的操作系统生成一个DHCP请求报文,并将这个报文放入具有目的端口67(DHCP服务器)和源端口68(DHCP客户端)的UDP报文段,该UDP报文段则被放入一个具有广播IP目的地址(255.255.255.255)和源IP(0.0.0.0)的IP**数据报**中,因为刘小立的笔记本还不具有一个IP地址.

  2. 包含DHCP请求报文的IP数据报则被放置在以太网帧中.该以太网帧具有目的MAC地址FF:FF:FF:FF:FF:FF,使该帧将广播到整个WiFi信道中的所有主机.该源MAC地址是刘小立笔记本的MAC地址00:16:D3:23:68:8A.

  3. 包含DHCP请求的广播以太网帧是第一个由刘小立便携机发送到宿舍路由器的帧.

  4. 路由器在它的具有MAC地址00:22:6B:45:1F的接口接收到该广播以太网帧,该帧中包含DHCP请求,并且从该以太网中抽去IP数据报.该数据报的广播IP目的地址知识了这个IP数据报应当由在该结点的高层协议,因此该数据报的载荷(一个UDP数据报)被分解向上到达UDP,DHCP请求报文从此UDP报文段中抽取出来.此时DHCP服务器有了DHCP请求报文.

  5. 宿舍路由器是NAT使能的,所以它可以用CIDR块192.168.0.0/16分配IP地址.我们假定路由器DHCP服务器分配地址192.168.1.102给刘小立的笔记本.DHCP服务器生成包含这个IP地址以及DNS服务器的IP地址(114.114.114.114).默认网关路由器IP地址(192.168.1.1)和子网块(192.168.0.0/16相当于子网掩码)的一个DHCP ACK报文.该DHCP报文被放入一个UDP报文段中,UDP报文段被放入一个IP数据报中,IP数据报再被放入一个以太网帧中.这个以太网帧的源MAC地址是路由器连到归属网络时接口的MAC地址(00:22:6B:45:1F),目的MAC地址是刘小立笔记本的MAC地址00:16:D3:23:68:8A.

  6. 宿舍路由器同时也是一台交换机.因为交换机是自学习的,并且先前从刘小立的笔记本收到以太网帧,所以交换机知道寻址到00:16:D3:23:68:8A的帧仅从通向刘小立笔记本的输出端口转发.

  7. 刘小立笔记本接收到包含DHCP ACK的以太网帧,从该以太网帧中抽取IP数据报,从IP数据报中抽取UDP报文段,从UDP报文段中抽取DHCP ACK报文.刘小立的DHCP客户端则记录下它的IP地址和它的DNS服务器的IP地址.他还在其IP转发表中安装静默网关的地址.刘小立的笔记本将向该默认网关发送目的地址为其子网68.85.2.0/24 以外的所有数据报.此时刘小立的笔记本已经初始化好它的网络组件,并准备开始处理Web网页获取.

仍在准备: DNS和ARP

当刘小立将www.google.com的URL键入其Web浏览器时,他开启了一长串事件,这将导致Google主页最终显示在其Web浏览器上.刘小立的Web浏览器通过生成一个TCP套接字开始了该过程,套接字用于向www.google.com发送HTTP请求.为了生成该套接字,刘小立需要知道www.google.com的IP地址.而刘小立的本地HOST文件中又没有www.google.com的地址映射.所以DNS提供这种域名到地址的服务.

  1. 刘小立的操作系统因此生成一个DNS查询报文,将字符串www.google.com放入DNS报文的问题段中.该DNS报文则放置在一个具有53号(DNS服务器)目的端口和8888号源端口(随机选择)的报文段中.该UDP报文段则被放入一个具有IP地址114.114.114.114(第5步返回)和源IP地址192.168.1.102的IP数据报中
  2. 刘小立的笔记本将包含DNS请求报文的数据放入一个以太网帧中.该帧将发送到宿舍路由器(默认网关路由器).然而,即使刘小立的笔记本知道了默认网关的IP地址192.168.1.1,但是仍然不知道这个IP对应的MAC地址是多少,为了获得该网关路由器的MAC地址,刘小立的笔记本将需要使用ARP协议.
  3. 刘小立的笔记本生成一个具有目的地址192.168.1.1(默认网关)的ARP查询报文,并将该报文封装成帧发送到FF:FF:FF:FF:FF:FF广播地址.宿舍路由器将收到这个广播帧.
  4. 宿舍路由器现在收到了包含ARP查询报文的帧,现在ARP报文中目标IP地址68.85.2.1匹配器接口的IP地址.网关路由器因此准备一个ARP回答.指示它的MAC地址00:22:6B:45:1F:1B对应IP地址192.168.1.1.它将ARP回答放在一个以太网帧中,目的地址为00:16:D3:23:68:8A(刘小立的MAC地址).然后将该帧发送到WiFi信道中.
  5. 刘小立接收包含ARP回答的报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址(00:22:6B:45:1F:1B).
  6. 刘小立的笔记本现在能够使包含DNS查询的以太网帧寻址到网关路由器的MAC地址.注意到在该帧中的IP数据报具有IP目的地址114.114.114.114.而该帧具有目的地址00:22:6B:45:1F:1B(网关路由器).刘小立的笔记本向WiFi信道发送该帧.默认网关路由器会接收该帧.

仍在准备:域内路由选择到DNS服务器

  1. 宿舍路由器接收该帧并抽取包含DNS查询的IP数据报.路由器查找该数据报的目的地址(114.114.114.114),并根据IP地址转发表决定该数据报应该被送到学校的ISP,并且该帧经过这条链路发送.路由器检测到源IP地址是192.168.1.102,是一个私有IP地址.源端口是8888.路由器使用NAT映射,将数据报中的IP替换为路由器的源IP地址68.85.32.5,并将源端口修改为一个还未被映射的端口号6666并将这条映射放入映射表中.然后向学校的ISP发送该帧.
  2. 学校的ISP路由器接收到该帧,抽取IP数据报,检查数据报的目的地址(114.114.114.114),并根据其转发表确定出接口,经过该接口朝着DNS服务器转发数据报,而转发表已根据AS内协议(RIP,OSPF),以及AS间协议BGP填写.
  3. 最终包含DNS查询的IP到达了DNS服务器.DNS服务器抽取出DNS查询报文,在它的DNS数据库中查询名字www.google.com,找到包含对应www.google.com的IP地址64.233.169.105.(假设它缓存在DNS服务器中).这种缓存源于Google.com的权威DNS服务器.该DNS服务器形成了一个包含这种主机名到IP地址映射的DNS回答报文,将该DNS回答报文放入UDP报文段中,该报文段放入寻址到刘小立的NAT映射地址的IP数据报中.该数据报经过网络反向转发到学校的路由器,并从这里使用NAT反向映射经WiFi信道到刘小立的笔记本.
  4. 刘小立的笔记本从DNS报文中抽取出www.google.com的IP地址.

Web客户 - 服务器交互 : TCP 和 HTTP

  1. 既然刘小立的笔记本有了Google的IP地址,他就能够生成TCP套接字,当刘小立生成TCP套接字时,该TCP必须与Google的TCP形成3次握手.刘小立的笔记本首先因此生成一个具有目的端口80的TCP SYN报文段,将该TCP报文段放置在具有目的IP地址64.233.169.105(www.google.com)的IP数据报中,将该数据报放置在MAC地址为00:22:6B:45:1F:1B(网关路由器)的帧中,并向WiFi信道发送该帧.
  2. 在学校网络,ISP网络和Google网络中的路由器朝着www.google.com转发包含TCP SYN的数据报,使用每台路由器中的转发表.前面讲过到Google的AS间路由是由BGP协议设置的.
  3. 最终,包含TCP SYN的数据报到达www.google.com.从数据报抽取出TCP SYN报文并分解到与端口80相关联的欢迎套接字.对于GoogleHTTP服务器和刘小立的笔记本之间的TCP连接生成一个连接套接字.产生一个TCP SYNACK报文段,将其放入向刘小立笔记本寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com连接到其第一条路由器.
  4. 包含TCP SYNACK报文段的数据报通过Google ISP和学校网络,最终到达刘小立笔记本的网卡.数据报在操作系统中分解到相应的TCP套接字,从而进入连接状态.
  5. 借助于刘小立笔记本的套接字,现在准备向www.google.com发送字节了,刘小立的浏览器生成包含要获取的URL的HTTP GET报文.HTTP GET报文则写入套接字,其中GET报文称为一个TCP报文段的载荷.该TCP报文段放置进一个数据报中,并交付到www.google.com.
  6. 在www.google.com的HTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将请求的Web页内容放入HTTP响应体中,并将报文发送进TCP套接字中.
  7. 包含HTTP回答报文的的数据报通过Google,ISP和学校网络转发,到达刘小立的笔记本.刘小立的Chrome从套接字读取HTTP响应,从HTTP响应体中抽取Web网页的html,并终于显示了Web网页.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值