目录

1.HTTP是什么

2.理解HTTP协议的工作过程

3.HTTP协议格式

4.协议格式总结

其中请求分为4个部分

4.2 其中响应分为4个部分

5.HTTP请求(Request)

5.1认识 URL

5.2 关于 URL encode/decode


1.HTTP是什么

HTTP(全文简称“超文本传输协议”)是一种应用非常广泛地应用层协议,处于TCP/IP五层协议栈的应用层。

HTTP在传输层是基于TCP的。其中HTTP/1 、HTTP/2 是基于TCP. 最新版本的HTTP/3 是基于UDP,但如今互联网上大部分使用的HTTP都是 HTP/1.1

传输层协议,主要关注的是 端对端 之间的数据传输。TCP重点关注的是可靠传输。

应用层协议,则是站在程序应用的角度,要对传输的数据来进行具体使用。

应用层协议很多时候都是程序员自定制的,根据实际的需求场景来设计协议,于是就有了一个典型的代表——HTTP协议。HTTP虽然是设计好的,但自身的可扩展性非常强,可以根据实际需要,让程序员传输各种自定义的数据信息。

在我们打开浏览器中的随便一个网站时,就是通过HTTP协议来传输数据的。

2.理解HTTP协议的工作过程

当我们在浏览器中输入一个百度搜索的 " 网址 " (URL) 时 , 浏览器就给百度的服务器发送了一个 HTTP 请求, 百度 的服务器返回了一个 HTTP 响应 .
这个响应结果被浏览器解析之后 , 就展示成我们看到的页面内容 . ( 这个过程中浏览器可能会给服务器发送多个 HTTP 请求 , 服务器会对应返回多个响应 , 这些响应里就包含了页面 HTML, CSS, JavaScript, 图片 , 字体等信息).

当我们在浏览器中输入一个 "网址", 此时浏览器就会给对应的服务器发送一个HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个HTTP 响应.

事实上 , 当我们访问一个网站的时候 , 可能涉及不止一次的 HTTP 请求 / 响应的交互过程 .
可以通过 chrome 的开发者工具观察到这个详细的过程 .
通过 F12 打开 chrome 的开发者工具 , 切换到 Network 标签页 . 然后刷新页面即可看到如下图效
果 . 每一条记录都是一次 HTTP 请求 / 响应
注意 : 当前搜狗主页是通过 https 来进行通信的。  https 是在 http 基础之上做了一个加密解密的工作。

3.HTTP协议格式

其中UDP:报头(源端口,目的端口,长度,校验和)+载荷

UDP/TCP/IP 这些协议都是属于“二进制”的协议,经常要理解到二进制的bit位

HTTP则是一个文本格式的协议(不需要理解具体的二进制位,而只是理解文本的格式即可)。我们可以借助“抓包工具”来获取到具体的HTTP交互过程中的请求和响应。

“抓包工具”其实就是一个第三方的程序,在网络通信的过程中,类似于“代理”一样。如下图所示

抓包工具可使用 Fiddler 

当我们点击左侧列表中每个条目并双击时,右侧就会显示条目的详细信息。

点击Fiddler 请求中的Raw 、View in Notepead 就可以看到本体

看到的本体是乱码的,因为这是经过压缩之后的,目的是提高服务器的效率

可以点击下面按钮将乱码恢复成文本格式

恢复正常

4.协议格式总结

其中请求分为4个部分

1.请求行(首行),包括是三个部分

a)HTTP 的方法,方法大概描述了请求想做什么,GET意思就是想从服务器获取到某个东西

b)URL,描述了要访问的网络上的资源具体在哪里

c)版本号,HTTP/1.1表示当前使用的HTTP的版本是1.1  1.1是当前最流行的版本,还可能是1.0/2/3

2.请求头(head)包含了很多行

每一行都是一个键值对,键和值之间使用 空格 来分割,这里的键值对个数是不固定的,有可能多,有可能少,不同键和值表示不同的含义。

3.空行

