9.3.5网络原理(应用层HTTP/HTTPS)

这篇具有很好参考价值的文章主要介绍了9.3.5网络原理(应用层HTTP/HTTPS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.HTTP:

1. HTTP是超文本传输协议,除了传输字符串,还可以传输图片,字体,视频,音频.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

2. 

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

3.HTTP协议报文格式:a.首行,b.请求头(header),c.空行(相当于一个分隔符,分隔了header和body),d.正文(body).

4.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

5.URL:唯一资源描述符(长度不限制). 

a.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

b.注意:查询字符串(query string)是键值对的格式.键值对之间使用'&'符号分割,键和值之间,使用'='分割,查询字符串以'?'开始.

c.上述的URL几个部分都是可以省略的

1)IP地址/域名省略:相当于请访问当前服务器的地址(上一次获取的).

2)端口号省略:浏览器会自动加上,HTTP自动添加80,HTTPS自动添加443.

3)带层次的路径省略:相当于访问根目录(/),服务器主页.

4)查询字符串省略:后端自动处理.

d.URL encode:

例如'+' ':' '?' '&' '=' '#',还有中文都需要转义.

以为网站可以查看转义:URL encode转义网站

5.method(方法):

a.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

注意:最上面两个最常用.

b.GET:"从服务器获取xxx",

   POST:"向服务器传输一个xxx".

c. 一般来说

GET请求中body部分是空的,数据放在query string中.

POST请求使用的场景是登录和上传,有body(和query string很类似),但是query string是空的.

注意:GET和POST没有本质区别,两者经常相互替换,上述区别只是习惯,放在query string中用户可以直接看到(收藏夹可以收藏),放在body则不行.

d.错误的说法:

1)较长的数据放到body中,url有长度限制. 

2)POST比GET更安全.

注意:以上说法错误.

e.需要注意的地方:

1)设计的时候,GET和POST语义不同,但是实践中不一定要遵守.

2)GET是幂等的,POST不是幂等的,设计互联网产品的时候,需要考虑幂等性,有的需要幂等(账户余额查询),有的需要不幂等(广告投放,不同地方广告不同).

3)GET请求可以被缓存,POST不能缓存,但是GET缓存的前提是幂等.

f.其它方法(比较少见):

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

6.请求报头(header):

a.采用键值对结构,每一行是一个键值对,键和值用":空格"分割.

b.query string / body 中的键值对完全由程序员自己定义,header中有标准定义的部分,也要自定义的部分.

c.重要的header规定:

1)Host:服务器主机地址和端口号.

注意:一般情况下,Host里的内容和url是一样的,但是如果使用了代理,就不一样.

2)Content-Length:表示body中数据长度,为了解决粘包问题.

注意:如果没有body,这个字段就没有,如果有body,这个字段必须有,否则为非法请求.

3)Content-Type:表示请求body中数据格式.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

4)User-Agent(简称UA):主要包含操作系统版本和浏览器版本,现在主要区分PC端和移动端.

5)Referer:描述了当前网页从哪里来.

如果从浏览器地址来直接输入url,或者收藏夹打开的网站,没有referer.

如果是点击了网页内容,发生了跳转,referer就是刚才搜索的结果页.

6)Cookie(重要):浏览器本地存储数据的一种机制.​​​​​​​

a)用户访问服务器的时候会产生一些临时数据,有的放在服务器储存,有的在浏览器这边储存.

b)采用键值对储存,这些数据通常是服务器返回的,不同的网站cookie是独立的,内容是程序员自定义的.

c)有一个很重要的键值对,用来表示用户身份信息,有时候,登录一个网站,再次访问无需重新登陆.

d)实现身份识别,不仅仅需要cookie(客户端),还需要session(服务器端),(类似于医院看病,做检查需要刷病历卡),每个用户都有自己的session(value),以sessionid(key)作为标识,以类似hash的形式存储数据.

e)后续在访问这个网站的页面时,就会在请求中带上cookie,服务器就可以进一步知道客户端的详细情况了.

7.响应首行:HTTP版本号,状态码,状态码描述.

200 成功

404 访问的资源不存在

403 访问的资源没有权限

502 服务器挂了

504 服务器响应超时

302 重定向,跳转至其他页面

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

8.构造HTTP请求 (html的form表单, js的ajax, 各种语言代码, postman):

a.html的form表单(只能支持get和post两者方法):

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络 9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

b.ajax:

1)搜索jQuery CDN,使用url: https://code.jquery.com/jquery-3.7.1.min.js

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

9.http协议中使用到的键值对:

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

二.HTTPS(加密):

1.最简单的加密方式是使用对称密钥(所以非对称密钥传输对称密钥):

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

不同的客户端密钥是不同的,如果客户端生成了密钥,就要把密钥传输给服务器,但是黑客可能截获密钥.
9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

所以要使用非对称加密(公钥和私钥),将对称加密的密钥从客户端传输到服务器。

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络注意:非对称加密,只传输对称密钥,之后所有的信息由对称密钥进行加密,因为非对称密钥的运算量很大,效率很低,而对称密钥运算量小,效率高.

2.上述的加密方式有一个很大的漏洞,黑客可以通过中间人攻击的方式,仍然可以拿到密钥:

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络
 

3.解决上述问题,可以引入证书机制,使用第三方认证:
a.服务器要在第三方公证机制申请一个证书,第三方机构会审核服务器的资质.在这个证书中包括很多属性,比如网站的域名,证书过期时间,公钥,数字签名等等.
9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络

