• 浅谈 HTTP 协议


    一、 HTTP简介

    1. 超文本传输协议 Hyper Text Transfer Protocol
    2. 是一种用于分布式、协作式和超媒体信息系统的应用层协议
    3. HTTP是万维网的数据通信的基础
    4. HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信

    二、 HTTP 请求/响应的步骤

    1. 客户端连接到Web服务器
      • 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接
    2. 发送HTTP请求
      • 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成
    3. 服务器接受请求并返回HTTP响应
      • Web服务器解析请求,定位请求资源,服务器将资源复本写到TCP套接字,由客户端读取,一个响应由状态行、响应头部、空行和响应数据4部分组成
    4. 释放连接TCP连接
      • 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求
    5. 客户端浏览器解析HTML内容
      • 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码,然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集,客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示
    6. 面试题:在浏览器地址栏键入URL,按下回车之后会经历的流程:
      • 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
      • 解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接
      • 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
      • 服务器对浏览器请求作出响应,并把对应的html文本发送给浏览器
      • 释放TCP连接
      • 浏览器将该html文本并显示内容

    三、 HTTP请求方法

    1. GET:获取一个页面、图片(资源)
    2. POST:提交数据
    3. HEAD
    4. PUT
    5. DELETE
    6. TRACE
    7. OPTIONS
    8. CONNECT

    四、 HTTP状态码

    1. 状态代码的第一个数字代表当前响应的类型:
      • 1xx消息——请求已被服务器接收,继续处理
      • 2xx成功——请求已成功被服务器接收、理解、并接受
      • 3xx重定向——需要后续操作才能完成这一请求
      • 4xx请求错误——请求含有词法错误或者无法被执行
      • 5xx服务器错误——服务器在处理某个正确请求时发生错误
    2. 常见的:"200 OK","404 Not Found"

    五、 URL:统一资源定位符

    1. URL包含的信息:
      • 传送协议
      • 层级URL标记符号(为 // ,固定不变)
      • 访问资源需要的凭证信息(可省略)
      • 服务器(通常为域名,有时为IP地址)
      • 端口号(以数字方式表示,可省略,HTTP的默认值为80,HTTPS的默认值为443)
      • 路径(以 / 字符区别路径中的每一个目录名称)
      • 查询(GET模式的窗体参数,以 ? 字符为起点,每个参数以 & 隔开,再以 = 分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
      • 片段(以“#”字符为起点)
    2. 示例:http://www.luffycity.com:80/news/index.html?id=250&page=1
      • http,是传送协议
      • www.luffycity.com,是服务器
      • 80,是服务器上的网络端口号
      • /news/index.html,是路径
      • ?id=250&page=1,是查询

    六、 HTTP请求格式

    1. 请求(request)

      • 浏览器:服务器
      • GET 请求没有请求数据
    2. 格式:

      请求方式 url路径 协议版本
      
      k1:v1
      
      k2:v2
      
      
      
      数据
      

    七、 HTTP响应格式

    1. 响应(response)

      • 服务器:浏览器
    2. 格式:

      协议版本 状态码 状态码描述
      
      k1:v1
      
      k2:v2
      
      
      
      响应数据(响应体)
      
  • 相关阅读:
    Drupal Coder 模块远程命令执行分析(SA-CONTRIB-2016-039)
    Python 实现 ZoomEye API SDK
    程序员互动联盟第一届编码大赛第二题解题分享
    python中各进制之间的转换
    记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)
    使用JsonConfig控制JSON lib序列化
    openMRS项目
    Harmonic Number(调和级数+欧拉常数)
    Pairs Forming LCM(素因子分解)
    Uva 11395 Sigma Function (因子和)
  • 原文地址:https://www.cnblogs.com/zengyi1995/p/11060249.html
Copyright © 2020-2023  润新知