浏览器访问服务器的过程
1.用户输入地址
2.流量拿起请求DNS服务器,获取域名对应的IP地址
3.请求连接该IP地址服务器
4.发送资源请求(HTTP协议)
5.web服务器接收请求,并解析请求,判断用户意图
6.获取用户想要的资源
7.将资源返回给web服务器程序
8.web服务器程序将资源数据通过网络发送给浏览器
9.浏览器解析请求的数据并且完成数据的显示
网址
网址又称为URL,URL的英文全拼是(Uniform Resource,Loador),表示的意思是统一资源定位符,是网络资源地址。
URL的组成部分分为三类:
-
协议部分
-
域名部分
-
资源路径部分
比如: http://news.china.com.cn/2018-06/12/content_52060465.htm URL的格式为: http://: 协议部分,news.china.com.cn: 域名部分,/2018-06/12/content_52060465.htm:资源路径部分
域名是什么呢?
我们在访问一台服务器的时候,需要记住该服务器的IP地址,由于IP地址不利于人们记忆,所以推出的域名技术,域名是由一串用点分割的名字组成的Internet上某一台计算机或者计算机组的名称,用于在数据传输时标识计算机的位置。
域名可以用来表示一个单位,机构或可以利用个人在Internet上的确定的名称或者位置,域名是唯一的,客户可以利用这个名字找寻有关的产品和服务信息。
DNS是什么呢
由于我们用域名来标识计算机的位置,但是我们前面讲过,网络上标识主机的唯一标识是IP地址,所以就需要记录一下,一个域名和IP地址的对应关系,这个对应关系就存储在DNS服务器中,当我们向DNS发出请求时,DNS会返回给我们域名所对应的IP地址。
- 浏览器访问服务器其实就是请求和响应的过程
- URL通俗理解就是请求资源在网络中的地址
- 通过域名可以解析出来一个IP地址,域名是方便大家记忆某台主机地址的
HTTP协议简介
HTTP协议就是超文本传输协议(HyperText Transfer Protocol),通俗理解是浏览器和web服务器传输数据格式的协议HTTP协议是一个应用层协议
HTTP协议是基于TCP协议的,发送数据之前需要建立好连接。
HTTP是万维网的数据通信的基础,设计HTTP最初的目的是为了提供一种发布和接收HTML页面<网页>的方法
HTTP协议的制作者是蒂姆-博纳斯-李
开发者工具界面
- 元素(Elements):用于查看或修改HTML元素的属性,CSS属性,监听事件,断点等。
- 控制台(Console):控制台一般用于执行一次性代码,查看JavaScript对象,查看调试日志信息或异常信息。
- 源代码(Sources):该页面用于查看页面的HTML文件原代码,JavaScript原代码,CSS原代码,此外最重要的是可以调试JavaScript源代码,可以给JS代码添加断点等。
- 网络(Network):网络页面主要用于查看header等与网络连接相关的信息。
注意:Network中的每一项就是一次请求/响应过程,点击每一项,可以查看本次请求响应的报文信息。
HTTP请求报文分析
demo:
GET / HTTP/1.1
Host: localhost:10000
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
GET/HTTP/1.1叫做请求行,里面包含3个信息,以空格隔开。
- 第一个叫做请求方法
- 第二个表示请求的资源路径
- 第三个表示HTTP协议的版本
Host表示浏览器要请求的主机地址
Connection表示浏览器和服务器之间的连接方式
User-Agent用户代理
Accept表示浏览器告诉服务器,自己能够接收并识别的文件类型
Accept-Encoding表示浏览器能够处理的压缩方式,网页数据量大的时候,压缩后可以提高传输速率,提高用户体验
Accept-Language浏览器可以接收的文本语言,如果非中文编码可能会出现乱码。
小结
请求行: 请求方法 资源路径 HTTP版本\r\n
GET/HTTP/1.1\r\n
请求头: 头名称:头对应的值\r\n
Host:localhost:100000\r\n
Connection: keep-alive\r\n
空行: \r\n
请求体: 1.name=1&age=11
2.二进制数据
HTTP请求报文可以分为GET请求和POST请求报文,要注意的是GET请求没有请求体,POST请求有请求体信息。
HTTP响应报文分析
demo:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 14 Mar 2018 09:52:48 GMT
Server: BWS/1.1
- 第一行HTTP/1.1 200 OK叫做响应行,共分成3部分,第一部分HTTP/1.1表示HTTP协议的版本,第二部分是一个数字,这个数字表示响应状态码,用户向服务器发出了请求,如果服务器正常返回响应报文,那么状态码一般都是200,第三部分的“OK”表示原因短语,表示对前面状态码的简单描述。
小结
响应行: HTTP版本 状态码 原因短语\r\n
HTTP/1.1 200 OK\r\n
响应头: 头名称: 头对应的值\r\n
Content-Type:test/html; charset=utf-8\r\n
Server:BWS/1.1\r\n
空行: \r\n
响应内容:hello world
HTTP协议响应报文分为4部分,每部分之间使用\r\n进行分割
- 响应行
- 响应头
- 空行(\r\n)
- 响应体
长连接和短连接
在HTTP/1.0中,默认使用的是短连接,也就说,浏览器和服务器没进行一次HTTP操作,就建立一次连接,但任务结束就中断连接,如果客户端浏览器访问的某个HTML或者其他类型的Web页汇总包含有其他的Web资源,如js文件,图像文件,CSS文件等。当浏览器每遇到这样一个Web资源,就会简历一个HTTP会话。
从HTTP/1.1起,默认使用长连接,用以保持连接性,使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
在真正的读写操作之前,server与client之间必须建议一个连接,
当读写操作完成后,双方不需要这个连接时它们可以释放这个连接
连接的建立通过三次握手,释放则需要四次挥手
所以说每个连接的建立都是需要资源消耗和时间消耗的。
本文详细介绍了HTTP协议的工作原理,包括浏览器访问服务器的过程、URL的组成、域名解析、DNS作用,以及HTTP请求和响应报文的分析,强调了长连接和短连接的区别。通过阅读,读者可以深入理解HTTP在Web通信中的角色。
727

被折叠的 条评论
为什么被折叠?



