本文主要说明一些 Http 相关的基本概念和基本知识,主要针对像我一样的初学者,知识主要来自于《Http 权威指南》
除了分享这些基本知识之外,笔者也是为将来找工作复习之用。(协议就是协议,它就在那里)
问题
Web 客户端与服务器是如何通信的?
资源来自哪里?
Web 事务是怎样工作的?
Http 通信所使用的报文格式是怎样的?
底层TCP 网络传输是怎样的?
目录
Http - 因特网的多媒体信使
Web 客户端和服务器
资源
事务
报文
连接
Web 的结构组件
正文
Http - 因特网的多媒体信使
什么是http协议?它是干什么的?
协议就是一群人或者一大群人(组织)商量的一种彼此都认可的交换信息的约定。
http协议是一种应用层协议,它使用的是可靠的数据传输协议。使得应用程序开发人员专注于应用程序特有的技术细节。
Web 客户端和服务器
客户端发送Http 请求,服务器在Http 响应中回送所请求的数据。(Http 客户端和Http 服务器构成了万维网的基本组件)
资源
Web 服务器是Web 资源的宿主。
资源分为静态资源(文件,图片,动画,电影等媒体资源)和动态资源(根据需要动态生成内容的软件程序)
事务
一个Http 事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发往客户端的)响应结果组成。
这种通信通过Http 报文的格式化数据块进行的。
http 请求通过http 方法告诉服务器要执行什么操作(获取一个页面,一个网关程序,删除一个文件等)
http 响应通过http 状态码告诉客户端请求是否成功,或者是否需要采取其他动作。
报文
Http 报文是由一行一行的简单字符串组成的。
报文包括三部分组成:起始行,首部,主体
请求报文的格式:
<method> <request-URL> <version> <headers> //一行空行 <entity-body>
响应报文的格式:
<version> <status> <reason-phase> <headers> //一行空行 <entity-body>
连接
Http 只是应用层协议,底层交给了通用、可靠的因特网传输协议TCP/IP。
在Http 客户端向服务器发送报文之前,需要用IP地址和端口号在客户端和服务器之间建立一条TCP/IP连接。
Web 的结构组件
代理
位于客户端和服务器之间的Http 中间实体。
是Web 安全、应用集成以及性能优化的重要组成模块。
缓存
一种特殊的Http 代理服务器,使常用页面的副本可以保存在离客户端更近的地方。
网关
是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将Http 流量转换成其他协议。
网关接收请求时好像自己是资源的源端服务器一样。
隧道
隧道是建立起来之后,就会在两条链接之间对原始数据进行盲转发的Http 应用程序。
常见用途是通过Http 连接承载加密的安全套接字层流量。