20190305 HTTP & HTTPS & SSL & TCP & socket

HTTPS

HTTP缺点:客户端和服务端的数据一旦被抓包,他们之间的交互信息就会泄漏,除非服务器自己对关键的信息进行加密,否则没有什么安全性可言。

简单理解:HTTPS = HTTP + SSL/TLS

SSL/TLS协议:为网络通信提供安全性和数据完整性的一种安全协议,在传输层对网络进行加密。

具体表现:

  1. 认证用户和服务器,保证数据发送到正确的位置
  2. 对发送的数据进行加密,保护数据
  3. 保证数据在发送的过程中数据的完整性

过程:

  1. 客户端向服务端索要公钥(公钥一般放在证书中)
  2. 双方协商对称秘钥
  3. 使用对称秘钥进行加密通信

HTTPS的传输过程:

  1. 服务器必须有一个CA认证合法授权的证书,浏览器保持一个信任的CA机构列表,通过这个机构查询服务器所提供的证书是否合法,只有通过认证的服务器才会被认为是可靠的。
  2. 如果CA认证通过,浏览器会从证书中取的公钥,通过公钥协商出一个随机的对称秘钥,服务器在传输信息的时候使用对称秘钥进行加密,浏览器接收到消息,使用对称秘钥进行解密。

HTTPS的优点:保证了数据的安全性和数据的完整性

HTTPS的缺点:1. CA机构颁发的证书都是需要费用的 2. 需要一定的技术支持 3. 一部分的网站并不关心其安全性

HTTP

  • 概念

    HTTP:超文本传输协议

    特点:客户端每次请求都需要服务端进行响应。一次连接包括建立连接(TCP三次握手)和关闭连接(TCP四次挥手)。

  • HTTP 0.9

    • get请求
  • HTTP 1.0

    • post、head

    • 头信息、状态码、缓存等。

    • 短连接

      每个TCP连接只能发送一个请求

缺点: TCP连接成本高,而每个请求都要进行一次TCP连接。并keep-alive不是标准的Connection字段

  • HTTP 1.1

    • 持久连接

      对于同一个域名,大多数浏览器允许同时建立6个持久连接

    • 管道机制

      pipelining,同一个TCP连接中可以发送多个请求。允许浏览器同时发出A请求和B请求,但是服务器还是按照顺序,先回应A请求,完成后再回应B请求。

    • Host
      指定服务器域名

缺点:一个TCP连接里面的请求是按照次序进行的,只有处理完一个,才能进行下一个,可能造成队头阻塞。优化:减少请求数、分片Sharding(将请求分配到各个主机上),Spriting(多个图片合成一个图片)等。

  • HTTP 2.0

    • 二进制协议(帧)

      头信息和数据体都是二进制的,统称为’帧‘。

    • 多路复用

      复用TCP连接,一个请求中客户端和服务器端可以同时发送多次请求和响应。解决队头阻塞
      在这里插入图片描述

    • 头信息压缩

      1. 头信息使用gzip或compress压缩后再发送;
      2. 客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
    • 服务器推送

      服务器可以预期到客户端请求网页后,很可能会再请求静态资源,所以就主动把这些静态资源随着网页一起发给客户端了。

  • 了解

    • 请求格式
        GET / HTTP/1.0
        User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
        Accept: */* // 声明自己可以接收哪些格式
        Accept-Encoding: gzip, deflate // 声明自己可以接受的压缩方法
        Connection: keep-alive // 要求服务器不要关闭TCP连接
      
    • 响应格式
        HTTP/1.0 200 OK 
        Content-Type: text/plain // 告诉客户端数据是什么格式
        Content-Length: 137582 // 本次响应的数据长度
        Transfer-Encoding: chunked // 
        Content-Encoding: gzip // 说明发送的数据的压缩方法
        Cache-Control: max-age=18000 // 若设置了Cache-Control会忽略Expires
        Expires: Thu, 05 Dec 1997 16:00:00 GMT // 响应过期时间
        Last-Modified: Wed, 5 August 1996 15:55:28 GMT
        Server: Apache 0.84
      
        <html>
          <body>Hello World</body>
        </html>
      

socket套接字

  • 概念

    • TCP/IP协议进行通信的基本单元。
    • 一个套接字必须包括:连接使用的协议、本地主机IP地址、本地进程协议端口、远程主机IP地址、远程进程协议端口。
    • 区分来自不同的应用程序或者连接的通信,实现数据传输的并发服务。
  • 建立socket连接

    • 至少需要一对套接字:一个运行在客户端,一个运行在服务器端
    • 连接过程:服务器监听,客户端请求,连接确认
      在这里插入图片描述
  • socket连接与TCP连接

    创建socket连接时,可以指定传输层的协议是TCP或者UDP,当选择TCP时,一个socket连接就是一个TCP连接。

  • socket连接与HTTP连接

    • HTTP连接需要客户端发送请求之后服务器端才会响应数据。
    • 服务器就可以直接将数据传送给客户端,保持客户端与服务器数据的实时与同步

在这里插入图片描述

TCP

TCP:传输控制协议

  • 其实前两次已经能够通话了,那么为什么要出现第三次握手呢?

    防止乙一直等待而浪费自己的时间。
    
  • 三次握手四次挥手
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值