博客
关于我
Java基础 HTTP协议
阅读量:665 次
发布时间:2019-03-16

本文共 1692 字,大约阅读时间需要 5 分钟。

HTTP是一个应用层的面向对象协议,因其简洁高效,成为分布式超媒体系统的基础。自1990年提出以来,HTTP通过不断演变发展,目前广泛应用于WWW中,主要使用HTTP/1.0和HTTP/1.1版本,同时HTTP-NG等新一代方案正在研发中。

HTTP协议主要特点

  • 客户/服务器模式:HTTP遵循典型的客户/服务器模式,各个请求由客户端发起,而服务器负责响应和处理请求。

  • 简单快速:HTTP请求仅需包含方法、URI和版本,通信效率高,服务器处理成本低。常用方法包括GET、HEAD、POST等,分别服务于不同的资源操作需求。

  • 灵活性:允许传输多种数据格式,通过Content-Type标识具体类型,便于服务器处理不同种类的数据。

  • 无连接:每次连接仅处理单个请求,完成后即断开,节省资源。

  • 无状态:HTTP无记忆性,无法追踪会话,可能导致多次请求间数据重传,但提高了服务器响应的快速性。


  • URL格式

    HTTP URL格式为:

    http://host[:port][abs_path]
    • http指协议类型,指定使用HTTP协议访问资源。
    • host是目标主机名或IP地址。
    • port为端口号,可省略,默认使用80。
    • abs_path为资源路径,可默认为/

    示例

    • www.guet.edu.cn自动转换为http://www.guet.edu.cn/
    • 192.168.0.116:8080/index.jsp明确指定了主机、端口和路径。

    请求结构

    HTTP请求由三个部分组成:请求行、消息报头、请求正文。

  • 请求行:格式为Method Request-URI HTTP-Version CRLF

    • Method为请求方法,如GET、POST、DELETE等。
    • Request-URI为标识请求资源的URI。
    • HTTP-Version为协议版本推荐使用HTTP/1.1。
  • 消息报头

    • 通常包括Connection、Accept、User-Agent等标识客户端信息。
    • 消息报头用于传递服务器处理的附加信息。
  • 请求正文:仅在使用POST、PUT等方法时附加数据。


  • 响应结构

    HTTP响应由三部分组成:状态行、消息报头、响应正文。

  • 状态行:格式为HTTP-Version Status-Code Reason-Phrase CRLF

    • Status-Code为三位数字状态码。
    • Reason-Phrase为状态码描述。
    • 常见状态码包括200 OK(成功)、404 Not Found(资源不存在)、500 Internal Server Error(服务器错误)等。
  • 消息报头:同请求报头,用于传递服务器处理相关信息。

  • 响应正文:服务器返回的资源内容。


  • 消息报头

    HTTP消息报头分为普通报头、请求报头、响应报头和实体报头。

  • 普通报头:用于传递跨消息的信息,例如Cache-Control、Date、Connection等。
  • 请求报头:允许客户端传递请求相关信息,如Accept、Host、User-Agent。
  • 响应报头:用于重定向和传递服务器信息,如Location、Server、WWW-Authenticate。
  • 实体报头:描述实体元信息,包括Content-Type、Content-Length、Content-Encoding等。

  • 实验:通过telnet观察HTTP协议

  • 实验目的:通过手动发送HTTP请求,观察服务器的响应。

  • 实验步骤

    • 打开telnet并启用回显功能。
    • 连接目标服务器并发送HTTP请求。
    • 浏览器发送的信息包括请求行、消息报头、请求正文。
    • 服务器返回状态行、消息报头和响应正文。
  • 实验结果

    • 成功请求返回200 OK状态。
    • 未找到的资源返回404 Not Found。
    • 实验展示了HTTP协议的分层结构及其工作流程。
  • 注意事项

    • 输入错误导致请求失败。
    • 报头域大小写无关。
    • 深入理解HTTP协议可参考RFC文档。

  • HTTP协议作为核心网页传输协议,其设计理念和实际应用在网络架构中发挥重要作用。理解HTTP协议有助于优化应用开发,提升网络性能,确保资源高效传输。

    转载地址:http://rwiqz.baihongyu.com/

    你可能感兴趣的文章
    10-3 A1-4在产品表中找出库存数量大于50的产品的信息 (20 分)
    查看>>
    Ajax学习笔记-错误的处理-7
    查看>>
    SparkStreaming利用队列生成测试数据源
    查看>>
    js——BOM操作知多少?
    查看>>
    划分子网与NAT的区别。。。
    查看>>
    钻石操作符使用升级
    查看>>
    设置方法区大小与OOM
    查看>>
    Laravel 直接返回404页面
    查看>>
    记一次内部系统渗透测试:小漏洞组合拳
    查看>>
    常用元素操作的方法
    查看>>
    命名实体识别数据预处理
    查看>>
    解决 matplotlib 中文显示乱码的问题
    查看>>
    解决打开 json 文件中文乱码的问题
    查看>>
    计算机网络基础:DHCP服务的部署
    查看>>
    计算机网络基础:NAT 网络地址转换
    查看>>
    计算机网络基础:PKI(公钥基础设施)
    查看>>
    计算机网络基础:VLAN(虚拟局域网)
    查看>>
    计算机网络基础:文件共享服务器(注册表更改)
    查看>>
    计算机网络基础:用户和组管理
    查看>>
    计算机网络基础:简单渗透
    查看>>