HTTP 及 http 请求解析过程
本文为博主原创,未经允许不得转载:
HTTP 全称为:超文本传输协议(HyperText Transfer Protocol,HTTP),一种无状态的,以请求/应答方式运行的协议,
它使用可扩展的语义和自描述消息格式,与 基于网络的超文本信息系统灵活的互动 。
1.HTTP报文格式
HTTP 协议的请求报文和响应报文的结构基本相同,由三大部分组成:
起始行(start line):描述请求或响应的基本信息
头部字段集合(header):使用 key-value 形式更详细地说明报文
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频 等二进制数据

2.请求行报文格式
请求方法:如 GET/HEAD/PUT/POST,表示对资源的操作;
请求目标:通常是一个 URI,标记了请求方法要操作的资源;
版本号:表示报文使用的 HTTP 协议版本。
3.响应行报文格式

版本号:表示报文使用的 HTTP 协议版本;
状态码:一个三位数,用代码的形式表示处理的结果,比如 200 是成功,500 是服务器错误;原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因
原因:作为数字状态码补充,是更详细的解释文字,帮助人理解原因
4.HTTP 头字段
头部字段是 key-value 的形式,key 和 value 之间用“:”分隔,最后用 CRLF 换行表示字 段结束。比如前后分离时经常遇到的要与后端协商
传输数据的类型“Content-type: application/json”,这里 key 就是“Content-type”,value 就 是“application/json”。HTTP 头字段非常灵活,
不仅可以使用标准里的 Host、 Connection 等已有头,也可以任意添加自定义头,这就给 HTTP 协议带来了无限的扩展可 能。
头字段注意事项
字段名不区分大小写,字段名里不允许出现空格,可以使用连字符“-”,但不 能使用下划线“”(有的服务器不会解析带“”的头字段)。
字段名后面必须紧接 着“:”,不能有空格,而“:”后的字段值前可以有多个空格;
字段的顺序是没有意义的,可以任意排列不影响语义;
字段原则上不能重复,除非这个字段本身的语义允许,例如 Set-Cookie。
5.常用头字段
HTTP 协议中有非常多的头字段,但基本上可以分为以下几类:
请求字段:请求头中的头字段;如Host,Referer。
响应字段:响应头中的头字段,如:Server;
通用字段:在请求头和响应头里都可以出现,如 Content-type, Connection ;
6.http请求解析完整过程
当用户在浏览器输入网址回车之后,网络都做了哪些工作呢?
首先干活的事浏览器应用程序,他要解析出url中的域名
根据域名获取对应的ip地址,首先从浏览器缓存中查看,如下可以查看浏览器中域名对应的ip的解析
chrome://net-internals/

如果没有则从本机域名解析文件host(/etc/hosts)中查看,还没有则从LDNS(LocalDnsServer),RootServer 域名服务器,国际顶级域名服务商的DNS的层层解析。
拿到IP地址后,浏览器就可以发起于服务器的三次握手
握手建立之后,就开始组装http请求报文,发送报文
服务器收到请求报文之后开始,请求报文解析,生成响应数据,发送响应数据
浏览器收到响应之后,开始渲染页面
HTTP 及 http 请求解析过程的更多相关文章
- HTTP请求解析过程 (简单概括)
1.域名解析 用户输入网址,由域名系统DNS解析输入的网址: 2.TCP的3次握手 通过域名解析出的IP地址来向web服务器发起TCP连接请求,如果3次握手通过,则与web服务端建立了可靠的连接: 3 ...
- 一次 HTTP 请求响应过程的完整解析
因特网无疑是人类有史以来最伟大的设计,它互联了全球数亿台计算机.通讯设备,即便位于地球两端的用户也可在顷刻间完成通讯. 可以说『协议』是支撑这么一个庞大而复杂的系统有条不紊运作的核心,而所谓『协议』就 ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- DNS原理及其解析过程 精彩剖析
本文章转自下面:http://369369.blog.51cto.com/319630/812889 DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址 ...
- DNS解析过程详解
先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点 ...
- DNS原理及其解析过程【精彩剖析】(转)
2012-03-21 17:23:10 标签:dig wireshark bind nslookup dns 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...
- dig理解DNS的解析过程 - 阿权的书房
关于DNS的常识,可以阅读附录的一些参考资料.本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com. ...
- 从零开始写一个Tomcat(叁)--请求解析
挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLCla ...
- live555学习之RTSP连接建立以及请求消息处理过程
1,RTSP连接的建立过程 RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话. 首先创建RTSP服务 ...
- Asp.Net请求响应过程
Asp.Net请求响应过程 在之前,我们写了自己的Asp.Net框架,对整个流程有了一个大概的认识.这次我们来看一下Asp.Net整个请求处理过程是怎么样的. 浏览器封装请求报文,发送请求到达服务器, ...
随机推荐
- 神经网络优化篇:详解正则化(Regularization)
正则化 深度学习可能存在过拟合问题--高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有 ...
- 服务网格 Service Mesh
什么是服务网格? 服务网格是一个软件层,用于处理应用程序中服务之间的所有通信.该层由容器化微服务组成.随着应用程序的扩展和微服务数量的增加,监控服务的性能变得越来越困难.为了管理服务之间的连接,服务网 ...
- Kubernetes常见错误总结
1.屏幕持续打印Pod日志报error: unexpected EOF错误 Kubernetes: requesting flag for "kubectl logs" to av ...
- Programming abstractions in C阅读笔记:p181-p183
<Programming Abstractions In C>学习第61天,p181-p183总结. 一.技术总结 1.linear search algorithm 2.lexicogr ...
- POJ 2609 DP 双队列DP
POJ 2609 DP 双队列DP 题意 给出队列容量与一组数,并且我们有两个这样容量的空队列,要求我们按照次序把数装进两个队列中,输出最多能装多少以及每个数装进哪个队列. 思路 由于按照次序来装,不 ...
- Dio和http库是Flutter中两种常用的网络请求库
Dio Dio 的优点: 强大的功能:Dio提供了丰富的功能,支持拦截器.文件下载和上传.超时设置等高级特性,满足了大多数网络请求的需求. 支持并发请求:Dio具有良好的并发性能,可以同时处理多个网络 ...
- RabbitMQ系列:windows、centos和docker下环境安装和使用
一.Windows环境下安装 1.erlang下载:https://www.erlang-solutions.com/resources/download.html 或者:https://www.er ...
- 8款最佳实践,保护你的 IaC 安全!
基础设施即代码(IaC) 是一种快速发展的技术,利用软件开发原则和实践,用软件配置基础设施.与传统的 IT 基础架构相比,IaC 可以更高效地交付软件.自动化还解锁了弹性配置的能力,该功能可在不同的负 ...
- 告别数据开发中的人工审核!火山引擎 DataLeap 落地“自动校验开发规范”能力
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近期,火山引擎 DataLeap 智能市场上线"数仓建表规范"功能,该功能通过规范数仓场景下的 ...
- PPT 求职应聘:如何利用PPT去制作简历
PPT 求职应聘:如何利用PPT去制作简历 知识的载体 传播.美学.价值 价值:是通过思考 价值:将PPT导成了长图放到了微薄, 如何制作简历 09:00
