计算机网络:A day in the life

前言

学完计算机网络应用层、运输层、网络层、链路层。书中给出了一个综合性的小例子。当Bob通过校园网访问ww.google.com发生了什么。 感觉是个能够将知识融汇贯通的例子。因此打算花一天时间好好研究一下。

问题背景

一名学生Bob使用它的笔记本和学校的以太网交换机相连,并通过浏览器访问www.google.com整个过程动态PPT
在这里插入图片描述

我是谁——DHCP

想要上网,首先得有一个身份(IP),而IP通过DHCP服务器分配。DHCP服务器通常存放在路由中,其作用就是给新加入的主机分配一个IP。传统的IP分配一般需要经历DHCP发现DHCP应答DHCP请求DHCP ACK四个过程,但是在实际过程中,只有后两个过程是必须的,我们逐层剖析这两个过程。

DHCP 请求

在这里插入图片描述

  • 应用层:生成DHCP请求报文
  • 运输层:将DHCP请求报文放在目的端口67UDP报文段中(端口67是DHCP服务器专用端口)。
  • 网络层:将UDP报文段放在目的IP255.255.255.255(广播),源IP0.0.0.0(在主机没有IP的情况下表示本机)的IP数据报中。
  • 链路层:将IP数据报放在目的MAC地址FF:FF:FF:FF:FF:FF(广播)的以太网帧中。

上述4个过程如图中所示向下红箭头的过程。然后Bob主机发送以太网帧,交换机接收,然后在所有出端口广播。最后被含有DHCP服务器的路由器接收。然后经过向上红箭头的过程,逐层解包,到达DHCP服务器。

DHCP ACK

在DHCP服务器接受到DHCP请求报文后,分析报文,其生成一个DHCP ACK报文返回给Bob。具体的DHCP ACK报文中包括。

  • Bob主机地址:这个无话可说,Bob就是希望DHCP服务器分配给他这个地址。
  • 本地DNS服务器IP地址:Bob输入 www.google.com,需要由DNS服务器解析为IP地址才能寻址访问,因此将本地DNS服务器地址返回给Bob也是有必要的。
  • 网络掩码: 需要有网络掩码,Bob主机才能知道自己的网络号和主机号。
  • 默认网关IP地址:当Bob访问外网时,需要经过网关,因此需要该IP地址。
    在这里插入图片描述
  • 应用层: 将上述内容打包生成DHCP ACK报文。
  • 传输层:将DHCP ACK报文放在UDP报文段中。(目的端口为Bob发送DHCP请求报文的端口)
  • 网络层:将UDP报文段放在IP数据报中。
  • 链路层:将IP数据报放在目的MAC地址为交换机对应端口的MAC地址的以太网帧中。
    上述4个过程为上图中向下红色箭头所示4个过程。然后数据到达交换机,由于交换机自学习, 因此数据直接发送到Bob主机而不用广播。

小结
经过上述两个步骤,现在Bob主机就拥有了自己的主机IP,也知道了本地DNS IP默认网关IP。这样,他就可以开始正式发送请求了。


我要找的人在哪里——DNS, ARP, BGP、RIP、OSPF

Bob主机的最终的目的是生成浏览器和google服务器之间的TCP连接, 并通过此连接向www.google.com发送HTTP请求报文。基于此目的,现在会遇到如下问题。

  • 生成TCP连接的过程中,我们需要googe服务器的IP。怎么办?
    解决:访问DNS服务器
  • DNS服务器和Bob主机不在同一个子网内,无法直接访问。怎么办?
    解决:通过网关访问外网。
  • 我们现在有网关的ip地址,但是没有网关的MAC地址。无法完成寻路,怎么办?
    解决:使用ARP协议获得MAC地址。具体的:
    • 生成具有目的地址为网关ip地址的ARP查询报文
    • 将查询报文放在MAC地址为FF:FF:FF:FF:FF:FF的以太网帧中。
    • 发送到交换机。交换机广播,网关路由器接受。
    • 网关路由器识别,匹配对应接口,然后将对应接口MAC地址存放在ARP回答中。
    • ARP回答按原路返回,发送给Bob主机。
      在这里插入图片描述
      现在Bob生成MAC地址为网关路由器的以太网帧(包含目的IP为DNS服务器IP的数据报),并将以太网帧发送到网关。
  • 数据经过网关,然后在RIP、BGP、OSPF等协议的帮助下,成功到达DNS服务器。
  • DNS服务器经过一系列的想上解包,得到DNS查询报文, 然后生成包含www.google.com其IP地址的映射的回答报文
  • 然后按原路将回答报文送回到Bob主机
    在这里插入图片描述
    小结
    这样,Bob主机终于有了www.google.com的IP地址,由此就可以建立TCP连接了。

和要找的人建立联系——TCP,BGP、RIP、OSPF,HTTP

  • 基于www.google.com的IP地址, 经过3次握手建立TCP套接字
    • Bob主机发送TCP SYN报文段。报文段借助BGP、RIP、OSPF等协议到达谷歌服务器。
    • 服务器抽出TCP SYN报文,分配到欢迎套接字。并建立连接套接字, 然后生成TCP SYNACK,发送给Bob主机。
    • Bob主机进入连接状态,将HTTP请求发送到TCP套接字中。
  • HTTP请求经过网络到达谷歌服务器,谷歌服务器生成HTTP响应报文,然后送回到Bob主机浏览器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值