HTTP协议详解 |
您所在的位置:网站首页 › dns请求报文和响应报文一样吗 › HTTP协议详解 |
一、什么是HTTP协议
HTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。 HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。 二、HTTPS协议HTTPS 协议(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是 HTTP 的安全版, 在 HTTP 下加入 SSL 层。 SSL(Secure Sockets Layer 安全套接层)主要用于 Web 的安全传输协议, 在传输层对网络连接进行加密, 保障在 Internet 上数据传输的安全。 HTTP 的端口号为 80 HTTPS 的端口号为 443 三、HTTP工作原理浏览器的主要功能是向服务器发出请求, 在浏览器窗口中展示您选择的网络资源, HTTP 是一套计算机通过网络进行通信的规则。 HTTP 的请求与响应 HTTP 通信由两部分组成: 客户端请求消息 与 服务器响应消息 浏览器发送 HTTP 请求的过程: 当用户在浏览器的地址栏中输入一个 URL 并按回车键之后, 浏览器会向 HTTP 服务器发送 HTTP 请求。 HTTP 请求主要分为“Get”和“Post”两种方法。 当我们在浏览器输入URL http://www.baidu.com 的 时 候 , 浏 览 器 发 送 一 个 Request 请 求 去 获 取 http://www.baidu.com 的 html 文件, 服务器把 Response 文件对象发送回给浏览器。 浏览器分析 Response 中的 HTML, 发现其中引用了很多其他文件, 比如 Images 文件,CSS 文件, JS 文件。 浏览器会自动再次发送 Request 去获取图片, CSS 文件, 或者 JS 文件。 当所有的文件都下载成功后, 网页会根据 HTML 语法结构, 完整的显示出来了。 URLURL(Uniform / Universal Resource Locator) 统一资源定位符, 是用于完整地描述 Internet 上网页和其他资源的地址的一种标识方法。 基本格式: scheme://host[:port#]/path/…/[?query-string][#anchor] scheme: 协议(例如: http, https, ftp) host: 服务器的 IP 地址或者域名 port: 服务器的端口(如果是走协议默认端口, 缺省端口 80) path: 访问资源的路径 query-string: 参数, 发送给 http 服务器的数据 anchor: 锚(跳转到网页的指定锚点位置) 例如: ftp://192.168.0.116:8080/index http://www.baidu.com http://item.jd.com/11936238.html#product-detail 客户端 HTTP 请求 URL 只是标识资源的位置, 而 HTTP 是用来提交和获取资源。 客户端发送一个 HTTP 请求到服务器的请求消息, 包括以下格式: 请求行、 请求头部、 空行、 请求数据 四个部分组成, 下图给出了请求报文的一般格式。 请求方法: GET https://www.baidu.com/ HTTP/1.1 根据 HTTP 标准, HTTP 请求可以使用多种请求方法。 HTTP 0.9: 只有基本的文本 GET 功能。 HTTP 1.0: 完善的请求/响应模型, 并将协议补充完整, 定义了三种请求方法: GET, POST 和 HEAD 方法。 HTTP1.1: 在 1.0 基础上进行更新, 新增了五种请求方法: OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 HTTP 2.0(未普及) : 请求/响应首部的定义基本没有改变, 只是所有首部键必须全部小写, 而且请求行要独立为 :method、 :scheme、 :host、 :path 这些键值对。 目前主要使用的HTTP 请求主要为 Get 和 Post 两种方法 GET 是从服务器上获取数据, POST 是向服务器传送数据 GET 请求参数显示, 都显示在浏览器网址上, HTTP 服务器根据该请求所包含 URL中 的 参 数 来 产 生 响 应 内 容 , 即 “Get” 请 求 的 参 数 是 URL 的 一 部 分 。 例 如: http://www.baidu.com/s?wd=Chinese POST 请求参数在请求体当中, 消息长度没有限制而且以隐式的方式进行发送, 通常用来向 HTTP 服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等) ,请求的参数包含在“Content-Type”消息头里, 指明该消息体的媒体类型和编码, 注意: 避免使用 Get 方式提交表单, 因为有可能会导致安全问题。 比如说在登陆表单中用 Get 方式, 用户输入的用户名和密码将在地址栏中暴露无遗。 常用的请求报头: Host (主机和端口号) Host: 对应网址 URL 中的 Web 名称和端口号, 用于指定被请求资源的 Internet 主机和端口号, 通常属于 URL 的一部分。 Connection (链接类型) Connection: 表示客户端与服务连接类型 Client 发起一个包含 Connection:keep-alive 的请求, HTTP/1.1 使用 keep-alive 为默认值。 Server 收到请求后: 如果 Server 支持 keep-alive(长连接), 回复一个包含 Connection:keep-alive 的响应, 不关闭连接;如果 Server 不支持 keep-alive, 回复一个包含 Connection:close 的响应, 关闭连接。如果 client 收到包含 Connection:keep-alive 的响应, 向同一个连接发送下一个请求, 直到一方主动关闭连接。 keep-alive 在很多情况下能够重用连接, 减少资源消耗, 缩短响应时间, 比如当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件), 不需要每次都去请求建立连接。 Upgrade-Insecure-Requests (升级为 HTTPS 请求) Upgrade-Insecure-Requests: 升级不安全的请求, 意思是会在加载 http 资源时自动替换成 https 请求, 让浏览器不再显示 https 页面中的 http 请求警报。 HTTPS 是以安全为目标的 HTTP 通道, 所以在 HTTPS 承载的页面上不允许出现 HTTP 请求, 一旦出现就是提示或报错。 User-Agent (浏览器名称) User-Agent: 是客户浏览器的详细信息,服务器是通过这条信息来判断来访的用户是否为真实用户。 Accept (传输文件类型) Accept: 指浏览器或其他客户端可以接受的 MIME(Multipurpose Internet Mail Extensions(多用途互联网邮件扩展)文件类型, 服务器可以根据它判断并返回适当的文件格式。 举例: Accept: /: 表示什么都可以接收。 Accept: image/gif: 表明客户端希望接受 GIF 图像格式的资源; Accept: text/html: 表明客户端希望接受 html 文本。 Accept: text/html, application/xhtml+xml;q=0.9, image/*;q=0.8: 表示浏览器支持的 MIME 类型分别是 html 文本、 xhtml 和 xml 文档、 所有的图像格式资源。 q 是权重系数, 范围 0 =< q |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |