一篇了解http协议

http协议

访问www.baidu.com背后发生了什么?

​ 1、分析url

​ 2、解析域名的ip地址

​ 先看缓存 (浏览器www.baidu.com 112.223.223.223)——linux的缓存nscd

​ 再看/etc/hosts文件里面有没有记录

​ 再看/etc/resolv.conf里的本地域名服务器有没有解析

​ 本地域名服务器记录的解析如果有就会直接返回,如果没有解析,就会去根域名服务器找全球13台,依次迭代查询得到最后的ip解析地址

​ 3、进行tcp三次握手,建立连接
​ 4、http应用数据的发送,请求百度页面
​ 5、服务器收到请求,然后返回百度的html页面文档
​ 6、浏览器收到页面内容之后,运行展示在窗口上
在这里插入图片描述

Http定义

​ HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

​ http协议基于TCP协议传输 ——明文 默认端口是80

http协议特点

1、简单快捷

2、灵活

3、无状态——每次请求是独立的,上一次的请求和下一次的请求互不相干。比如,你登录了某个网站,它不能知道你上一次请求已经登录过了。所以需要借助其他东西来完成这个僧录认证。

会话保持——session和cookie2

​ session(服务器端)

​ cookie(客户端)

http作用

将网页文件从服务器里传输到客户机里(浏览器)

浏览器——》http——》web server(gin,nginx,flask等)

http报文结构
请求报文

从客户端向web服务器发送的请求报文。报文的所有字段都是ASCII码。

host 表示访问哪个网站——》URL

user-agent 使用的用户代理——》浏览器
在这里插入图片描述

响应报文

从web服务器到客户机的应答。报文的所有字段都是ASCII码

F5和F5 CTRL的区别
  • F5+CTRL——》强制浏览器发起新的请求,要求服务器重新传输网页数据,不适用缓存——》200

    ​ 不会携带If-Modified-Since字段和If-None-Match字段

  • F5——》发起新的请求,但是是从缓存里拿数据——》304

    ​ 会携带If-Modified-Since字段和If-None-Match字段

    请求报文里是否有上面的两个首部字段来判断是否曾经访问过

状态码

  • 200——服务器成功响应

  • 301——Moved permanently 永久重定向 请求资源的URL已经永久更改,在响应中给出了新的URL

  • 302——Moved temporarily 临时重定向

  • 304——Not modified 没有修改 服务器的If-Modified-Since的时间与浏览器缓存里的时间一致且服务器当前网页未作修改,浏览器缓存里的内容和服务器的内容一致。

    如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。 简单的表达就是:服务端已经执行了GET,但文件未变化。

  • 401——认证失败 如:要求提交的用户名和密码不正确

  • 403——Forbidden 禁止访问 web浏览器不能访问某个文件,在服务器上设置了权限的限制

  • 404——Not found 访问的页面没有找到,服务器上没有请求的资源

  • 405——Not allowed 方法不对(get或者post)

  • 499——Client has closed connection 客户端断开连接

  • 500——Internal server error 服务器内部错误

  • 502——Bad gateway 网关障碍 就是负载均衡器是好的,但是后端的real server挂了

  • 503——Service temporarily unavailable 服务临时不可用 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状态是临时的,会在一段时间后恢复

  • 504——Gateway time-out 网关超时 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URL标识出的服务器,如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应,可能是后端的服务器网络或者防火墙问题导致

(12条消息) HTTP常见状态码(14种)_Running_96的博客-CSDN博客_http状态码

请求方法

  • GET - 从指定的资源请求数据,通过url里携带数据
  • POST - 向指定的资源提交要被处理的数据,数据可以是json或者其他格式,数据放在body部分。
  • GET和post的区别

    GET 提交参数一般显示在 URL 上,POST 通过表单提交不会显示在 URL 上,POST 更具隐蔽性:

    img

    1、Get 是用来从服务器上获得数据,而 Post 是用来向服务器上传递数据。

    2、Get 将表单中数据的按照 variable=value 的形式,添加到 action 所指向的 URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action 所指向 URL。

    3、Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post 的所有操作对用户来说都是不可见的。

    4、Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post(当然还有一个原因,将在后面的提到)。

    5、Get 限制 Form 表单的数据集的值必须为 ASCII 字符;而 Post 支持整个 ISO10646 字符集。

    6、Get 是 Form 的默认方法。

    7、使用 Post 传输的数据,可以通过设置编码的方式正确转化中文;而 Get 传输的数据却没有变化。在以后的程序中,我们一定要注意这一点。

    HTTP 方法:GET 对比 POST | 菜鸟教程 (runoob.com)

    [99%的人理解错 HTTP 中 GET 与 POST 的区别 - OSCHINA - 中文开源技术交流社区](https://www.oschina.net/news/77354/http-get-post-different#:~:text=直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 …,GET请求会被浏览器主动cache,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会)

首部字段

在这里插入图片描述

http代理
什么是HTTP代理?

​ HTTP代理又称Web缓存或代理服务器,是一种网络实体,能代表浏览器发出HTTP请求,并将最佳的一些请求和响应暂存在本地磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无需再次访问Internet。

在这里插入图片描述

Https

定义

​ HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

​ https基于TLS/SSL协议加密进行TCP传输 默认端口是443

SSL与TLS
  • SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
  • TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
http与https

http协议基于TCP协议传输 ——明文 默认端口是80

参考网站:

(12条消息) HTTPS原理详解_猪哥66的博客-CSDN博客_https原理

(12条消息) HTTP与HTTPS比较以及通信过程_II Sole的博客-CSDN博客

csdn.net/u014044812/article/details/79571927?spm=1001.2014.3001.5501)

(12条消息) HTTP与HTTPS比较以及通信过程_II Sole的博客-CSDN博客

https://baijiahao.baidu.com/s?id=1685474345600994715&wfr=spider&for=pc&qq-pf-to=pcqq.group

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值