趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师
130416 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 51 讲
趣谈网络协议
15
15
1.0x
00:00/00:00
登录|注册

第14讲 | HTTP协议:看个新闻原来这么麻烦

If-Modified-Since
Cache-control
Content-Type
Accept-Charset
版本
方法
自定义流量控制
无阻塞的多路复用
自定义重传机制
自定义连接机制
解析返回报文
接收返回报文
发送返回报文
构建返回报文
发送请求
构建请求报文
建立TCP连接
DNS解析
首部字段
请求行
URL
自定义流量控制
无阻塞的多路复用
自定义重传机制
自定义连接机制
HTTP 2.0
返回过程
请求过程
基本概念
QUIC协议
HTTP协议

该思维导图由 AI 生成,仅供参考

前面讲述完传输层,接下来开始讲应用层的协议。从哪里开始讲呢,就从咱们最常用的 HTTP 协议开始。
HTTP 协议,几乎是每个人上网用的第一个协议,同时也是很容易被人忽略的协议。
既然说看新闻,咱们就先登录 http://www.163.com
http://www.163.com 是个 URL,叫作统一资源定位符。之所以叫统一,是因为它是有格式的。HTTP 称为协议,www.163.com 是一个域名,表示互联网上的一个位置。有的 URL 会有更详细的位置标识,例如 http://www.163.com/index.html 。正是因为这个东西是统一的,所以当你把这样一个字符串输入到浏览器的框里的时候,浏览器才知道如何进行统一处理。

HTTP 请求的准备

浏览器会将 www.163.com 这个域名发送给 DNS 服务器,让它解析为 IP 地址。有关 DNS 的过程,其实非常复杂,这个在后面专门介绍 DNS 的时候,我会详细描述,这里我们先不管,反正它会被解析成为 IP 地址。那接下来是发送 HTTP 请求吗?
不是的,HTTP 是基于 TCP 协议的,当然是要先建立 TCP 连接了,怎么建立呢?还记得第 11 节讲过的三次握手吗?
目前使用的 HTTP 协议大部分都是 1.1。在 1.1 的协议里面,默认是开启了 Keep-Alive 的,这样建立的 TCP 连接,就可以在多次请求中复用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP协议是互联网中最常用的协议之一,其工作原理相当复杂。本文详细介绍了HTTP请求的准备、构建和发送,以及HTTP 2.0和QUIC协议的特点。 在HTTP请求的构建过程中,包括了DNS解析、TCP连接建立以及请求行、首部字段和正文实体的构建。其中,请求行中的方法类型和首部字段中的缓存控制对系统性能至关重要。HTTP协议基于TCP协议,通过面向连接的方式发送请求,经过多层协议栈的处理最终到达目标服务器。 HTTP 2.0通过压缩头部、多路复用和二进制格式编码等机制,解决了HTTP 1.1的实时性和并发性问题,提高了并发性和传输效率。 而QUIC协议则通过自定义连接机制、自定义重传机制、无阻塞的多路复用和自定义流量控制等机制,解决了HTTP 2.0存在的问题,实现了更高效的数据传输和连接管理。 综上所述,本文通过详细的技术解释,帮助读者深入了解了HTTP协议的工作原理和相关技术细节,以及HTTP 2.0和QUIC协议的特点和优势。HTTP 2.0和QUIC协议通过各自的技术机制,提升了性能和效率,为网络通信带来了新的可能性。 通过本文的阅读,读者可以对HTTP协议及其相关技术有更深入的了解,同时也能够了解到HTTP 2.0和QUIC协议的优势和应用场景,为网络通信的优化提供了新的思路和方法。 总体而言,本文内容丰富,技术性强,对于对网络协议感兴趣的读者来说,是一篇值得深入阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(119)

  • 最新
  • 精选
  • 起风了001
    以前一直不是很确定Keep-Alive的作用, 今天结合tcp的知识, 终于是彻底搞清楚了. 其实就是浏览器访问服务端之后, 一个http请求的底层是tcp连接, tcp连接要经过三次握手之后,开始传输数据, 而且因为http设置了keep-alive,所以单次http请求完成之后这条tcp连接并不会断开, 而是可以让下一次http请求直接使用.当然keep-alive肯定也有timeout, 超时关闭.

    作者回复: 赞

    2019-05-21
    6
    68
  • Untitled
    QUIC说是基于UDP,无连接的,但是老师又说到是面向连接的,看的晕乎乎的。。

    作者回复: 讲tcp的时候讲了,所谓的连接其实是两边的状态,状态如果不在udp层维护,就可以在应用层维护

    2018-09-17
    30
  • 墨萧
    每次http都要经过TCP的三次握手四次挥手吗

    作者回复: keepalive就不用

    2018-06-18
    2
    25
  • skye
    “一前一后,前面 stream 2 的帧没有收到,后面 stream 1 的帧也会因此阻塞。”这个和队首阻塞的区别是啥,不太明白?

    作者回复: 一个是http层的,一个是tcp层的

    2018-06-20
    4
    17
  • 花仙子
    UDP不用保持连接状态,不用建立更多socket,是不是就说服务端只能凭借客户端的源端口号来判定是客户端哪个应用发送的,是吗?

    作者回复: 是的

    2019-02-11
    2
    12
  • 柯察金
    怎么说呢,感觉听了跟看书效果一样的,比较晦涩。因为平时接触比较多的就是 tcp http ,结果听了感觉对实际开发好像帮助不大,因为都是一个个知识点的感觉,像准备考试。希望能结合实际应用场景,讲解。

    作者回复: 太深入就不适合听了,所以定位还是入门

    2019-01-25
    4
    11
  • 传说中的风一样
    cache control部分讲错了,max–age不是这么用的

    作者回复: 这里忘了说一下客户端的cache-control机制了,一个是客户端是否本地缓存过期。这里重点强调的类似varnish缓存服务器的行为

    2019-04-23
    2
    8
  • 意无尽
    哇,竟然坚持到这里了(虽然一半都还不到),虽然前面也有很多不懂。基本上从第二章开时候每一节都会花费一两个小时去理解,但是花费确实值啊,让我一个网络小白慢慢了解了网络的各个方面,感觉像是打开了另一个奇妙的世界!相当赞,后期还要刷第二遍!学完这个必须继续购买趣谈Linux操作系统!感谢刘超老师!

    作者回复: 谢谢

    2020-05-30
    6
  • stark
    有个地方不是很明白,就是里面说的流数据,比如,我在实际的应用里怎么查看下这些数据什么,比如像top这样的,怎么查看呢?

    作者回复: tcpdump,其实dump出来没有所谓的流,都是感觉上的流,还不是一个个的网络包

    2019-07-11
    6
  • heliang
    http2.0 并行传输同一个请求不同stream的时候,如果“”前面 stream 2 的帧没有收到,后面 stream1也会阻塞",是阻塞在tcp重组上吗

    作者回复: 是的

    2019-04-12
    4
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部