IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP超文本传输协议——简单认识 -> 正文阅读

[网络协议]HTTP超文本传输协议——简单认识

HTTP协议

概述

在网络上的不同计算机之间必须使用相同的网络协议才能进行通信,HTTP(超文本传输协议)协议就是用于规范客户端浏览器和服务器以什么样的格式进行通信数据交互的,是属于应用层的面向对象的协议,适用于分布式超媒体信息系统。

HTTP协议由请求和响应构成,是一个标准的客户端服务器模型,也是一个无状态的协议。

主要特点:

  1. 支持客户/服务器模式
  2. 简单快速灵活:客户向服务器请求服务时,只需要传送请求方法和路径。请求方法常有get、post。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。HTTP允许传输任意类型的数据对象,正在传输的类型由Content—Type加以标记。
  3. 无连接:限制每次连接只处理一个请求,服务器处理完客户请求并且收到客户应答,即断开连接。可节省传输时间。
  4. 无状态:指协议对于事务处理没有记忆能力,意味着入伙后续处理需要前面的信息,则它必须重传,可能导致每次传送的数据量增大。

请求响应流程

浏览器向服务器发送 URL 地址,一个 URL 由几个不同的部分组成,每个部分都会为Web服务器如何处理来自客户端的 HTTP 请求提供一块基本的信息。

一个 URL (统一资源定位器)基本的结构:

http://www.njupt.edu.cn:80/默认首页

http:代表服务方式或协议,常见的如pop3、FTP等;

//:后面的通常是主机地址和端口号的组合,主机地址可以是域名,如“www.nujpt.edu.cn”,也可以直接是主机的 IP 地址,端口号没有指定,则默认是80;

/:后面的字符串表示资源的具体地址,在实际开发中常常加密,或者不显示。

  • 注意:如果 URL 中使用的是域名,而客户端向服务器端通信必须获取服务端的 IP 地址,这时在客户端与服务器之间就需要一个代理服务器DNS(域名服务器),进行域名和与之相应的 IP 地址转换。

在Web开发中请求操作通常叫做request,相应操作通常叫做response。

客户端和服务器在发送请求和做出响应时都是从Socket对象中获取对方的 IP 地址和端口号,Socket中的信息以报文形式进行发送。

HTTP协议中的信息格式以报文(有一定格式的字符串,这里的格式需要遵循HTTP协议规范)的形式呈现。

HTTP请求报文和响应报文

  • 请求报文:由4部分组成–请求行(request line)、请求消息头(headers)、空行(blank line)、请求体(request body)

    8C88890C25656BF8237AC4D3AE0FBC09.png

    1. 请求行:位于请求消息第一行,包括3各部分–请求方式、资源路径、所使用的HTTP协议版本

      请求方式:HTTP协议中主要是 GET 和 POST

      GET:当用户在浏览器地址栏中直接输入某个URL地址或单击网页上的一个超链接时,浏览器默认使用 GET 方式发送请求。

      POST:若网页上的form表单的method属性设置为“post”,那么就会以 POST 方式发送请求。

      注意:由于GET请求方式的参数信息都会在URL地址栏里明文显示,而POST请求方式传递的参数隐藏在实体内容中,用户不可见,较于GET方式更为安全。因此在实际开发中,大多使用POST。

    2. 请求消息头:由关键字/值对组成,每行一对。作用是通知服务器有关于客户端请求的信息。

    3. 空行:在最后一个请求头之后,发送回车符和换行符,通知服务器一下不再有请求头。

    4. 请求体:其内容就是请求数据,请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。

  • 响应报文:由4部分组成–状态行(status line)、相应消息头(Headers)、空行(blank line)、响应体(response body)

    IMG_0285_20220213-143830_.PNG

HTTP协议相关技术补充

高层协议:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP

中介:代理(Proxy)、网关(Gateway)、通道(Tunnel)

  1. 代理:一个中间程序,可以充当服务器,也可以充当客户机,为其他客户机建立请求。一个代理根据 URI 的绝对格式来接受请求,重写部分或全部信息,通过 URI 的标识把已格式化的请求发送到服务器。
  2. 网关:一个作为其他服务器中间媒介的服务器。
  3. 通道:作为两个连接中继的中介程序,一旦激活便被认为不属于HTTP通信。当被中继的连接两端关闭时,通道便消失。

HttpServletResponse和HttpServletRequest

这两个是Java专门处理Http请求的类,HttpServletResponse代表对象服务器的响应,HttpServletRequest代表客户端的请求。

  • Response常见应用:

    1. 实现请求重定向:一个Web资源收到客户端请求后,通知客户端去访问另一个Web资源
    2. 实现方式:response.sendRedirect()
  • Request常见方法:

    1. 获取客户端信息:

      方法名作用
      getRequestURL返回请求的完整URL
      getRequestURI返回请求的资源名部分
      getQueryString返回请求的参数部分
      getPathInfo返回URL中的额外路径信息(位于Servlet路径之后和查询参数之前的内容,以/开头)
      getRemoteAddr返回客户机使用的IP
      getRemoteHost返回客户机使用的主机名
      getRemotePort返回客户机使用的网络端口号
      getLocalAddr返回web服务器的IP
      getLocalName返回web服务器的主机名
    2. 获取客户端请求参数(客户端提交的数据)

      方法名作用
      getParameter(String name)获取前端表单单个元素name对应的value值
      getParameterValues(String name)获取前端表单多个标签同名name对应的所有value值
      getParameterNames(String name)获取前端表单所有标签元素name的对应的所有value值
      getParameterMap返回Map型的值

请求转发和重定向

  • 请求转发:服务器将未处理完的请求直接交给后端另一块模块处理,整个请求被处理完之后才返回结果给客户端。

    使用:request.getRequestDispatcher().forward();

  • 重定向:服务器告诉客户端(给了客户端一个session id)再去请求另一个页面/资源。

    使用:response.sendRedirect()

仅供参考,如有错误,感谢指正!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:34:12  更:2022-02-14 21:35:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 11:22:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码