http中文叫做超文本传输协议,专门用来完成HTML的超媒体文档等web内容的协议,是基于传输层TCP协议的应用层协议。
http请求封装到应用层数据包,封装在tcp数据包,封装在ip数据包,封装在以太网数据包,如果过大可能会拆成几个包。走以太网协议+交换机-广播-网关-多个网关-目标主机-一层层拆包-http请求报文-传递给tomcat-spring mvc-http响应
HTTPS是基于安全套接字的HTTP协议,可以理解为是HTTP+SSL/TSL(数字证书)的组合(在传输层和网络层之间增加了一个安全层用来进行安全校验和数据加密)。
GET 从服务器获得资源
POST 客户端向服务器提交资源
PUT 修改服务器相关资源 (已经很少用)
DELETE 删除服务器相关资源 (已经很少用)
GET:一般用于信息的获取,使用URL传递参数,并没有明确的长度限制,只不过是不同的浏览器好像有长度限制。主要是这些参数全都是明文传递。
POST:一般用于修改服务器上的资源之类的表单请求,并且没有长度大小限制。
http 1.0默认短连接,每次加载网页的时候最开始请求html网页,然后再请求js,css,图片之类的要频繁的建立tcp连接和释放tcp连接,很慢很慢
http1.1默认长链接,打开一个网页的时候建立一个长链接,这个tcp连接就保持着,其他的js,css,图片请求都基于这个tcp协议来走。还增加了缓存,可以进行断点续传
http2.0支持多路复用,基于一个tcp连接并行发送多个请求以及接收响应,解决了http1.0同一域名同一时间请求有限制的问题。二进制分帧,将数据拆分成更小的帧,提高了性能,降低延迟提高吞吐。并且通过每一帧的头部数据来进行发送和相应信息对应。
第一次,客户端发送请求连接报文,等待服务器的链接
第二次,服务端收到请求连接报文,返回一个确认报文
第三次,客户端收到确认报文,这时就建立了链接
第一次,客户端发送报文,进入FIN-WAIT-1状态(等待状态)
第二次,服务端接收到报文,进入CLOSE_WATI状态,并且返回报文,让客户端进入FIN-WAIT-2状态,此时客户端到服务端的链接就已经算释放了
第三次,服务端发送链接释放报文,进入LAST-ACK状态(等待最后一个ack回应)
第四次,客户端接收到释放报文之后,发送应答报文,自身进入TIME_WAIT状态,等待一会儿服务端,自动进入CLOSED状态,服务端接收到释放报文后也进入CLOSED状态。
DNS查询优先级:
a.本地host文件,若没有
b.查找本地DNS解析器缓存,若没有
c.查找TCP/IP参数设置中的首选DNS服务器,若没有
d.DNS服务器间的迭代查询
浏览器与服务器建立连接
一旦浏览器收到正确的IP地址。会与服务器建立TCP连接,通过TCP/IP三次握手的过程建立连接进行数据传输。
web浏览器发送HTTP请求
建立连接后,就可以发送HTTP请求,HTTP请求由请求方法,请求头,请求正文三部分组成。
web服务器处理请求并返回HTTP响应
web服务器接收到http请求,由控制层处理逻辑,从数据库取得模型,视图层组装页面,返回HTTP响应。
浏览器接收HTTP响应
包括状态行,响应头,响应报文。
重定向: 对于大型网站存在多个主机站点,为了负载均衡或者导入流量,往往不会直接返回请求页面,而是重定向。返回的状态码就不是200OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新回到第一步访问。
重定向的作用:重定向是为了负载均衡或者导入流量。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;比如baidu.com,www.baidu.com,永久重定向会将两个地址关联起来,来提高网站的自然排名。
分析页面中的超链接(如图片,样式等也是一个URL),过程和以上过程类似,之后再显示在当前页面,重复以上过程直至没有超链接需要发送,完成页面的全部加载。
引用:
https://www.cnblogs.com/aidixie/p/11764181.html
https://blog.csdn.net/m0_51380540/article/details/123336649