post与put
post创建新数据
put更新数据
get与post
get:一般会缓存 报文实体为空 参数再url中
post:不缓存 报文为发送的数据
304
服务器根据缓存内容判断页面与之前是否相同,若相同则返回304
options(纺织)
获取服务器支持的所有http请求方法
用来检查访问权限
http1.0与http1.1区别(链子换)
1、连接方面:http1.0使用非持久连接,http1.1使用持久连接。
持久连接来使多个http请求复用一个tcp连接
2、资源请求方面:http1.0中存在浪费宽带的现象,传送整个资源,1.1允许请求资源的某个部分’
3、缓存:1.1引入了更多的缓存控制策略。
http1.1与http2.0区别(二头多舒服)
- 二进制协议:头信息和数据体都是二进制,是多路复用的基础
- 多路复用:复用tcp练级,但不按顺序一一发送接收,解决了队头堵塞
- 数据流:使用数据流的概念,每一个数据流都有一个数据流id区分他是那一个数据流
- 头信息压缩:压缩了头部信息,提高速度
- 服务器推送:允许服务器未经请求主动向客户端发送资源。
http2:解决了http队头堵塞,没有解决tcp队头堵塞
(tcp滑动窗口传输数据,若有数据一直未接受,则会堵塞)
http3:解决了tcp队头堵塞
http与https(梳妆米口)
- HTTPS协议需要CA证书,费用较高;而HTTP协议不需要;
- HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议;
- 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS协议端口是443;
- HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全。
浏览器中输入url发生了什么
解析url
缓存判断
dns解析
获取mac地址
tcp是三次握手
https握手
返回数据
页面渲染
四次握手
http3
基于udp下而已实现了类似tcp的多路复用数据里路秘传书可靠性等功能,这套功能被称为quic协议
1、流量控制、拥塞控制
2、快速握手,基于udp可在0-1个rtt建立连接
3、多路复用:同一个物理连接上有多个独立的数据流,实现数据流的单独传输
4、集成了TLS加密功能
http优缺点
优点
- 简单快速
- 无连接
- 无状态
- 灵活
缺点
- 无状态:无用户信息,容易被伪造
- 明文传输:不安全,被监听
与缓存相关http请求头有哪些
强缓存(服务器返回资源携带)
- expires(过期时间,本地判断)
- cache-control(优先级高,过期时间,相对时间)
-
public:资源客户端和服务器都可以缓存。
privite:资源只有客户端可以缓存。
no-cache:客户端缓存资源,但是是否缓存需要经过协商缓存来验证。
no-store:不使用缓存。
max-age:缓存保质期。
协商缓存
- Etag(文件唯一标识)、if-None-Match(发送给服务器,上次的etag)
- last-modified(服务器返回资源携带,文件最后修改时间),if-modified-Since(客户端给服务器,上次发送时的lastmodified)
在实际的缓存机制中,强缓存策略和协商缓存策略是一起合作使用的。浏览器首先会根据请求的信息判断,强缓存是否命中,如果命中则直接使用资源。如果不命中则根据头信息向服务器发起请求,使用协商缓存,如果协商缓存命中的话,则服务器不返回资源,浏览器直接使用本地资源的副本,如果协商缓存不命中,则浏览器返回最新的资源给浏览器。
https协议
产文本传输安全协议。
https用http进行通信,ssl/tls来加密
http:铭文传输、存在信息监听、信息篡改、信息劫持的危险
https:加密传输、完整性校验、身份验证
加密通信原理
散列算法(完整性校验):
产生数字摘要,摘要算法保证了“数字摘要”和原文是完全等价的。
对称加密:
服务器每次发送真实数据前,会先生成一把密钥传输给客户端,服务器给客户端发送的真实数据会先用这把密钥进行加密,客户端收到加密数据后再用密钥进行解密。
非对称加密:
客户端和服务器都有两把密钥,一把公钥一把私钥(公钥数据私钥解密,私钥数据公钥解密),服务器在给客户端发送真实数据之前,先用客户端明文传输给服务器的公钥进行加密,客户端收到后,用自己的私钥进行解密。
非对称加密+对称加密
以非对称加密的方式传输对称加密密钥。
状态码
1.。 信息性状码 接受的请求正在处理
(1)2XX 成功
- 200 OK,表示从客户端发来的请求在服务器端被正确处理
- 204 No content,表示请求成功,但响应报文不含实体的主体部分
- 206 Partial Content,进行范围请求
(2)3XX 重定向
- 301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
- 302 found,临时性重定向,表示资源临时被分配了新的 URL
- 303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源
- 304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
- 307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求
(3)4XX 客户端错误
- 400 bad request,请求报文存在语法错误
- 401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
- 403 forbidden,表示对请求资源的访问被服务器拒绝
- 404 not found,表示在服务器上没有找到请求的资源
(4)5XX 服务器错误
- 500 internal sever error,表示服务器端在执行请求时发生了错误
- 501 Not Implemented,表示服务器不支持当前请求所需要的某个功能
- 503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
- 504 Gateway Timeout,表示超时,进入死循环。
dns协议
主机名到ip地址的转换服务
将域名解析为IP地址,客户端向dns服务器发送域名,查询请求,dns服务器告知所需ip地址
dns同时用tcp和udp协议
在区域传输时用tcp
辅域名服务器会定时像主域名服务器进行查询以便了解数据是否有变动,如果有变动会进行区域v欢送,进行是数据同步。
域名解析使用udp
客户端向dns服务器查询域名,用udp传输即可
dns查询过程
浏览器缓存
本地dns服务器
根域名服务器
顶级域名服务器
权威域名服务器
迭代查询和递归查询
递归查询:请求发送后,域名服务器向下以及域名服务器发送请求,最后用户返回查询的最终结果。用户只需要发送一次查询请求
(自底向上层层查询,自上向下层层返回)
迭代查询
查询请求后,域名服务器返回单词查询的结果,下一级的查询用户自己请求
(向每一个服务器查询)
七层模型
应用层 | http、https、ftp | 为应用提供服务 |
表示层 | 数据格式转化,数据加密 | |
会话层 | 建立管理维护会话层 | |
传输层 | tcp、udp | 建立管理维护端到端的连接 |
网络层 | ip | ip选址及路由选择 |
数据链路层 | 提供介质访问和链路管理 | |
物理层 |
三次握手
syn=1 seq=x
发送syn请求连接
syn=1 ACK=1 seq=n ack=x+1
收到syn确认ack,同时发送syn
ACK=1 seq=x+1 ack=y+1
客户端收到ack,向服务器确认,ACK
四次挥手
fin=1 seq=u
Ack=1 seq=y ack=u+1
Fin=1 ACK=1 seq=w ack=u+1
ACk=1,seq=U+1 acl=w+1
为什么连接三次,关闭四次
服务器收到客户端的syn请求报文后可以直接发送SYN(同步)+ACK(应答)。
关闭连接时,服务器收到fin报文,可能并不会立即关闭,只能先回复我收到了,等到所有报文都发送完毕了,才发送FIN报文
为什么不用两次握手
三次握手要完成两个重要的功能,既要双方做好发送数据的准备工作,也要允许双方就初始序列号进行协商。
两次握手很可能发生死锁,
假设A给服务器发送了一个请求,但是由于网络原因迟迟没有到达B服务器。由于一直没收到服务器端的回复确认,所以就进行超时重传,上个就舍弃了,
然后新的请求很快的到达了B服务器,然后B服务器也很快的进行了响应,如果是两次握手的话,这样就建立了连接,但是上次因网络问题迟迟未到的第一个请求这时到达了B服务器,服务器依然会当成新的连接请求进行响应,(服务器只要响应,第二次握手就完成了)这时又会建立连接,这就会出现建立了两个连接的局面,然后这就会出现很多问题,例如服务器端认为完成了握手,可以发送数据了,于是一直处于等待数据状态,而发送端不理睬服务器端发来的请求(因为发送端的那个请求早就被清除了),不去发送数据,后果就是服务器一直等,这样就会浪费很多服务器资源
区别 | UDP | TCP |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
适用场景 | 适用于实时应用(IP电话、视频会议、直播等) | 适用于要求可靠传输的应用,例如文件传输 |
靠脸传销对象
get与post
- 相同点
- get和post本质相同都是tcp连接
- 不同点(三餐按环保)
- 传参
- get把参数包含在url中
- post通过requestbody 传递参数
- 安全性不同
- GET比post更不安全
- 参数长度限制不同
- get不大于2kb
- post不受限制
- 参数类型不同
- GET只接受ascii字符
- post没有限制
- 缓存机制不同
- GET会被浏览器主动cache
- get产生一个数据包,post产生两个数据包
- get直接获取数据
- post先打声招呼再发送数据
- 传参
. TCP的拥塞控制机制
TCP的拥塞控制机制主要是以下四种机制:
- 慢启动(慢开始)
- 拥塞避免
- 快速重传
- 快速恢复
TCP的流量控制机制
TCP采用大小可变的滑动窗口进行流量控制