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往往是基于传输层的TCP协议实现的(HTTP1.0,HTTP1.1,HTTP2.0均为TCP,HTTP基于UDP实现)

HTTP要解决的问题?
请求要传输哪些信息,按照什么样的格式传输。
响应要包含哪些信息,按照什么样的格式传输。

HTTP协议的详细格式与信息
【抓包工具的使用可以参考本人的另一篇博客:https://blog.csdn.net/qq_39537400/article/details/121626993?spm=1001.2014.3001.5501】

  • 通过Fiddler抓包获取的获取的浏览器请求搜狗服务器的信息。
    在这里插入图片描述
    HTTP请求协议是一个文本。

  • 首行:HTTP方法 请求的URL HTTP版本号
    在这里插入图片描述

  • 首部(请求头)header
    header就是一堆键值对,键值对和键值对之间,使用换行来分割,键和值之间,使用冒号+空格来分割。
    header中具体有多少行是不固定的,具体是使用一个空行来作为结束标记

  • 空行
    通过这个空行来表示header部分结束了。
    在这里插入图片描述

  • 正文body
    有的请求有正文,有的请求没有正文。

  • HTTP响应的格式
    在这里插入图片描述

  • 首行
    HTTP协议版本号 状态码 状态码描述

  • 协议头(header)

  • 空行

  • 正文
    在这里插入图片描述
    HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”

对URL的详细分析

  • 地址,域名:例如www.baidu.com
    本质上是一个IP地址,写成域名是为了方便记忆。地址后面还可以带一个冒号,冒号后面可以写一个端口号,表示要访问服务器的端口,不写就代表使用默认的端口号,对于HTTP协议来说,默认的端口号是80,对于HTTPS来说,默认的端口号是443.

  • URL中的路径
    在这里插入图片描述
    同一个网址中的路径不同,代表要访问服务器上不同的资源。

  • URL中的参数
    在这里插入图片描述
    键值对之间通过&来分割,键和值之间使用=来分割。使用?来作为起始标志。

  • URL中的片段标识符 #
    使用较少,通常用于定位一个HTML页面的具体位置。

URL的目的就是来区分一个网络上唯一资源

  • 先通过服务器地址,定位到一个具体的服务器
  • 再通过端口号定位到一个具体的应用程序
  • 在通过路径定位到这个应用程序管理的一个具体资源
  • 在通过查询字符串对这个具体资源的要求作出进一步的解释
  • 最后通过片段标识来确定定位到这个资源的哪个部分

URL encode与decode

为了解决在query string中如果包含了 “: / ? = &”等特殊符号,导致浏览器/服务器解析URL时出错的问题。引入了URL encode与decode
URL encode:把特殊字符,转成转义字符
URL decode:把转义字符,还原成原来的字符
转义就是把特殊字符里面的值,按照十六进制来表示,每个字节在前面放一个%
在这里插入图片描述
虽然浏览器会自动对特殊符号进行encode,但是有时候自己手动构造的URL,不一定能自动encode。稳妥起见,如果需要自己构造URL时,带有特殊符号的时候,要手动encode,否则可能导致请求失败。
在这里插入图片描述
在这里插入图片描述
请求中的方法

在这里插入图片描述
HTTP协议中GET和POST两个方法有什么区别?
两者没有本质区别,但还是有区别。

哪些方式会触发HTTP请求

  1. 直接在浏览器中输入URL,就会触发一个HTTP请求。
  2. HTML页面中的一些特殊标签,link(引入CSS),img(图片),scrip(引入JS)【加载触发】,a(超链接)【点击触发】也会触发HTTP的GET请求。
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 18:03:38  更:2021-12-01 18:05:10 
 
开发: 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年7日历 -2024/7/6 8:06:03-

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