一、浏览器访问网站的过程
1、 基本流程
用户输入网址,
浏览器请求DNS服务器, 获取域名对应的IP地址,
请求连接该IP地址服务器,
发送资源请求. (HTTP协议),
web服务器接收到请求, 并解析请求,
获取用户想要的资源,
将资源返回给http客户端程序(浏览器),
浏览器解析呈现请求的数据
2、 域名与域名服务器
1、网站: www.sina.com.cn
-www: 主机名
- sina:机构名
- com:机构类型
- cn: 国家名 例如:tw hk us uk jp
2、域名服务器(DNS)
存放域名与ip对应的服务器
3、URL的组成部分
https://news.163.com/hello.html?page=1&count=10
1、协议部分
2、域名部分
3、资源路径部分
4、查询参数部分 [可选]
三、Http协议简介
1、什么是协议
协议就是双方之间的一种约定、一种规则;按照此约定、规则,双方就可以顺畅的、有条不紊的进行交流和通信
2、http协议
http: 超文本传输协议(hypertext transfer protocol)用于web服务器与浏览器之间传输网页数据的协议,http协议基于tcp协议基础之上
3、http协议作用
协议规定了浏览器和 Web 服务器通信数据的格式
四、http请求报文格式:
1、浏览器向服务器发送请求的数据格式:
1、 普通请求版本:
GET / HTTP/1.1 # 请求行
GET 此次请求的请求方式
/ 请求的资源的路径
HTTP/1.1 http的版本号,固定写法
Host: 127.0.0.1:8088 # 请求头
主机名:服务器的域名
Connection: keep-alive
连接的类型: 长连接
Upgrade-Insecure-Requests: 1
支持升级为安全版本 (支持升级为https版本)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
用户代理: 浏览器告诉服务器的一些浏览器的信息 (客户机信息)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
浏览器能够接受的文件类型
Accept-Encoding: gzip, deflate, br
浏览器能够接受的编码方式
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
浏览器能够接受的语言
2、 有请求体版本:
POST / HTTP/1.1 # 请求行
Host: localhost:8080 # 请求头
Connection: keep-alive
Content-Length: 34
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: null
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
# 分割行, 空行
username=laozhuang&password=123456 # 请求体
(没有解码的时候的请求报文)
b'
GET / HTTP/1.1\r\n
Host: 127.0.0.1:7981\r\n
Connection: keep-alive\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36\r\n
Accept-Encoding: gzip, deflate, sdch\r\n
Accept-Language: zh-CN,zh;q=0.8\r\n
\r\n' # 空行
2、 HTTP请求报文 总结
1、请求行[请求方法 资源路径 版本\r\n] GET /index.html HTTP/1.1\r\n
2、请求头[头名: 头值\r\n] Host: localhost
3、空行 [\r\n] "\r\n"
4、请求体[浏览器给服务器发送的数据]
五、http协议响应报文格式:
1、访问网页的响应报文格式
HTTP/1.1 200 OK 响应行
协议版本 HTTP/1.1
状态码
2xx 成功 200 OK
3xx 重定向
4xx 客户端错误 404 Not Found
5xx 服务器错误 503 Service Unavailable
状态说明
HTTP
Cache-Control: private 响应头
缓存控制命令
Content-Encoding: gzip
相应的内容是压缩的,通过gzip
Content-Type: text/html;charset=utf-8
响应体的类型:网页编码utf-8
Date: Fri, 06 Apr 2018 09:05:27 GMT
日期 东八区时间
服务器回复响应报文的时间 -- 格林威治时间
Server: BWS/1.1
服务器名称
分割符"\r\n" 空行
网页内容 响应体
2、 http响应报文格式组成:
1、响应行[版本 状态码 说明\r\n] 必须有,HTTP/1.1 200 OK\r\n
2、响应头[头名: 头值\r\n] Content-Type: text/html;charset=utf-8\r\n Server: BWS/1.1\r\n
3、空行[\r\n] "\r\n"
4、响应体[html文本或者资源数据, 即网页内容]
3、 注意:
1、响应行必须有
2、响应行的状态码:
常见的:
200: 请求成功
404: 请求的资源没有存储
505: 服务器内部发生错误
307(http1.1)/302(http1.0): 网页发生转移