| |
|
开发:
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知识点总结 |
1.HTTP与HTTPS的概念HTTP:超文本传输协议,是应用层的一个协议,定义了超文本的传输的标准。 HTTPS:是HTTP的一种,以安全为重点的HTTP,在HTTP的基础上加入了SSL,因此可以看作HTTPS = HTTP + SSL。HTTPS的安全基础是SSL,通过SSL进行传输加密与身份认证,保证了传输过程的安全性。
通俗点说,HTTP就是说话的语言、语法,规定了我们要怎么说话,以及说话时语句怎么组成。而HTTPS则相当于暗语,只有说话者和目标者知道并能听懂。 2.TCP/IPTCP/IP协议,并不仅仅指的是TCP协议和IP协议两个协议,而是以这两个协议为中心,围绕着这两个协议的许多协议组成的协议簇。 TCP协议,即传输控制协议,与用户数据报协议UDP同为传输层的协议。TCP协议与UDP协议的区别在于TCP协议是一个面向连接的、可靠的、基于字节流的协议,而UDP则是面向无连接的协议。面向连接指的是客户端与服务器之间的连接,在TCP协议下,客户端与服务器简历连接之前需要进行三次握手,确保客户端与服务器都拥有发送与接收的能力。不仅如此,TCP还会记录数据发送的情况,避免因为丢包或网络问题导致数据接收不到。因此TCP是有状态的、可控的,而UDP是无状态的、不可控的。面向字节流是TCP为了维护状态,在数据传输中将IP包变成了字节流,而UDP则是基于数据的。由于TCP有状态且可控,相较于UDP更为安全,因此HTTP协议使用TCP协议做为通讯协议。 IP协议的英文全称为Internet Protocol,即网际互联协议,他解决了通信双方寻址的问题,相当于给每一台计算机配备了一个编号,通过这个编号来辨别不同的计算机。 TCP三次握手
SYN:同步序列编号。 TCP四次挥手初始双方处于ESTABLISHED状态,此时用户端向服务端发送FIN报文,序列号为seq=u,用户端进入FIN-WAIT-1状态。服务器端接收到之后,进入CLOSED-WAIT状态。并向用户端发送ACK报文,ack=u+1。用户端接收到报文后,进入FIN-WAIT-2状态.随后服务器端向用户端发送FIN、ACK报文,seq=n,ack=u+1.之后服务器端进入LAST-ACK状态。用户端接收到之后,向服务器端发送ACK报文,ack=n+1,之后进入TIME-WAIT状态等待2MSL,确定不会再接收到来自服务器端的信息,进入CLOSED状态。服务器端接收到ACK报文后,进入CLOSED状态。 为什么会有TIME-WAIT状态:确定没有后续的来自服务器端的包,避免数据包混乱。 等待2MSL:1 个 MSL 确保四次挥手中主动关闭方最后的 ACK 报文最终能达到对端;1 个 MSL 确保对端没有收到 ACK 重传的 FIN 报文可以到达。 3.URI/URLURI是统一资源标识符,URL是统一资源定位符,我们常常说的网址就是URL。URI由URL与URN(统一资源名称)组成。 由于URI在网上任意位置都能访问到.因此,HTTP协议使用URI定位网上的资源. 4.从输入网址到页面展现发生了什么我们以下面这条网址为例
5.HTTP请求报文http请求报文由请求行,消息头部、空行、请求正文四个部分组成。
常用的HTTP请求方法有如下几种
6.HTTP响应报文http响应报文由状态行、响应头、空行和响应体四个部分组成。响应报文大致如下。
7.HTTP请求跨域由于同源策略,浏览器对JS实施了安全限制,只要协议,域名,端口任何一个不同,都会被当作不同的域.导致LocalStorage,SessionStorage,Cookie等浏览器内存无法跨域访问.Dom节点无法跨域操作、Ajax无法跨域请求. 解决方法1.JSONP:由于script标签的src,img标签的src,link标签的href并不会被同源策略所限制,JSONP就借用了script标签的src,实现了跨域获取数据。JSONP是一个相对古老的解决跨域的方案,仅支持GET请求,需要前端后端共同实现。 2.WebSocket:由于设计原因,WebSock不附属于同源策略,它的跨域检测工作由服务端检测,服务器根据浏览器加上的Origin跨域请求头,判断此次WebSock是否合法. 3.Cors:跨域资源共享,需要由后端开启,开启后前端可跨域请求后端. 4.Node正向代理,利用服务端请求不会跨域的特性,让接口和当前站点同域,绕开同源策略. 5.Nginx反向代理,同Node代理相同,但是是由我们自己搭建一个中间服务.想要使用Nginx代理,我们需要下载Nginx. 6.window.postMessage,提供了一种受控机制,实现不同页面之间的数据传递.通常使用它进行页面和其打开的新窗口进行数据传递,多窗口之间的消息传递,页面于嵌套的iframe消息传递. 8.HTTP缓存策略HTTP缓存策略有强缓存和协商缓存两种. 强缓存在HTTP1.0版本里,强缓存使用的是Expires字段,HTTP1.1使用的是Cache-Control字段.
Expires是用于表示资源的过期时间的请求头字段,值是一个绝对时间,是由服务器端返回的。在这个过期时间之前可以直接从缓存里面获取数据,无需再次请求。由于expires是根据本地时间来判断的,倘若客户端和服务器时间不同,会导致缓存命中误差,因此在HTTP1.1版本中,提出了一个新的字段----Cache-Control.
Cache-Control字段优先级高于Expires,在他的响应属性值max-age秒内,不与浏览器请求新的数据.倘若缓存数据失效,代表没有命中强缓存,进入协商缓存. 协商缓存
Last-Modified是最后修改时间,在浏览器第一次给服务器发送请求后,服务器会在响应头中加上这个字段。如果再次请求,浏览器会在请求头中添加If-Modified-Since字段,如果该字段小于Last-Modified,则更新缓存,否则返回304,让浏览器直接使用缓存.
ETag是服务器根据当前文件的内容,对文件生成唯一的标识,服务器获取到标识的时候,与浏览器上的资源的ETag对比,如果改变,返回新值,没改变,返回304,让浏览器使用缓存. 9.HTTP优点与缺点优点
缺点
|
|
网络协议 最新文章 |
使用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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:33:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |