HTTP 请求响应过程你是不是很好奇,当你在浏览器中输入网址后,到底发生了什么事情?你想要的内容是如何展现出来的?让我们通过一个例子来探讨一下,我们假设访问的 URL 地址为 http://www.someSchool.edu/someDepartment/home.index,当我们输入网址并点击回车时,浏览器内部会进行如下操作
- DNS服务器会首先进行域名的映射,找到访问www.someSchool.edu所在的地址,然后HTTP 客户端进程在 80 端口发起一个到服务器 www.someSchool.edu 的 TCP 连接(80 端口是 HTTP 的默认端口) 。 在客户和服务器进程中都会有一个套接字与其相连 。
- HTTP 客户端通过它的套接字向服务器发送一个 HTTP 请求报文 。 该报文中包含了路径 someDepartment/home.index 的资源,我们后面会详细讨论 HTTP 请求报文 。
- HTTP 服务器通过它的套接字接受该报文,进行请求的解析工作,并从其存储器(RAM 或磁盘)中检索出对象 www.someSchool.edu/someDepartment/home.index,然后把检索出来的对象进行封装,封装到 HTTP 响应报文中,并通过套接字向客户进行发送 。
- HTTP 服务器随即通知 TCP 断开 TCP 连接,实际上是需要等到客户接受完响应报文后才会断开 TCP 连接 。
- HTTP 客户端接受完响应报文后,TCP 连接会关闭 。 HTTP 客户端从响应中提取出报文中是一个 HTML 响应文件,并检查该 HTML 文件,然后循环检查报文中其他内部对象 。
- 检查完成后,HTTP 客户端会把对应的资源通过显示器呈现给用户 。
HTTP 请求特征从上面整个过程中我们可以总结出 HTTP 进行分组传输是具有以下特征
- 支持客户-服务器模式
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径 。 请求方法常用的有 GET、HEAD、POST 。 每种方法规定了客户与服务器联系的类型不同 。 由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快 。
- 灵活:HTTP 允许传输任意类型的数据对象 。 正在传输的类型由 Content-Type 加以标记 。
- 无连接:无连接的含义是限制每次连接只处理一个请求 。 服务器处理完客户的请求,并收到客户的应答后,即断开连接 。 采用这种方式可以节省传输时间 。
- 无状态:HTTP 协议是无状态协议 。 无状态是指协议对于事务处理没有记忆能力 。 缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大 。 另一方面,在服务器不需要先前信息时它的应答就较快 。
HTTP 协议主要由三大部分组成:
- 起始行(start line):描述请求或响应的基本信息;
- 头部字段(header):使用 key-value 形式更详细地说明报文;
- 消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据 。
文章插图
我们使用上面的那个例子来看一下 http 的请求报文
如图,这是 http://www.someSchool.edu/someDepartment/home.index 请求的请求头,通过观察这个 HTTP 报文我们就能够学到很多东西,首先,我们看到报文是用普通 ASCII 文本书写的,这样保证人能够可以看懂 。 然后,我们可以看到每一行和下一行之间都会有换行,而且最后一行(请求头部后)再加上一个回车换行符 。
每个报文的起始行都是由三个字段组成:方法、URL 字段和 HTTP 版本字段 。
HTTP 请求方法HTTP 请求方法一般分为 8 种,它们分别是
- GET 获取资源,GET 方法用来请求访问已被 URI 识别的资源 。 指定的资源经服务器端解析后返回响应内容 。 也就是说,如果请求的资源是文本,那就保持原样返回;
推荐阅读
- 香肠派对万圣节有什么武器皮肤-万圣节全新武器皮肤一览让您无可匹敌
- 这些都是发财手相图,看看你有没有
- 这么好的赌运手相看看你有没有
- 和平精英双弹夹bug怎么卡?和平精英卡双弹夹bug图文教程让您百战百胜
- 怎么让一个女生喜欢上你
- 如何让女人对自己死心塌地
- DNF手游鬼剑士体验视频 鬼剑士技能高度还原让您技能天下无双
- 怎么样让皮肤变白(皮肤暗淡怎么变白)
- dnf手游鬼泣加点 dnf手游鬼泣最佳加点方案让您无可匹敌
- 几种富贵命面相你有吗