1.URL
<协议>://<主机>:<端口>/<路径>
2.HTTP特点:
HTTP协议本身是无连接的,使用面向连接的tTCP作为运输层协议
HTTP协议是无状态的,同一个用户第二次访问相同资源服务器并不能记录用户信息
TCP三次握手完成前两次后,就会把HTTP请求报文作为第三次握手的数据发送给服务器
2.HTTP报文结构
(1)请求报文
请求行:方法+url+http版本号+换行符
首部行:首部字段:值
空白行
实体主体
(2)响应报文
状态行:http版本+状态码+状态码解释短语+换行符
首部行:首部字段:值
空白行
实体主体
3. HTTP方法
OPTION:请求一些选项的信息
GET:请求读取URL所标志的信息
HEAD:请求读取URL所标志的信息的首部
POST:给服务器添加信息
PUT:在指明的URL下存储一个文档
DELETE:删除URL所标志的资源
TRACE:用来进行回环测试
CONNECT:用于代理服务器
4.HTTP请求报文首部字段
Host:www.baidu.com (指明主机的域名)
Connection:close/keep-alive? (指明是长连接还是短连接)
User-Agent:Mozilla(表明用户代理使用的浏览器是火狐)
Accept-Language:cn(表明用户希望得到中文文档)
5.HTTP状态码
1xx:表示通知信息,如收到了或正在处理
2xx:表示成功,如接受或知道了
3xx:表示重定向,如要完成请求还必须采取进一步的行动
4xx:表示客户的差错,如请求中有错误的语法或不能完成
5xx:表示服务器的差错,如服务器失效无法完成请求
6.Http1.0和1.1区别
1.缓存处理不同 2.新增了状态码,比如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。 3.Host头处理:1.0认为每个每台服务器只有一个ip,后来出现了虚拟主机,http1.1在首部行加入了host属性 4.长连接:http1.1在首部行加入了Connection: keep-alive
?
7.Http2.0和Http1.x区别
1.HTTP1.x的解析是基于文本,Http2.0基于二进制格式 2.连接共享:每个连接可以有多个request,每个request有一个id,接收方根据id处理不同的request 3.Http报文压缩,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。 4.服务端推送:客户端没有发起请求,服务器也可以推送信息到客户端
8.什么是HTTPS
Https=http+加密+认证+完整性保护 https是身披ssl外壳的http,通常http直接和tcp通信,使用https时,http先和ssl通信,再由ssl和tcp通信 HTTPS使用443作为默认端口
9.HTTP的缺点
(1)通信使用明文,不加密,内容会被窃听
http底层是tcp协议,tcp可能被窃听,即使http对报文加密,仍然会被截获,只不过是不知道报文内容
(2)无法验证通信双方身份
http协议不存在验证通信方的步骤,任何人都可以发起请求,无意义的请求也会照单全收,会dos攻击 ?? (3)无法保证报文的完整性 http无法证明通信报文的完整性,请求或者响应的内容被篡改也无法获悉
?
10.HTTPS的优点
(1)通信加密:http和ssl(Secure socket layer)组合使用,构成https
(2)内容加密:客户端对http报文加密后再发送请求,客户端和服务器必须同时具有加密和解密机制
(3) ssl可以查明通信方的证书,证书由第三方机构颁发,很难伪造
?
11.加密方式
(1)共享密钥加密(对称密钥加密): 加密密钥和解密密钥使用相同的密码体制 通信双方需要用同一种密钥解密,发送信息的一方需要将密钥随着加密的信息一同发送给接收方,信息和密钥可能被截获
例如:A和B是进行通信的双方 假设A手握一把密钥 key1,那么A需要克隆一把相同的密钥 key1' 在第一次通信中,A将报文连同 key1'一起发送给B 此后:A和B则分别使用 key1、key1' 分别对接收/发送的报文进行解密/加密
(2)公开密钥加密(非对称密钥加密): 发送信息的一方使用接收方的公有密钥加密,发送文件,接收方使用私有秘钥解密 公有密钥可以公开,私有秘钥不公开
例如:B希望自己发送给A的报文被加密 假设A手握公钥 key2 和私钥 key2' 首先,A将报文主体连同 key2 一起发送给B 此后,B向A发送的报文都将使用 key2 加密 而被 key2 上锁的报文 只有A手上的 key2' 才能解密
(3)https采用混合加密的方法: 在交换密钥的环节使用非对称加密,之后的通信则使用对称加密 例如:A手握一对非对称密钥(公钥key3、私钥key3'),B手握一对对称密钥(key4、key4')
阶段1:交换密钥-使用非对称加密 1、A将公钥 key3 发送给B 2、B将下一阶段加密/解密用的 key4' 放在报文中,并使用公钥 key3 对报文进行加密 3、A使用私钥 key3' 解密报文,得到 key4'
阶段2:数据通信-使用对称加密 A和B分别使用 key4' 和 key4对接收/发送的报文进行解密/加密
?
|