前言
继续说链路层
web的请求 的三次我握手我写过一篇
猝不及防的爱情
详细的说了三次握手
我是前端开发者
其实web的请求每一天都有在用
浏览器主动发起请求 请求成功后 服务器返回数据,拿到数据后,页面展示。
这就是实际应用的一条龙服务
然后再深入的了解一下web请求,我发现一位球友写的特别的详细,但是我找不到他的博客了,如果哪一天看到了。可以叫我注明出处。
正文
- 数据字段: (46-1500字节) 以太网的最大传输单元(MTU)是1500字节,最小长度是46字节。Ip数据报小于46字节,数据包必须被填充到46字节。
- 目的地址 目的地的MAC地址
- 源地址 源地址的MAC地址
- 类型字段 类型字段允许以太网复用多种网络层协议
- CRC 循环冗余检测
- 前同步码 以太网帧以一个8字节的前同步码字段开始,该前同步码的前7个字节都是10101010,最后一个字节是10101011。前7个字节用于唤醒接收适配器,并且将他们的时钟和发送方的时钟同步。
- MAC地址空间为6字节, 2^48比特
- IPv4: 4字节, 2^32比特
- IPv6: 21字节, 2^128比特
DNS和ARP
- Bob便携机上的操作系统生成DNS查询报文,将字符串www.google.com放入DNS报文的问题段中。该DNS报文则放置在一个具有53号目的端口的UDP报文段中。该UDP报文段则被放入具有IP目的地址的(68.87.71.226)和源IP地址(68.85.2.101)的IP数据报中。
- Bob便携机则将包含DNS请求报文的数据报放入一个以太网帧中。该帧将发送到Bob学校的网络路由器,然而Bob便携机知道了学校的网关路由器的IP地址,但是不知道MAC地址,需要使用ARP协议查询。
- Bob便携机生成一个具有目的IP地址68.85.2.1(默认网关)的ARP查询报文,将该查询报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。
- 网关路由器在通往学校网络的接口上接受到包含该ARP查询报文的帧, 发现在ARP报文中目标IP地址68.85.2.1匹配其接口的IP地址。网关路由器因此准备一个ARP回答,指示他的MAC地址00:22:6B:45:1F:1B对应IP地址68.85.2.1。它将ARP回答放在一个以太网帧中,并向交换机发送该帧,再由交换机将帧交付给Bob便携机。
- Bob便携机接收包含ARP回答报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址。
以下内容来自球友
WEB页面请求的历程
第一步:准备:通过DHCP、UDP等获取本机的动态IP
(1)Bob的PC机首先生成DHCP请求报文,放入目的端口67和源端口68的UDP报文段。报文段放入广播目的IP地址(255.255.255.255)和源IP地址(0.0.0.0)的IP数据报中。
(2)包含DHCP请求的数据报被放入以太网帧中,目的MAC地址为广播地址FF:FF:FF:FF:FF:FF,源MAC地址为PC适配器MAC地址。该帧在交换机所有出口端广播。
(3)路由器接口(MAC地址:00:22:6B:45:1F)接收到该帧,抽取出IP数据报。广播IP地址表示该IP数据报需要节点的高层协议处理,所以分解出UDP报文上传UDP。DHCP服务器从UDP报文段中得到该请求报文。
(4)服务器生成DHCP ACK报文,包括分配给PC的IP地址、DNS服务器IP地址、默认网关路由器IP地址(68.85.2.1)、子网块(68.80.2.0/24)。该报文放入UDP、IP数据报、以太网帧中,目的MAC地址为PC的MAC地址、源MAC地址为路由器刚刚收到帧的子网接口的MAC地址。
(5)ACK报文发送到交换机。由于交换机通过自学习,之前从PC接收帧的时候得到MAC地址和端口的映射,所以直接将帧从连接PC的接口转发。
(6)PC接收到帧,一步步抽取出ACK报文,记录下自己的IP地址、DNS服务器地址。配置IP转发表的默认网关,将目的地址为子网块之外的所有数据报发送向默认网关。
第二步:仍在准备:通过ARP查询DNS
(1)Bob的PC机生成DNS查询报文,www.google.com放入报文的问题段。DNS报文放入端口号53的UDP报文段中,UDP报文段目的IP为DNS服务器的IP地址,源IP地址为PC的IP地址的IP数据报,但是缺少默认网关的目的MAC地址(只知道IP地址)。
(2)PC发送查询默认网关MAC地址的ARP查询报文,放入广播目的地址的以太网帧。向交换机发送该帧,交换机将该帧转发给所有出口端。网关路由器收到查询报文后,准备ARP回答,包括默认网关IP和对应的MAC地址。将ARP回答放入以太网帧,目的MAC地址为PC的MAC地址。发送该帧,通过交换机交付给PC。
(3)PC获取该帧,抽取得到网关路由器的MAC地址。将步骤(1)中的数据报放入以太网帧,目的MAC地址为网关路由器的MAC地址。将帧发送给交换机,交付给网关路由器。
第三步:仍在准备:通过DNS查询到网站的IP
(1)网关路由器接收帧,抽取IP数据报。根据目的地址和转发表,决定下一跳路由器。将IP数据报放入链路层帧,发送至下一跳路由–comcast最左边路由器。
(2)comcast最左边路由器接收到帧,抽取IP数据报,根据目的IP地址和转发表确定出口,向DNS服务器转发数据报。转发表已经根据域内路由协议和域间路由协议填好。
(3)DNS服务器收到IP数据报,抽取出DNS查询报文,找到对应的IP地址,生成DNS回答报文,放入UDP报文段,反向寻址到学校路由器,最后通过交换机到PC。
(4)PC从DNS报文中抽取出www.google.com对应的IP地址。
第四步:WEB客户通过TCP和HTTP与服务器交互
(1)PC生成一个目的端口号80的TCP SYN报文段,放入目的IP为谷歌的(www.google.com)IP地址的数据报中,将该数据报放置在MAC地址为00:22:6B:45:1F:1B(网关路由器)的帧中,并向交换机发送。
(2)该数据报通过学校网络、comcast网络、谷歌网络到达谷歌服务器,服务器分配资源,产生TCP SYNACK报文段,放入数据报,反向到达PC。PC形成套接字,进入连接状态,第三次握手与之后的HTTP请求一起发送。
(3)PC的浏览器生成获取URL的HTTP GET报文,写入套接字。生成的TCP报文段放入一个IP数据报中,到达谷歌服务器。
(4)谷歌HTTP服务器从TCP套接字读取HTTP GET报文,生成HTTP响应报文,将请求的页面内容放入HTTP报文实体,将响应报文放入套接字,生成的TCP报文段放入IP数据报,经过网络到达PC。
(5)PC的浏览器从套接字读取HTTP响应,从实体中抽取页面的html,终于显示web页面。