浏览器访问服务器过程
DNS解析-->建立连接-->发起请求-->回复响应
url:
概念:网络资源地址
协议--域名--资源路径 三部分组成
域名
本质是IP地址
DHCP服务器(动态主机配置协议)
给局域网中计算机自动分配IP
DNS(domain name service)
用于返回域名对应的IP地址
Http协议
概念:浏览器和服务器传输数据格式协议 基于TCP协议实现
作用:规定浏览器和服务器之间数据通信格式
TCP/IP:模型
应用层: HTTP FTP
传输层 TCP UDP
网路层 IP
网络接口
工作模式:request-请求 response-响应
通信过程(查看方式)
谷歌/火狐--f12-->Network-->
Request Headers[请求]
Response Headers[响应状态]
Response [响应体]
请求报文格式
请求行:
a)请求方法:GET 向获取服务器获取资源 Post 向服务器上传资源
b)资源路径:
\index.html 或者是 \ 根据网址判断
c)协议部分:1.1通用版本
请求头:Request Headers 形式: (名字:值)
a)Host:主机身份
标识本次请求的服务器身份 或者是IP地址:[端口号]
b)Connection:keep-alive
长连接<keep-alive 保持存活> 端连接<close 关闭>
c)User-Agent:
用户代理 标识浏览器身份
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
1.爬虫时,设置header=的值,可模拟浏览器读取 2.开发多个版本网页-适配
d)Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
接收 文件类型
e)Accept-Encoding: gzip,default
可接收的压缩方式
降低网络传输带宽 --> 提供传输速度
缺点:加重CPU使用率
f)Accept-Language: zh-CN,zh;q=0.9
可以接收的语言<编码>
总结:
请求行【方法 资源路径 版本 \r\n】
请求头【名称:值\r\n】 请求头可以有多个
\r\n 空行
请求体 【浏览器向服务器上传的数据】
GET方法请求一般不带请求体 POST可以带请求体
响应报文格式
响应报文<服务器 回送给浏览器的数据>
响应行:HTTP/1.1 200 OK
1.版本
2.状态
2xx 成功 ok 200
3xx 重定向 302/307
4xx 客户端报错 404 Not Found
5xx 服务器端报错 503 服务不可用
响应头 头名:值
a)Connection:keep-alive
长连接<keep-alive 保持存活> 端连接<close 关闭>
b)Date:Ture 11 Sep 2018 03:46:26 GMT
默认为格林威治时间 与北京时间相差8小时
c)Expires:Ture 11 Sep 2018 02:46:26 GMT
过期时间
d)Sercver: BWS/1.1
服务器后台程序<应用程序>身份
通用:Nginx web服务器
e)Conntent-Encoding: gzip
内容-(实体 - 根据头部报文决定标识 请求体/响应体 )压缩方式
浏览器接收头部数据时,可以解压响应体数据(当浏览器和服务器的压缩方式不同时,数据不压缩)
f)Conntent-type: txt/html
实体文件类型
浏览器可以根据该头部解析对应的响应体数据
g)Conntent-Length:1207
实体长度
根据对应长度接收对应长度数据作为响应体
h)Conntent-x
实体头部 可用在请求报文中
总结:
响应行[版本 状态码 说明\r\n]
响应头[名称:值\r\n]
响应体[服务器发给浏览器发送的数据]
长连接与短连接
长:keep-alive
短:close
短--缺点:套接字需要大量创建和销毁【用户体验差】 优点:管理简单,所有连接都是有效存在
长--缺点:占用资源大【可能导致服务器崩溃】 优点:体验感好,无需重复创建连接