Web页面的请求过程

前言:

到这里的话,我想计网,应该告一段落了,还剩一点密码安全之类的,有空再补补咯,这里借着书上的最后一波总结。

请求过程:

先贴上书上的场景图。
在这里插入图片描述

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

由于一开始主机通过网线连接入学校网络的时候是没有ip地址的,所以第一步当然是获取自身ip地址。这就要用到DHCP协议了。
主机的动作:
1)主机的操作系统生成一个DHCP请求报文
2)封装到目的端口67,源端口68的UDP报文段中
3)再被封装到广播地址是255.255.255.255 源ip地址是0.0.0.0的的ip数据报中
4)再被封装到以太网帧中,该以太网帧的目的MAC地址是FF:FF:FF:FF:FF:FF,即将该帧广播到与交换机连接的所有设备。该帧的源MAC地址是主机本身的MAC地址

然后就进入了链路层中进行广播,传输到了交换机中,在交换机的所有出端口广播此帧。随意的广播到了路由器中。

路由器的动作:
1)得到该以太网帧,该广播MAC地址表示应该由更高层的协议处理,从中抽取出ip数据报
2)得到ip数据报,该广播ip地址表示应该由更高层协议处理,从中抽取出UDP报恩段
3)DHCP服务器的UDP套接字收到该UDP报文,抽取出了DHCP请求报文
4)DHCP服务器为主机分配ip地址,并且生成一个DHCP ACK报文,其中包含了所分配的ip地址、DNS服务器的ip地址、默认网关的IP地址、子网掩码。
5)封装在一个UDP报文段中,端口号为68,再封装到一个IP数据报中,仍然是广播,最后封装到以太网帧中。这时候以太网帧的MAC地址就是路由器该接口的MAC地址,目的地址就是主机的MAC地址.
该以太网帧由路由器发向交换机,由于交换机是自学习的,所以该交换机记录下了主机的MAC地址,根据以太网帧中目的主机的MAC地址,直接转发到主机

主机动作:
1)主机获取该以太网帧,抽取ip数据报,抽取出UDP报文段传入UDP68端口的套接字中,再抽取出DHCP ACK报文。
2)可能会由多个DHCP服务器同时响应,此时主机选择其中一个进行响应,主机记录下所分配的IP地址和 他的DNS服务器IP地址,再IP转发表中安装默认网关的地址,让发送给外网的数据报发送给网关。

随后主机还要给带着所分配的ip地址和dhcp服务器ip地址,发送一个DHCP请求报文。后续的底层的协议运转不说啦,默认DHCP收到该请求报文,又返回一个DHCP ACK报文,至此主机就有ip地址使用啦。

仍在准备:DNS、ARP

此时我的主机默默访问了google.com,这时候由于主机的浏览器并没有访问过,没有记录下该url的ip地址,所以需要获取该url的ip地址。这就要用到DNS服务器了
主机动作:
1)生成一个DNS查询报文,将url放入DNS报文的问题段中。
2)放入目的端口53的UDP报文中。
3)再被封装到IP地址为DNS服务器的ip地址、源地址为主机ip地址的IP数据报中。
4)再封装到以太网帧中,该帧将发送到网关路由器中,(前面说过发送到外网的数据报都会转发到网关中),但是有个问题主机不知道网关路由器的MAC地址,唏嘘,又要用到一个协议ARP协议。
主机动作:
1)生成一个ip地址为网关ip地址的ARP查询报文。
2)将其放入具有广播地址的(FF:FF:FF:FF:FF:FF)的以太网帧中广播
网关路由器动作:
1)网关路由器收到该ARP查询报文的帧,发现ARP报文的目的ip地址和本接口的ip地址一样,所以准备一个ARP回答,指定MAC的地址对应本机的ip地址,然后将该ARP回答放在一个以太网帧中,目的MAC地址是我的主机,然后向交换机发送该帧
主机动作:
1)终于。。。。。竹节终于拿到了网关的MAC地址,终于可以发送DNS查询报文了=。=

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

1)收到该帧并且抽取包含DNS查询的IP数据报。路由器查找该数据报的目的地址,根据转发表转发到合适的路由器中。
2)DNS服务器收到了查询报文,生成一条DNS回答报文,将其DNS回答放入UDP报文段中,放入寻址到主机的IP数据报中。
3)最终到达主机,成功拿到url对应的ip地址。

终于可以冲浪了

此时万事具备,只差一手TCP连接,即可上google冲浪。
第一次握手:
客户端主动打开,发送连接请求报文段(SYN报文),SYN标识位置为1,Sequence Number会被设置为一个随机值,然后客户端进入SYN_SEND状态,同步已发送状态
第二次握手:
服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,这里是Acknowledgment Number置为x+1,然后服务器进入SYN_RECV状态,并且为这个状态被称为半连接状态,会在第三次握手之前为该TCP连接分配TCP缓存和变量,并将该TCP连接放入半连接队列。此处服务器容易收到SYN攻击。
第三次握手:
客户端再进行一次确认,将ACK置为1,Sequence Number置为x+1,Acknowledgment Number置为y+1,最后客户端与服务器都进入ESTABLISHED状态,已建立连接状态,第三次连接可以在报文段负载中携带数据了。
最后TCP连接建立,主机向谷歌的http服务器请求一个get报文,然后谷歌的服务器生成一个http响应报文,将请求的页面放入http响应体中,并将报文发送到TCP套接字。主机收到后,终于终于有页面显示了。

总结:

应用层:http 应用进程间通信和交互的规则。
运输层:udp、tcp 对应的端口 多路复用/多路分解,即提供端口来区分不同进程
网络层:ip 对应ip地址 根据ip地址传输报文,提供ip地址区分不同的区域的网络
链路层:以太网 对应MAC地址 根据mac地址传说帧,提供mac地址区分不同主机

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值