输入url后发生了什么?

1.浏览器进行地址解析,然后DNS域名解析。

  1. 浏览器进行地址解析,会补全如源端口:80等信息

dns域名解析分为以下步骤

1.先查看浏览器dns缓存表中是否有域名对应的ip地址

2.如果没有,查看操作系统的dns缓存中是否有对应的ip地址

3.如果没有,就直接到本地区的dns服务器发起请求

4如果还是没有。就直接到root server服务器上发起请求解析

2.通过ip寻址和ARP协议,找到目标服务器ip地址, 根据tcp协议三次握手建立连接

IP寻址:根据目的ip与子网掩码进行按位与操作,判断是否在同一个网段,如果是在同一个网段则交由交换机进行转发,交换机进行转时查寻mac地址转换表

根据mac映射端口,如果不在同一个网段,发送数据报到网关。第一步先查找本机ARP缓存表,基于ARP协议将ip地址转换为mac地址,如果在缓存表中找不到则发送给交换机,交换机发送询问网关mac的广播数据报,要求网关返回mac地址,网关mac返回后会更新ARP缓存表,将http数据发送给网关。

路由器接受分用数据报,并封装数据报,根据NAPT协议将局域网ip和端口映射为公网ip和端口,根据路由技术(路由算法)找到通往目的主机最近的路,路途中的设备进行分用,封装,直到抵达目的主机

根据tcp协议客户端与浏览器进行三次握手建立连接

三次握手步骤:1、主机A发送syn到主机B请求建立A->B的连接,此时主机A的状态为syn_sent。2.主机B回复ack+syn,收到主机A的连接请求,并要求建立B->A的连接,此时主机B的状态为syn_rcvd.3.主机A回复第二步的syn的ack。主机A的状态为established,建立A到B的连接,主机B接受到第三步ack,建立B->A的连接,主机B的状态置为established。

 

 3.发送Http请求等待响应。

浏览器会对请求体进行封装,封装格式为

请求行:GET   baidu.com /HTTP/1.0 (请求的方法,url,请求协议)  

请求头:以键值对方式如 cookie: session-id=18adahb1y

空行

请求正文  

4.服务器处理请求 (以tomcat举例)

服务器通过解析url找到contentpath根据contentpath找到对应的那个项目资源,根据servletpath找到对应的servlet,根据配置文件实列化servlet调,servlet用service方法进行处理资源,tomcat封装响应体,通过socket发送给客户端。

5.返回响应结果给客户端

在返回的响应体中需要关注content-type字段和状态码, content-type的值不同决定浏览器处理的方式不同,如果时text/html则以网页的方式显示,如果是text/plain方式则以文本方式显示到客户端等

常见的类型有:

常见的状态码

 6关闭tcp连接,四次挥手

1.主机A发送fin到主机B,请求关闭A到B的连接。

2.主机B回复ack,主机B的状态置为close_wait状态。

3主机B发送fin请求关闭B到A的连接

4主机A回复ack(第三步的fin),状态置为time_wait状态,主机B收到第四步数据报,状态置为close,主机A经过2msl(超时等待后)状态置为closed。

7浏览器解析html;

浏览器通过解析htnl生成dom树。 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值