相当于请求头的结束标志,类似于链表的 null

4.请求正文(body) 

可以选的,不一定有。

4.2 其中响应分为4个部分

1.首行:包含了三部分

a) 版本号~HTTP/1.1

b) 200 状态码,描述了这个响应,是是一个表示“成功的” 还是 “失败的”,以及不同的状态码,描述了失败的原因

c)OK 状态码的描述,通过一个/一组简单的单词,来描述当前的状态码的含义

2.响应头(header)

响应头是键值对结构,每个键值对占一行,每个键和值之间使用:空格 来分割。响应头中的键值对个数,也是不确定的,不同的键值对表示不同的含义。

3.空行

表示响应头的结束标志

4.响应正文(body)

服务器返回给客户端的具体数据。其中的数据可能有各种不同的格式,其中最常见的格式-html.

5.HTTP请求(Request

5.1认识 URL

URL 含义就是“网络上唯一资源的地址符”,既要明确主机是谁,又要明确取主机上的那个资源。

通过浏览器,打开网页的时候,地址栏里面的“网址”其实就是URL,如下如所示

URL基本模板

1.协议方案名:描述了当前这个URL 是给哪个协议来使用的。

http:// 给HTTP用的。 https:// 给HTTPS用的

jdbc:mysql:// 给jdbc:mysql 使用的

2.登录信息认证:这个部分现在很少使用,这里是显示用户密码的

3.服务器地址:当前要访问的主机是哪个,这里可以是一个IP地址,也可以是域名

4.服务器端口号:表示当前要访问的主机上的哪个应用程序。端口号大部分情况下是省略的,省略的时候,不是说没有,而是浏览器会自动赋予一个默认值,对于http开头的URL,就会使用 80 端口作为默认值,对于https开头的URL ,就会使用443端口作为默认值

5.文件路径:描述了当前要访问的服务器资源是什么。(虽然请求的URL中,写的是一个文件路径,但不一定服务器上就真实存在,这个文件可能是一个在磁盘上的文件,也能是虚拟的,由服务器代码,构造出一个动态数据)

6.查询字符:本质上是浏览器/客户端 给服务器传递的自定义信息,相当于对获取到的资源提出了进一步的要求。

查询字符串的内容,本质上也是键值对结构,完全由程序员自己定义。查询字符串和路径之间使用 ? 来分割

7.片段标识符:描述了要访问当前html 页面中哪个具体的子部分,能够控制浏览器滚动到相关的位置

对于URL来说,里面的结构看起来比较复杂,其实最重要的和开发最关系紧密的主要就是四个部分

1.Ip 地址

2.端口号

3.带层次结构的路径

4.query String 查询字符串

5.2 关于 URL encode/decode

当query string中如果包含了特殊字符,就需要对特殊字符进行转义~~
这个转义的过程,就叫做url encode.反之,把转义后的内容还原回来,就叫做url decode
url里面是有很多特殊含义的符号的.

像 / ? :  &等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义.

一个中文字符由 UTF-8 或者 GBK 这样的编码方式构成 , 虽然在 URL 中没有特殊含义 , 但是仍然需
要进行转义 . 否则浏览器可能把 UTF-8/GBK 编码中的某个字节当做 URL 中的特殊符号 .
转义的规则如下 : 将需要转码的字符转为 16 进制,然后从右到左,取 4 位 ( 不足 4 位直接处理 ) ,每 2 位做一位,前面加上% ,编码成 %XY 格式

例如 "+" 被转义成了 "%2B"

字符+,的asci的16进制表示,正是2B (B就是十六进制符号,相当于十进制的11)

【HTTP】协议格式、请求相关推荐

  1. HTTP(http+抓包Fiddler+协议格式+请求+响应)

    目录

  2. Linux网络:HTTP协议 | URL | 协议格式 | HTTP方法 | HTTP状态码 | Cookie与Session

    文章目录 网络计算器 服务端 客户端 HTTP协议 认识URL 协议方案名 登录信息 服务器地址.端口号 带有层次的文件路径 查询字符串 片段标识符 urlencode和urldecode HTTP协 ...

  3. http服务器响应格式,熟悉Http协议的请求和响应格式,编写一个简单的Http服务器。 基本要求:1 正确解...

    熟悉Http协议的请求和响应格式,编写一个简单的Http服务器. 基本要求: 1 正确解 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 熟悉Http协议的请求和响应格 ...

  4. HTTP协议格式(请求格式、响应格式)

    超文本传输协议 (Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接 ...

  5. HTTP协议的请求格式解析

    HTTP协议是一个使用较多的应用层协议,它是一个请求/响应式的一个协议,就是我客户端给你发一个请求,你客户端需要返回给我一样响应.首先我们来看一下HTTP协议的请求格式. HTTP请求格式: HTTP ...

  6. pyqt designer connect无响应_【JavaWeb】HTTP协议的请求与响应

    HTTP协议 超文本传输协议 Hyper Text Transfer Protocol HTTP的作用 规范浏览器与服务器的数据交换的格式思考:没有HTTP协议会怎样?没有 HTTP 协议也可以,但是 ...

  7. php中post提交参数_PHP中Http协议post请求参数

    这篇文章主要介绍了Http协议post请求参数的相关资料,需要的朋友可以参考下 本文给大家介绍PHP中Http协议post请求参数,具体内容如下所示: WEB开发中信息基本全是在POST与GET请求与 ...

  8. php上传报文,PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性...

    关系数组 array("key"=>"value",...) ; get没有数据大小的限制 post上传大小没有限制 不指定上传方式,默认是get 文件上 ...

  9. [转]HTTP协议及其请求头分析

    众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP.Archie Gopher等是建立在TCP/IP协议之上的应用层协议,不同的协议对应着不同的应用.    WWW 服务器使 ...

最新文章

  1. cocos2dx 学习代码记录
  2. 管道符、shell变量、环境变量配置文件
  3. 日常生活 -- 开博二周年
  4. python之递归函数和内建函数
  5. java外挂源码_2.7 万 Star!Github 项目源码辅助阅读神器
  6. 消融实验——Ablation experiment
  7. [BZOJ1036][ZJOI2008]树的统计Count(树链剖分)
  8. 自动填写html文本框的值,网页自动填表——文本输入框及多行文本输入框
  9. 20210501:字符串与哈希表力扣专题学习记录
  10. setoolkit制作钓鱼网站
  11. macbook重装系统 选择方案_MAC-重新安装系统的四种方法
  12. OpenCV可以识别文字吗?
  13. 疫情地图 | EXCEL制作疫情风险地地图
  14. 《大象--Thinking in UML 第二版》已于近日在当当首发,同时邀请各位加入新浪微博[大象-thinkinginUml群]:http://q.weibo.com/1483929
  15. 【软件监控神器】Procmon
  16. 数据库基础语法--php基础最详细教程
  17. workflow 添加html,为alfred编写workflow
  18. 基于springboot的校园闲置图书共享平台
  19. 转】Dolby TrueHD 、DTS-HD MA和LPCM比较解析!!
  20. 计算机 发声原理,模拟电子琴演奏程序设计。微机中扬声器控制发声原理如练习图10.1所示,其中用到8255与8253两个芯片。...

热门文章

  1. 部分常用simulink 模块对应中文翻译
  2. 心流:提升幸福的奥秘
  3. 【R language】 清楚区分输出函数 cat、print、paste 区别 经验分享
  4. 按键精灵识别不出图片
  5. 为什么流量过万转化率却很低?
  6. 数据通信是计算机网络最基本功能,计算机网络最基本的功能是数据通信和()。A.打印文件B.文件调用C.降低成本D.资源共享...
  7. 预算一万以内的机器学习台式机/主机配置推荐
  8. 逻辑门电路工作原理详解
  9. JSAPI支付——H5网页端调起支付接口
  10. ionic-移动端web的性能优化开源组件