| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 应用层协议的深入学习 -> 正文阅读 |
|
[网络协议]应用层协议的深入学习 |
目录 (4)HTTPS的工作过程(这里是简化的,需要了解更深的可以查找一些资料来学习) 一.HTTP协议1.了解什么是HTTP协议HTTP(全称位超文本传输协议),是广泛使用的应用层协议,而HTTP协议是基于传输层TCP协议进行实现的。平时打开的网站就是通过HTTP协议进行传输的。其中传输的数据不仅仅是文本,还可以是一些图片,视频等资源。 2.深入理解应用层协议在网络基础中,我们知道TCP/IP是传输层和网络层中负责数据从客户端经过路径选择跨网络传送到服务器端进程中。但是把只把数据传输过去就结束了吗,这时候还需要我们对数据进行加工处理和使用,这时候就还需要一层协议,负责应用细节。 举例说明:还是以快递为例,TCP/IP协议相当于快递中的收件人信息/地址和发件人信息/地址。而HTTP相当于是购买后快递中物品的使用说明书,告诉用户来如何进行使用。 3.理解HTTP协议的工作过程当我们在浏览器输入一个网址时,浏览器会给客户端发送一个HTTP请求个服务端,服务端收到请求后会将响应结果返回一个HTTP响应,一般情况下不止只有一次请求和响应的交互,需要更深入的学习响应过程,我们需要借助第三方工具来进行学习(Fiddler)。 4.Fiddler抓包工具的使用(1)Fiddler是什么Fiddler相当于是一个中间代理,客户端发送请求和服务端发送响应都需要将数据先放到Fiddler这里然后Fiddler再将数据发送给客户端/服务端。所以可以通过Fiddler可以查看发送数据的中间过程,可以更好的学习HTTP协议。 (2)Fiddler下载路径链接:https://pan.baidu.com/s/1Lm7pX3_xoutJgPYV6g5udQ? (3)Fiddler使用方法安装过程一路next即可,安装好之后就可以进行抓包处理了,在抓包之前,首先需要打开Fiddler,然后在浏览器访问需要抓包的网站进行访问,然后Fiddler中就会出现很多抓到的包,通过抓到的内容就可以后续HTTP的学习了。注意:现在的网站基本都是HTTPS协议,,HTTPS只不过比HTTP多了一层加密解密,更安全了,这里并不影响我们的学习。 下面就以搜狗主页为例进行抓包: 在抓取HTTPS包之前需要进行配置,如下: ? ?抓包步骤: 抓包之前可以先清除左边之前的抓包内容,快捷键:ctrl+a 全选后,delete进行清除。 5.HTTP请求/响应抓包结果的学习? ? ? ?? ?(1)HTTP请求结果?(2)HTTP响应结果?注意:这里header之后的空行是一个报头结束的标记。 二.HTTP请求1.认识URL结构平时我们俗称的 "网址" 其实就是说的 URL (Uniform Resource Locator 统一资源定位符).互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它. ?2.了解URL中的encodeencode是一个函数,可将字符串以URL编码,用于编码处理。 编码原理为: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。 比如:空格ASCII码是32,对应16进制是20,那么urlencode编码结果是:%20,但在新标准中空格对应的是+。 3.认识HTTP请求中的方法(1)GET方法常用于获取服务器上的某个资源。在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求。另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求。 ?(2)POST方法POST 方法也是一种常见的方法. 多用于提交用户输入的数据给服务器(例如登陆页面)。通过 HTML 中的 form 标签可以构造 POST 请求, 或者使用 JavaScript 的 ajax 也可以构造 POST 请求。 ?(3)关于GET和POST方法的不同点总结
(6)了解其他方法
4.认识header(请求报头)(1)Host表示服务器主机的地址和端口 (2)Content-Length表示 body 中的数据长度 (3)Content-Type表示请求的 body 中的数据格式 其中body中的常见格式有以下3种:
(4)User-Agent表示浏览器/操作系统的属性 (5)Referer示这个页面是从哪个页面跳转过来的 (6)Cookie(重点)Cookie 中存储了一个字符串, 这个数据可能是客户端(网页)自行通过 JS 写入的, 也可能来自于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)。 Cookie具有身份标识的功能,对于不同域名下的Cookie都是不同的,所以不会引起冲突。 在第一次进行登录请求的时候不会携带Cookie信息,在登录响应的里面包含有3个Set-Cookie属性,只有携带gitee-session-n的属性,里面的属性值是加密后的信息,这个信息就是用户当前登录的身份标识,也成为”令牌“。后续访问当前主页的其他页面时,就会携带刚才获取到的Cookie信息,直到令牌过期/下次重新登录,该信息才会失效。 ? ?上面不同的页面请求中Cookie中携带的信息是相同的。 ?5.登录过程的简单示意图? ?6.认识body(请求正文)正文中的内容格式与header中的Content-Type有关 对应的有三种形式如下: (1)application/x-www-form-urlencoded(表单提交的格式) (2)multipart/form-data(通常用于提交图片和视频) (3)application/json(提交的数据格式为js) 三.认识HTTP响应1.常见的响应状态码(1)200 OK表示访问成功 (2)404 Not Found表示没有找到访问资源 ?资源存在: ?资源不存在: ?(3)403 拒绝访问有的页面访问需要权限,如果没有登录直接访问,则会出现403,例如没有登录自己的码云账号来查看自己的私有仓库,则会出现403。 ?通过Fiddler也可以查看结果 ?(4)405 Method Not AllowedHTTP中支持的方法有GET,POST,PUT,DELETE等,如果对方的服务器不支持这些方法,,则会出现405. (5)500 Internal Server Error服务器内部出错,一般是服务器代码执行过程中遇到了一些特殊情况,如服务器崩溃,则会出现500状态码。 (6)504 GatewayTimeout服务器超时,当服务器负载过大,服务器处理单条请求需要的时间就会增加,可能就会出现超时的这种状态码。 (7)302 Move temporarily临时重定向,从一个页面跳转到另一个页面,一般在登录页面比较常见 ?(8)301 Moved Permanently永久重定向,当浏览器收到这种响应后,之后的请求都会被修改为Location中的新地址。 2.认识响应报头(Header)格式与请求报头基本相同,Content-Type和Content-Length格式和请求中的格式也相同,其中 Content-Type中常见的取值有如下几种:
? ? ? ? ?3.认识响应正文(body)body中的格式取决于header中的Content-Type,与其中的类型对应。 四.通过form表单构造HTTP请求1.form表单的作用form表单是HTML中的一个标签,通常可以给服务器发送请求如GET或POST请求。 2.熟悉form中的属性
一般在form表单中使用input标签,所以也要直到input标签中的属性含义和使用方法。
3.使用form构造发送请求实例(1)form发送GET请求
? (2)form发送POST请求
五.使用ajax构造HTTP请求1.了解什么是Ajax和Ajax的特点ajax 全称 Asynchronous Javascript And XML, 是 2005 年提出的一种 JavaScript 给服务器发送 所以通过在javascript中构造HTTP请求。 2.发送get请求在创建之前需要了了解Ajax中XMLHttpRequest对象中的一些方法 (1)onreadystatechange :存储函数,每当readyState属性改变时就会调用该函数。 (2)readyState:里面包含XMLHTTPRequest的状态,共有4种,如下:
(3)states:包含两种结果:200 ok 和 404 未找到页面 get请求示例
3.发送POST请求发请求前,需要甚至body中的内容。先使用setRequestHeader设置Content-Type,再通过send的参数设置body内容 post请求示例 数据格式为application/x-www-form-urlencoded????????
4.对Ajax进行封装上面的代码写起来比较麻烦,我们可以进行简单的封装
六.了解HTTPS1.为什么引入httpshttps也是应用层协议,只不过在http的基础上引入了加密层,因为http是明文传输,在传输过程中有可能被篡改/被劫持的可能,存在安全性问题。 2.HTTPS工作过程(1)了解两种加密方式为了保证数据安全,在传输过程中需要对数据进行加密,加密之后明文就会变成密文,之后通过密钥对密文进行解密成明文。其中加密又分为对称加密和非对称加密。 对称加密:通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文。 非对称加密:需要用到两个密钥,这两个密钥之间是配对的,一个是公钥,另一个是私钥。 通过私钥对明文进行加密成密文,然后使用公钥对密文进行解密变成明文; 或者通过公钥对明文进行加密成密文,后使用密钥对密文进行解密成明文都可以。 (2)两种加密方式的优缺点由于一个服务器同一个时刻需要给多个客户端提供服务,为了保证安全,需要每一个客户端都有不同的密钥,如果维护每一个客户端与密钥之间的关系太麻烦了,但是在客户端与服务端建立联系的时候协定密钥,相当于将密钥进行明文传输了,就没有意义了,但是再对密钥再进行加密传输又行不通,所以有了非对称传输,非对称传输虽然解决了这种问题,但是私钥与公钥之间的配对速度是比较慢的,所以在进行加密的时候是两种方式都存在。在具体的使用中是对协商密钥的时候使用非对称加密,之后只有客户端和服务器有密钥,即使数据被劫持也破解不了里面的内容,所以之后的数据传输使用对称加密就可以了。 (3)了解证书为了解决客户端如何获取公钥和避免公钥被黑客伪造,于是就引入了证书,证书里面包含公钥和网站的身份信息。 证书相当于一个结构化的字符串,里面包含了证书发布机构,有效日期,公钥等...。 (4)HTTPS的工作过程(这里是简化的,需要了解更深的可以查找一些资料来学习)
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/6 22:39:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |