• Web 页面请求过程


    准备DHCP、UDP、IP和以太网

    1. 主机生成DHCP请求报文,放入UDP报文段中,源地址0.0.0.0,目的地址255.255.255.255

    2. 将包含DHCP请求报文的IP数据报放入以太网帧中,目的MAC地址FF:FF:FF:FF:FF:FF,源MAC地址是主机MAC地址。 交换机会广播该数据帧。

    3. 交换机广播DHCP帧到所有端口,包括连接路由器的端口。

    4. 路由器接收到以太网帧后抽取IP数据报,抽取DHCP请求报文。

    5. 路由器生成DHCP ACK报文,包括分配的IP地址,DNS服务器的地址,默认网关地址,子网掩码,包装成UDP数据报,放入以太网帧,包括源MAC地址(路由器地址)和目的IP地址(主机地址)。

    6. 交换机收到后转发到主机端口。

    7. 主机接收到DHCP ACK报文后设置自己的IP地址、DNS地址、默认网关和子网掩码,之后在子网掩码以外的所有数据报都被发送到默认网关。

    准备DNS和ARP

    当我们向浏览器键入www.google.com时,浏览器会生成一个TCP套接字,由套接字发送HTTP请求,为了生成套接字我们需要知道www.google.com的IP地址,这就涉及DNS协议。

    1. 主机生成DNS查询,将DNS报文放入UDP报文段中,目的地址在7中记录的DNS服务器地址。

    2. 封装成以太网帧发送到网关路由器,虽然我们知道网关路由器的IP地址,但仍然需要用ARP协议获取网关的MAC地址。

    3. 主机生成ARP查询报文,目的地址就是默认网关,MAC地址为广播地址,交换机广播该报文。

    4. 网关地址接收到ARP查询报文,解析出目的地址就是自己的地址,因此返回一个ARP回答包含自己的MAC地址,向交换机发送,交换机转发给主机。

    5. 主机得到默认网关的MAC地址

    6. 现在可以使DNS查询报文到达DNS服务器,此时DNS数据报的IP目的地址是DNS服务器的地址,MAC目的地址是网关路由器。

    7. 网关路由器接收DNS查询报文,根据目的IP地址和存储的转发表发送到合适的路由器。

    8. 路由器收到IP数据报后根据目的IP地址和转发表发送到DNS服务器。

    9. DNS服务器抽取到DNS查询报文,查找到www.google.com的记录,然后将DNS回答报文放入UDP报文段,经过路由器交换机达到主机。

    10. 主机终于获取到www.google.com的IP地址。

    TCP和HTTP

    1. 有了IP地址就可以生成TCP套接字,向www.google.com发送HTTP get报文,在生成TCP套接字时需要先和服务器三次握手连接,此时主机会发送目的端口80的TCP SYN报文,MAC地址为网关。

    2. 在网络中的路由器转发TCP SYN数据报

    3. 达到www.google.com的服务器,抽取出TCP SYN数据报发送到80端口的套接字上,回复TCP SYN ACK报文。
      问题:客户端可以向服务器发送请求是因为服务器有公网IP,但是客户端没有,他是怎么接收服务器的回复的

    4. 主机最终会接收到TCP SYN ACK 报文,从而进入连接状态。

    5. 现在已经建立TCP连接,主机向服务器发送HTTP GET报文。

    6. 服务器返回HTTP响应报文

    7. 主机浏览器读取HTTP响应报文,抽取HTML显示网页。

    转载请保留原文链接及作者
    本文标题:
    文章作者: LepeCoder
    发布时间:
    原始链接:
  • 相关阅读:
    BitTorrent Sync 基于BT的文件同步
    转载:安装Ubuntu 15.10后要做的事
    VMware 虚拟机安装OSX el capitan 11.12
    GitStack 第三方开源服务器端
    一些不错的设计网站
    Spark注册UDF函数,用于DataFrame DSL or SQL
    R和Tableau平行坐标图
    Scala断言
    Spark Gradient-boosted trees (GBTs)梯度提升树
    Spark Multilayer perceptron classifier (MLPC)多层感知器分类器
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/15147895.html
Copyright © 2020-2023  润新知