前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

网络基础知识 - HTTP协议(网络综合布线基础知识)

qiguaw 2024-10-07 12:54:51 资源文章 14 ℃ 0 评论

HTTP协议

前面讲过了传输层的TCP和UDP协议。现在咱们来讲讲应用层的协议。应用层的协议有很多,其中就有HTTP协议。HTTP协议应该是我们平时接触最直接的协议了。比如我们再浏览器中输入http://www.baidu.com.浏览器就会把www.baidu.com这个域名发送到DNS服务器,经过解析后得到IP地址,接下来就发送HTTP请求。HTTP是基于TCP协议的,所以要先跟服务器建立链接,也就是三次握手。建立连接之后就开始发送HTTP请求。HTTP请求格式如下.

主要包含三部分。

第一部分是请求行,包括请求方法,标准的HTTP请求方法有GET,PUT,POST,DELETE,OPTION。然后就是URL,接着就是版本比如HTTP1.1

第二部分是请求头。请求同中包含一些重要的key-value键值对,比如Content-Type指定传入内容格式,authorization指定鉴权需要的信息,Cache-Control来控制缓存等等。

第三部分就是请求体,就是要传送的数据内容。

接下来就是HTTP求情的发送过程,HTTP请求再应用层通过二进制流的方式传输并加上TCP头,到了TCP曾会把二进制流转化为报文段转送,这时候会把目标IP和源IP加到IP头里,然后交给IP层。再IP层要查看目标IP和自己是不是一个局域网,如果是则直接一个ARP广播获取目标IP的mac地址,如果不是,就把请求发送到网关,同样还是ARP协议获取网关的MAC地址,网关接受到请求后提取出目标IP地址由网关根据路由协议决定下一级跳转,经过一级一级跳转后,请求到达目标局域网,目标局域网的路由器发现请求IP是跟我一个网络的于是就在他的局域网通过ARP找到目标IP的mac地址。找到mac地址后把源MAC地址和目标MAC地址加到MAC头中,交给网络层。目标机器发现MAC地址符合就把包接受然后一层层把包头剥开,最后发现需要访问这个端口的程序。于是程序响应请求。返回一个网页。

再看HTTP返回格式

HTTP返回也是包含三部分:

第一部分是状态行,包括版本,状态码,这个状态码就是平时我们看的200,400,500等,短语就是介绍下原因

第二部分是返回头,也是一组key-value的键值对

第三部分是返回实体就是返回的数据内容。

HTTP2.0

HTTP协议发展到后来出现HTTP2.0 版本,这个版本对于HTTP1.x有一下改进

请求头压缩:HTTP2.0 对请求头进行一定的压缩。HTTP1.x的头都带有大量的信息,而且每次都要重复传送。HTTP2.0使用encoder减少请求头的大小,将原来的key-value键值对建立一个索引表,专门为头部压缩设计的HPACK算法使用一份索引表来定义常用的http Header,把常用的 http Header 存放在表里,请求的时候便只需要发送在表里的索引位置即可。

二进制分帧:HTTP2.0之所以能够突破http1.X标准的性能限制,改进传输性能,实现低延迟和高吞吐量,就是因为其新增了二进制分帧层。 HTTP2.0将每个流中传输的数据分为多个消息和帧,并对他们采用二进制编码,这些帧可以并行发送,然后通过每个帧的头部表示重新组合,提高了传输效率

多路复用:HTTP1.x中客户端在同一时间对一个域名的请求有上限限制,超过上线一般都会被阻塞。 HTTP2.0通过多路复用优化了这一性能,它允许一个连接发起多重的请求-响应消息,结合二进制分帧层,可以不通过多个TCP连接并行就可以实现更高的吞吐量。

可能有些朋友看着HTTP2.0的优化点感觉比较晦涩难懂,没有关系。我觉得可以先了解下有这些优化点,在实际的工作中遇到HTTP2.0的使用场景再回过头来理解下技术点也为时未晚,理解也会更加深刻。比如开发过gRPC服务的朋友可以思考以下为什么gRPC声称自己性能比较好。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表