b.客户端想要和服务器进行通信,发送请求之后,服务器会返回证书,这时客户端会对证书进行检验,因为客户端手里持有第三方认证机构的公钥(这个公钥不是通过网络传输的,而是直接系统内置的,客户端安装了windows系统,系统里就会内置各种认证机构的公钥,所以这个环节黑客无法攻击),所以客户端根据手里持有的认证机构的公钥对数字签名解密得到校验和的明文,根据相同的算法,对证书上的其他属性再算一次校验和,对比是否相同.

9.3.5网络原理(应用层HTTP/HTTPS),http,https,网络协议,网络文章来源地址https://www.toymoban.com/news/detail-733354.html

到了这里,关于9.3.5网络原理(应用层HTTP/HTTPS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Java】应用层协议HTTP和HTTPS

    【Java】应用层协议HTTP和HTTPS

    HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现) 当我们在浏览器中输入一个 搜狗搜索的 “网址” (URL) 时, 浏览器就给搜狗的服务器发送了一个 HTTP 请 求, 搜狗的服

    2024年02月07日
    浏览(8)
  • 防火墙是否能够识别和控制HTTP/HTTPS流量中的应用层攻击?

    防火墙是否能够识别和控制HTTP/HTTPS流量中的应用层攻击?

    网络世界中,“安全”是一个永恒的话题。为了保障企业数据的安全、用户隐私的保护以及应用程序的稳定运行, 防火墙起着至关重要的作用。防火墙能够识别并控制 HTTP 和 HTTPS 流量的应用层攻击(如 SQL 注入和跨站脚本攻击),从而帮助企业和个人应对不断变化的威胁环境

    2024年02月21日
    浏览(8)
  • 「网络编程」应用层协议_ HTTPS协议学习及原理理解

    「网络编程」应用层协议_ HTTPS协议学习及原理理解

    「前言」文章内容大致是应用层协议的HTTPS协议讲解,续上篇HTTP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) HTTPS(HyperText Transfer Protocol Secure) 是一种通过加密和身份验证保护网络通信安全的协议。它是基于HTTP协议的安全版本,也是工作在应用

    2024年02月16日
    浏览(7)
  • 【网络】应用层——HTTPS协议

    【网络】应用层——HTTPS协议

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 前面本喵讲解并演示了HTTP协议,在比较 POST 和 GET 方法的时候,本喵说这两个方法都不安全,虽然 POST 的提交的表单内容在请求正文中,无法在地址的 url 中看到,但是它仍然是不安全的。

    2024年02月14日
    浏览(12)
  • 【应用层】网络基础 -- HTTPS协议

    【应用层】网络基础 -- HTTPS协议

    HTTPS 是什么? HTTPS 也是⼀个应用层协议。是在 HTTP 协议的基础上引入了⼀个加密层。 HTTP 协议内容都是按照文本的方式明文传输的。这就导致在传输过程中出现⼀些被篡改的情况 加密就是把 明文 (要传输的信息)进行⼀系列变换,生成 密文 。 解密就是把 密文 再进行⼀系列

    2024年02月11日
    浏览(5)
  • 【计算机网络】应用层协议 -- 安全的HTTPS协议

    【计算机网络】应用层协议 -- 安全的HTTPS协议

    HTTPS全称为 Hyper Text Tranfer Protocol over SecureSocket Layer 。 HTTPS协议也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层。 在传统的HTTP协议中,数据以明文的形式在网络上传输,这意味着敏感信息(如密码、个人信息等)可能会在传输过程中被攻击者截获和窃取。为了解

    2024年02月15日
    浏览(13)
  • 学习网络编程No.9【应用层协议之HTTPS】

    学习网络编程No.9【应用层协议之HTTPS】

    北京时间:2023/10/29/7:34,好久没有在周末早起了,该有的困意一点不少。伴随着学习内容的深入,知识点越来越多,并且对于爱好刨根问底的我来说,需要了解的知识就像一座大山,压得我踹不过气来。在这种情形之下,我非常害怕写博客,当然本质也就是在害怕为了搞懂一

    2024年02月05日
    浏览(10)
  • 【网络】应用层——HTTP协议

    【网络】应用层——HTTP协议

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 上篇文章中,本喵带着大家对HTTP有了一个初步的认识,今天就来详细讲解一下这个应用层协议。 如上图所示的 url (网址),里面包含有 / 以及 ? 等字符。 像这样的字符,已经被url当做 特殊

    2024年02月15日
    浏览(12)
  • 网络协议(七)应用层-HTTP

    网络协议(七)应用层-HTTP

    上篇文章介绍了传输层的TCP、UDP协议,在TCP/IP协议中,下三层(网络接口层,网络层,传输层)都是计算机系统联合其他硬件设备自己在干的事,身为程序员的我们平时对其感知不大。而应用层却是与程序开发息息相关的一层,如HTTP,HTTPS,DNS,FTP,SMTP等等,针对不同应用场

    2024年02月03日
    浏览(11)
  • 【应用层】网络基础 -- HTTP协议

    【应用层】网络基础 -- HTTP协议

    协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的,这里便与表述使用\\\"字符串\\\") 如果我们要传输一些\\\"结构化的数据\\\" 怎么办呢? 那么我们(TCP)在收到一个报文的时候,如何保证你收到了一个完整的报文?

    2024年02月11日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包