热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【HTTP协议】简单的HTTP协议(2)

一:URI和URLURI(统一资源标识符)URI格式表示指定的uri,要使用绝对的URI,绝对的URL以

一:URI和URL


  • URI(统一资源标识符)

  1. URI格式

表示指定的uri,要使用绝对的URI,绝对的URL以及相对的URL。相对的URL,是指从浏览器基本URI处指定的URL。

绝对的URI格式:

 查询字符串:可以针对指定的路径传入参数。

片段标识符:使用片段标识符可以标记处已获取资源的子资源。

  • URL(统一资源定位符)

关系:URI用字符串标识某一个互联网资源,而URL表示资源的地点(互联网所处的位置)。可见URL是URI的子集。

二:HTTP协议用于客户端和服务器端

在网络中,请求文本或者图像资源的一端称为客户端,而提供资源响应的一端称为服务器端。

在两台电脑进行通信时,必定有一端是客户端,另一端是服务器端。就单条线路来说HTTP协议能够区分哪里是客户端服务器端。

三:通过请求和响应的交换达成通信

HTTP协议规定:由客户端发出请求响应,服务器端在没有接收到请求之前不会发送响应。

例子:

 先来看发送报文:

 GET表示请求访问服务器的类型称为方法,,随后的/index.html表示请求访问的资源对象(URI),最后的就是HTTP的版本。

HTTP协议中host的作用:

Host 是 HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术。

虚拟主机(virtual hosting)即共享主机(shared web hosting),可以利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。

举个栗子,有一台 ip 地址为 61.135.169.125 的服务器,在这台服务器上部署着谷歌、百度、淘宝的网站。为什么我们访问 https://www.google.com 时,看到的是 Google 的首页而不是百度或者淘宝的首页?原因就是 Host 请求头决定着访问哪个虚拟主机。
请求报文由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。

再来看请求报文的构成

在起始是版本的HTTP/1.1表示版本。

紧接着200 OK表示请求处理结果的状态码和原因短语。

响应报文基本上由协议版本,状态码,用以解释状态码的原因短语,可选的响应首部字段以及实体主体构成。

四:HTTP是不保存状态的协议

 HTTP是一种不保存的状态,即无状态协议。HTTP协议自身不对请求或响应之间的通信状态进行保存。

HTTP/1.1虽然是无状态协议,但是为了实现期望的保存状态功能,于是引入了COOKIE技术。有了COOKIE再用HTTP进行通信,就可以管理状态了。 

五:请求URI定位资源

HTTP协议使用URI定位互联网上的资源。正是因为URI的特定功能,使得在互联网上的任意位置的资源都能访问到。

请求的例子:

除此之外,如果不是访问特定资源而是对服务器本身发起请求,可以用一个*代替请求URI。

 

六:使用方法下达命令


 

例子说明:

GET:获取资源

 

POST:传输实体主体

PUT:传输文件

 

 HEAD:获取报文首部

DELETE:删除文件

 

OPTIONS:询问支持的方法

TRACE:追踪路径

Trace方法是让Web服务器将之前的请求通信环回给客户端的方法。

发送请求时,在Max-Forwards首部填入数值,没经过一个服务器就将该数字减1.当数字减为0时,就停止继续传输。

客户端通过TRACE方法可以查询发送出去的请求是怎样被加工修改的。

 

CONNECT:要求用隧道协议连接处理

CONNECT主要进行代理服务器通信时建立隧道,实现 用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接字)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道进行传输。

七:持久连接节省通信量

HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

 在现在这个网络中,HTML文档中不仅包含文本,还包含多张图片。

 这样就需要多次进行TCP连接和断开连接,需要消耗大量CPU。

所以需要进行持久化连接,持久连接的特点是:只要任意一端没有明确提出断开连接,则保持TCP连接。

 

 八:管线化

持久连接使得多次请求以管线化方式成为可能。管线化使得各次请求之间不需要等待。

 九:使用COOKIE的状态管理

COOKIE会根据从服务器端发送的响应报文内的一个叫Set-COOKIE的首部字段信息,通知客户端保存COOKIE。当下次客户端再往服务器端发送请求时,客户端会自动在请求报文中加入COOKIE值后发送回去。

 

 报文中的信息:


推荐阅读
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
会程序的猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有