http和https协议学习总结

HTTP协议简介

  • 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
  • 超文本传输协议是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器
  • 基于TCP/IP来建立通信

HTTP协议的特点

  • 简单快速
  • 无连接
    限制每次连接只处理一次请求,服务端处理完请求,并收到客户端应答,断开连接。
  • 无状态
    对以前处理的事物是没有记忆的。要处理之前请求过的资源,就必须重新发起请求。

http1.1、http1.0的区别

  • http1.0产生的背景
    超文本传输协议(Hyper Transfer Protocol)伴随着计算机网络和浏览器的诞生,http1.0也随之而来,处于计算机网络的应用层,基于TCP协议
  • http1.1中做的改进
    1.支持长链接,不需要每次访问完成后关闭链接
  • http1.x中的问题
    1.明文传输,客户端和服务端都无法验证对方的身份
    2.header里携带的内容过大,在一定程度上增加了传输成本
    3.虽然在http1.1中支持了keep-alive,来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力

URI和URL的区别

  • URI,是uniform resource identifier,统一资源标识符,用来唯一标识一个资源。
    例如: file://a:1234/b/c.txt
    表示该文件在a主机下的1234端口的b目录下的c.txt文件
  • URL,是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

Request

  • Accept
  • reference
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: --> GET https://staging-apiv5.zhangyu.im/coupons/vip http/1.1
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: build: 636
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: version: 5.31.0
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: device: android
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: User-Agent: MIX 3/10
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: bundleId: com.zhangyu.app
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: channel: DEBUG
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: guest-id: 0
2021-02-02 15:26:22.329 19163-19813 D/OkHttp: abTestType: A
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: platformType: Android
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: Connection: close
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: x-install-time: 1612160363
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: packageName: com.zhangyu.app
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: x-did: 01422cb7-5d8b-491b-b02b-7e1d762a6123
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: deviceId: 01422cb7-5d8b-491b-b02b-7e1d762a6123
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: Host: staging-apiv5.zhangyu.im
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: Accept-Encoding: gzip
2021-02-02 15:26:22.330 19163-19813 D/OkHttp: --> END GET

Response

2021-02-02 15:18:10.076 15177-16006 D/OkHttp: <-- 200 OK https://test5-apiv5.zhangyu.im/coupons/vip (147ms)
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Server: nginx
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Date: Tue, 02 Feb 2021 07:18:10 GMT
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Content-Type: application/json; charset=UTF-8
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Transfer-Encoding: chunked
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Connection: close
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Vary: Accept-Encoding
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Access-Control-Allow-Credentials: true
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Access-Control-Expose-Headers: *
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: Content-Encoding: gzip
2021-02-02 15:18:10.077 15177-16006 D/OkHttp: <-- END HTTP (encoded body omitted)

get和post方法区别

  • get获取资源
    • get提交数据一般放在url之后用?隔开,例如?isFist=true&id=123
    • 提交的数据有大小限制
    • 获取变量值,Request.QueryString
    • 安全问题,重要信息暴露在Url中
  • post更新服务器上的资源
    • 一般放在body中来提交
    • 提交的数据没有大小限制
    • 获取变量值,Request.Form

cookie和session

  • Cookie技术是客户端的解决方案,Cookie就是由服务器发送给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。是用户信息识别的标志(可以弥补http协议无状态的不足)
  • Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。(从Session中查找用户信息)
    • Session工作原理:
      1.创建Session
      2.在创建Session的同时,服务器会为该Session生成唯一的SessionId
      3.在Session被创建之后,就可以调用Session相关的方法往Session中增加内容
      4.当客户端再次发送请求的时候,会将这个SessionId带上,服务器接收到请求之后会根据SessionId找到相应的Session
  • 对比
    存放位置不同(Session服务器压力大)
    安全性Session更安全,因为Cookie在本地可以被访问和修改
    有效期上不同

Https

  • Https协议并不是一个单独的协议,而是对工作在一加密连接(SSL/TLS)上的常规Http协议。通过在TCP和HTTP之间加入TLS(Transport Layer Security)来加密。
    (Https协议就是加了一层TLS外壳的http协议)
  • SSL/TLS协议
    SSL协议,是一种安全传输协议,TLS是SSL的升级版在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/113528001
今日推荐