你输入网址到页面显示中间发生了什么

浏览器背后的故事

www.imooc.com域名
访问地址的url
ip地址
浏览器 域名查询 DNS服务器 获取IP 浏览器
浏览器 发送请求 web服务器 回传页面内容 浏览器
浏览器 渲染 个人PC

HTTP

超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用于与发展,得到不断地完善和扩展

Web与HTTP

WEB 是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统
建立在Internet上的一种网络服务,为浏览器在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超链接将Internet上的信息节点组织成为一个互为关联的网状结构

姓名、作用

HTTP协议的前世今生

1990年10月 万维网之父Tim Berners-Lee最早提出了HTTP协议
1991年 HTTP0.9诞生
1996年5月 HTTP1.0发布
比HTTP0.9加了很多
1997年1月 HTTP1.1发布
现在用的最多的

2015年5月 HTTP2.0提出
是HTTP1.1的扩展,普及率不高,不到30
90%HTML5
HTTP3.0 QUIC协议
谷歌2013年提出。基于UDP,面向无连接。UDP不可靠。谷歌大量改进。
16年 IETF HTTP3 。离应用还远。

像一个人上了哪个小学、中学大学。
0.9功能少,只能短文件
1.0 post get 状态码、权限等等
1.1 delete、持久连接等

透过TCP/IP看HTTP

HTTP协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集
为了更好的理解HTTP协议,我们先了解一下TCP/IP的相关知识

TCP/IP协议族

TCP/IP协议其实是一系列与互联网相关联的协议集合起来的总称
分层管理是TCP/IP协议的重要特征

TCP/IP协议族分层

TCP/IP协议族是由一个四层协议组成的系统,这四层分别为:应用层、传输层网络层和数据链路层
应用层:
应用层一般是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。如:FTP(多用),DNS,HTTP等。
传输层:
传输层通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传送功能。
在传输层有两个性质不同的协议:TCP和UDP(场景决定用哪个)。
网络层:
网络层用来处理在网络上流动的数据包,数据包是网络传送的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传输给对方。
链路层:
链路层用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动,NIC(Network Interface Card, 网络适配器)以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围内。
应用层 HTTP
传输层 TCP
网络层 IP
链路层 网络

数据包封装过程。每级协议加数据头,并且链路层加数据尾

HTTP数据传输过程

发送端发送数据时,数据会从上层传输到下层,且每过一层都会被打上该层的头部信息。而接收端接收数据时,数据会从下层传输到上传,传输前会把下层的头部信息删除

传输层-TCP三次握手

使用TCP协议进行通信的双方必须先建立连接,然后才能开始传输数据。为了确保连接双方可靠性,在双发建立连接时,TCP协议采用了三次握手策略。
第一次握手,客户端发送带有SYN标志的连接请求报文段,然后进入SYN_SEND状态,等待服务端的确认。
第二次握手:服务端接收到客户端的SYN报文段后,需要发送ACK信息对这个SYN报文段进行确认。同时还要发送自己的SYN请求信息。服务端会将上述的信息放到一个报文段(SYN +ACK报文段)中,一并发送给客户端,此时服务端将会进入SYN_RECV状态。
第三次握手:客户端接收到服务端的SYN+ACK报文段后,会向服务端发送ACK确认报文段,这个报文段发送完毕后,客户端和服务端都进入ESTABLISHED状态,完成TCP三次握手。

DSN域名解析

DNS服务:提供域名到IP地址之间的解析服务
用户把域名给DNS,DNS把IP地址转到用户,用户再把IP地址给服务器,没有的话就是域名错误。
本地host文件:给经常访问的网址保存映射。
先查本地DNS服务器。然后查首选的DNS服务器,根据是否转发,有转发转发,或者找根DNS
DNS服务器本身有一个比较复杂的逻辑。
CDN服务器,挂载到DNS服务器上,对请求进行分发,根据地理位置判断改用哪个地区的服务器。

回溯HTTP事务处理过程

当客户端访问Web站点时,首先会通过DNS服务查询到域名的IP地址。然后浏览器生成HTTP请求,并通过TCP/IP协议发送给Web服务器。Web服务器接收到请求后会根据请求生成响应内容,并通过TCP/IP协议返回给客户端。

你输入网址到页面显示中间发生了什么

如果我们用客户端浏览器浏览一个页面,我们要从中分解出协议名,主机名,端口,对象路径等等,通过DNS服务器解析它的IP地址,下一步是封装HTTP请求的数据包,把以上内容结合本机信息封装成HTTP请求的数据包。HTTP是应用层,最上层,然后往传输层传,把HTTP数据包加数据,封装成一个TCP包,然后开始建立TCP连接,TCP三次握手,在HTTP开始工作前,客户机,首先要通过网络与服务器进行连接。这个连接是由TCP完成。TCP协议与IP共同构建了我们的互联网。建立连接之后发送请求。客户端发送请求给服务器,请求方式就是HTTP的一个格式,然后服务器来进行响应,响应后,消息体里会有状态吗,协议版本号,成功或失败的代码,包括web信息、实体信息、服务器信息等等。最后释放TCP连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值