HTTP
HTTP 是基于 TCP/IP 的互联网通信协议
http 规定
get 请求 参数通过 URL 传递
post 请求 数据放在 Request body 里
get 请求 浏览器会把 http header 和 data 一并发送出去,服务器响应 200 返回数据
post 请求 浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 返回数据
大多数浏览器通常都会限制 url 长度在 2K 个字节,大多数服务器最多处理 64K 大小的 url
http 请求头
HTTP/1.1 默认 持久连接 HTTP Persistent Connections
connection: keep-alive
在同一个 TCP 连接上,进行多次 HTTP 通信
HTTP/1.1 默认不会主动关闭 TCP 连接, 客户端或服务端发现对方一段时间没有活动了,就会关闭连接
长连接可以减少重复建立断开 TCP 连接的开销,缩短 HTTP 请求响应的时间,提高 Web 页面显示的速度
大多数浏览器,同一个域名可以建立6个持久连接
HTTP/1.1 引入管道机制 pipelining, 基于持久连接, 可并行发送多个请求,而不是等一个请求响应完了才能发送下一个请求,服务器按请求先后顺序响应
缩短 HTTP 请求响应的时间,提高 Web 页面显示的速度
HTTP/1.0 默认 短连接
connection: close
每进行一次 HTTP 通信,就断开一次 TCP 连接
referer 请求来源
比如 www.google.com 里点击 www.baidu.com 链接,Referer=http://www.google.com
location 跳转
当浏览器接受到响应头中的 Location: xxxx 后,就会自动跳转到 xxxx 指向的 URL 地址
类别 原因短语
1xx Informational(信息性状态码) 接受的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向) 需要进行附加操作以完成请求
4xx Client error(客户端错误) 客户端请求出错,服务器无法处理请求
5xx Server Error(服务器错误) 服务器处理请求出错
200 OK 表示从客户端发送给服务器的请求被正常处理并返回
400 Bad Request 表示请求报文中存在语法错误
401 Unauthorized 未经许可,需要通过 HTTP 认证
403 Forbidden 服务器拒绝该次访问(没有访问权限)
404 Not Found 表示服务器上无法找到请求的资源
405 Method Not Allowed 请求的方法类型不对,如用 post 请求了 get 服务
500 Inter Server Error 表示服务器在执行请求时发生了错误
503 Server Unavailable 表示服务器暂时处于超负载或正在进行停机维护,无法处理请求
uri 有两种形式,url 和 urn
urn 目前还不成熟,所以目前的 uri 基本都是 url
url - 统一资源定位符,描述了特定服务器上某资源的特定位置
urn - 统一资源名,用同一个名字通过多种网络访问协议来访问资源,与目前的资源所在地无关,
目前还不成熟,未大范围使用
------------------------------------------------
HTTPS 和 HTTP 的主要区别
------------------------------------------------
https 默认端口 443,需要申请证书,通过 ssl 加密,传输的是密文,安全性更高
http 默认端口 80,传输是明文
两者的连接方式不同
------------------------------------------------
------------------------------------------------
浏览器发出一个请求到收到响应经历了哪些步骤
------------------------------------------------
1.浏览器解析用户输入的 url, 生成一个 http 格式的请求
2.域名解析,先从本地的 hosts 文件里查找是否有域名对应的 ip 配置, 没有就请求 dns 拿对应的 ip
3.浏览器通过操作系统发送请求
4.经过网络中的路由器交换机,最终到达对应的服务器
5.服务器转发请求给对应端口的应用程序,比如 8080 的请求转给 tomcat
6.tomcat 根据 url 映射,经过 springMVC 的 dispatcherServlet, controller处理后得到响应结果
7.tomcat 发送响应结果给客户端
8.客户端拿到结果后传递给浏览器解析渲染页面
------------------------------------------------