佛山正规的免费建站,软件公司都是帮别人做网站么,北京建设部安全员证书查询网站,网站开发php 图片上传失败当我们输入www.baidu.com的时候#xff0c;其实是先将baidu.com的域名进行DNS解析#xff0c;转换成对应的ip地址#xff0c;然后开始进行基于TCP构建三次握手的连接#xff0c;目前使用的是1.1 默认是开启了keep-Alive。可以在多次请求中进行连接复用。
HTTP 请求的构建…当我们输入www.baidu.com的时候其实是先将baidu.com的域名进行DNS解析转换成对应的ip地址然后开始进行基于TCP构建三次握手的连接目前使用的是1.1 默认是开启了keep-Alive。可以在多次请求中进行连接复用。
HTTP 请求的构建
连接建立之后就要发送HTTP的请求了 整体其实就是三部分请求行请求首部请求正文。
请求行 请求行其实就是一个是请求的域名然后对应的请求方法get一般是获取资源post是修改或者添加资源delete是修改资源。
首部字段
首部字段中主要是以keyvalue的形式存储的 Accept-Charset表示客户端可以接受的字符集 Content-Type正文的格式
对于一个web网页来说的话其实有很多是静态资源所以一般使用CDN进行加速处理或者使用专门的静态资源处理器进行处理。 对于静态资源有Vanish缓存层缓存过期的时候才会访问真正的Tomcat应用集群。 Cache-control是用来控制缓存的当客户端发送的请求包含max-age指令的时候判断在缓存层中资源的缓存时间数值比指定时间的数值小客户端可以接收缓存当max-age0就需要请求到真是的数据层。
If-Modified-Since如果服务器的某个资源在某个时间之后更新了那么客户端就需要下载最新的资源如果没有更新返回304客户端不用下载。
当数据都准备好的时候就会通过socket将数据发送出去到TCP层。
HTTP 请求的发送
HTTP因为是基于TCP协议的所以会将数据转换成二进制方式变成一个一个的报文段。 HTTP是不知道数据丢失的所以需要TCP这一层进行维护比如数据没有ACK就需要重传保证。TCP在发送的时候会将自己的源IP地址和目标IP地址写上一层层的传下去然后通过服务端进行处理最后返回结果。
HTTP 返回的构建 状态码会反应HTTP请求的结果200意外着大吉大利。 Retry-After 表示客户端多久应该在尝试下Content-Type对应的数据格式
HTTP 2.0
HTTP1.1 其实是一收一发的模式在实时性和并发性上存在问题 HTTP2的特性 传输的数据量的大幅减少以二进制方式传输标头压缩。 多路复用及相关功能消息优先级。 服务器消息推送并行推送。
如果是接收 一个jpg,js,css 在1.1其实是串行的但是在2.0中 在一个连接里客户端和服务端可以同时发送多个请求和回应。 HTTP2 解决了HTTP1.1的队首阻塞问题不需要pipeline机制用多条TCP连接实现并行请求与响应减少TCP连接数对服务器性能的影响。同时可以通过在一个连接中进行数据传输。提升传输速度。
小结
HTTP 协议虽然很常用也很复杂重点记住 GET、POST、 PUT、DELETE 这几个方法以及重要的首部字段 HTTP 2.0 通过头压缩、分帧、二进制编码、多路复用等技术提升性能 QUIC 协议通过基于 UDP 自定义的类似 TCP 的连接、重试、多路复用、流量控制技术进一步提升性能。