来了解下http与https、TCP与UDP吧

httphttps是计算机网络的基础知识点之一,本文对它们做一个介绍与对比,并把http几个版本区别做一下介绍,拓展下自己的知识积累。

HTTP与HTTPS简短介绍

HTTP超文本传输协议,它定义了客户端和服务器之间交换报文的格式和方式,默认使用 80 端口。它使用 TCP 作为传输层协议,保证了数据传输的可靠性。

HTTPS 指的是超文本传输安全协议,HTTPS 是基于 HTTP 协议的,不过它会使用 TLS/SSL 来对数据加密,默认的端口号是 443。第三方没有办法窃听。并且它提供了一种校验机制,信息一旦被篡改,通信的双方会立刻发现。它还配备了身份证书,防止身份被冒充的情况出现。

HTTP

  1. HTTP 有两种连接模式,一种是持续连接,一种非持续连接。非持续连接指的是服务器必须为每一个请求的对象建立和维护一个全新的连接。持续连接下,TCP 连接默认不关闭,可以被多个请求复用。

    采用持续连接的好处是可以避免每次建立 TCP连接三次握手时所花费的时间。 HTTP1.0 使用的非持续的连接,但是可以在请求时,加上 Connection: keep-alive 来要求服务器不要关闭 TCP 连接。HTTP1.1 以后默认采用的是持续的连接。目前对于同一个域,大多数浏览器支持同时建立 6 个持久连接;

  2. HTTP无连接的特性,指的是每次连接只能处理一个请求,收到响应后立即断开连接。但在现在网站动则几十条HTTP请求的情况下,很容易达到浏览器请求上限,并且每次请求都建立新的tcp连接(每次都有三次握手四次挥别)极大的增加了通信开销。为解决这个问题,有人提出了持久连接(也叫长连接、长轮询)。一定时间内,同一域名下的HTTP请求,只要两端都没有提出断开连接,则持久保持TCP连接状态,连接通道可以被多个请求复用;

  3. 管道化:管道化可以不用等待响应返回就可以发送下个请求并按顺序返回响应,这样就能做到请求和响应不再是依次交替的了。可以支持一次性发送多个请求,并一次性接收多个响应。(初次创建连接时不应该启动管线机制,因为服务器不一定支持该协议);

  4. HTTP 是一个无状态的协议,即不会保存关于客户的任何信息。无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息HTTP是做不到的,客户端和服务端是两种身份,客户端请求资源,http帮你建立连接帮你终结传输,下次客户端再来服务端无法区分你的身份是不是和上次是一个身份,也就是说单从http协议上是不能区分两次连接者的身份状态的。解决办法:1 、通过Cookie; 2、通过Session会话保存

  5. cookies机制和session机制的区别:(1)、cookies数据保存在客户端。session数据保存在服务端; (2)、cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗; (3)、session安全一点,但是占用服务器资源。

  6. Http协议由什么组成(HTTP请求报文与响应报文格式):
    请求报文包括三部分:(1)请求行:包含请求方法,URL,HTTP 版本字段;(2)请求首部字段;(3.请求内容实体。

    响应报文包含三部分:(1)状态行:包含HTTP版本,状态码,相应的状态信息;(2)响应首部字段(3)响应内容实体。

  7. 常见的HTTP相应状态码

    一般 1XX 代表服务器接收到请求、2XX 代表成功、3XX 代表重定向、4XX 代表客户端错误、5XX 代表服务器端错误。

        200-服务器已成功处理了请求并提供了请求的网页;
        202-服务器端已经收到请求消息,但是尚未进行处理;
        204-服务器成功处理了请求,但没有返回任何内容;
        301-永久移动(重定向);
        302-临时移动;
        304-所请求的资源未修改;
        400-客户端请求的语法错误;
        404-请求的资源不存在;
        500-服务器内部错误;
        503-服务器目前无法使用(由于超载或停机维护)通常,这只是暂时状态。
    

    301和302的区别:301永久移动。请求的资源已被永久的移动到新URL,返回信息会包括新的URI,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL代替。比较常用的场景是使用域名跳转,301请求可以缓存。302用来做临时跳转,资源只是临时被移动。客户端应继续使用原有URL,比如未登陆的用户访问用户中心重定向到登录页面。

  8. HTTP中有哪些请求方式

        GET:一般只被用于向服务器获取数据
        POST:用于传输资源,通常会造成服务器资源的修改
        HEAD:获得报文首部,与GET方法类似,只不过不返回报文主体,一般用于验证URL是否有效
        PUT :用于上传文件到服务器
        DELETE:用于删除服务器上的资源
        OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,允许客户端查看、测试服务器性能
        TRACE:回显服务器收到的请求,主要用于测试或诊断
    

    Post 和 Get 的区别?

    (1)从应用场景上来说,一般 Get 请求用于对服务器资源不会产生影响的场景,比如说请求一个网页。
    而 Post 一般用于对服务器资源会产生影响的情景。比如注册用户这一类的操作。
    (2)因为不同的应用场景,所以浏览器一般会对 Get 请求缓存,但很少对 Post 请求缓存。
    (3)从发送的报文格式来说,Get 请求的报文中实体部分为空,Post 请求的报文中实体部分一般为向服
    务器发送的数据。
    (4)Post 相对 Get 安全一点,因为Get 请求都包含在 URL 里且会被浏览器保存历史纪录。Post 不
    会,但是在抓包的情况下都是一样的。
    (5)URL有长度限制,会影响 Get 请求。
    

HTTPS(主要从与HTTP对比来介绍)

  1. HTTP 与 HTTPS 有哪些区别

    1、HTTP 是超文本传输协议,采用明文传输数据,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺
    陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
    2、HTTP 连接建立相对简单, TCP 三次握手之后就可以报文传输。而 HTTPS 在 TCP 三次握手之后,还
    需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
    3、HTTP 的端口号是 80,HTTPS 的端口号是 443。
    4、HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
    
    
  2. HTTPS 解决了 HTTP 的哪些问题

    HTTP 由于是明文传输,所以安全上存在以下三个风险:
    1、窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
    2、篡改风险,比如强制入垃圾广告,视觉污染,用户眼容易瞎。
    3、冒充风险,比如冒充淘宝网站,用户钱容易没。
    HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:
    1、信息加密:交互信息无法被窃取
    2、校验机制:无法篡改通信内容,篡改了就不能正常显示
    3、身份证书:举个例子,证明京东是真的京东网
    
  3. TLS两种加密方式
    对称加密
    这种加密方式就是加密解密使用相同的密钥,两边都知道如何加密解密。(特点:加密解密同用一个密钥)。但是存在一个问题就是只要拿到密钥任何人都能破解密码。因为传输数据都是走的网络,如果将秘钥通过网络的方式传递的话,一旦秘钥被截获就没有加密的意义了。
    非对称加密:有公钥私钥之分,公钥所有人都可以知道,可以将数据用公钥加密,对方收到被加密的信息后,再使用自己的私钥进行解密。(特点:使用两把密钥)

  4. HTTPS采用混合加密机制(重要)
    非对称加密安全但是慢,HTTPS为了兼顾安全与效率,同时使用了对称加密和非对称加密。数据是被对称加密传输的,对称加密过程需要客户端的一个密钥,为了确保能把该密钥安全传输到服务器端,采用非对称加密对该密钥进行加密传输,总的来说,对数据进行对称加密,对称加密所要使用的密钥通过非对称加密传输

  5. TLS握手过程

    1. 第一步,客户端向服务器发起请求,请求中包含使用的协议版本号、生成的一个随机数、以及客户端支持的
    加密方法。
    2. 第二步,服务器端接收到请求后,确认双方使用的加密方法、并给出服务器的数字证书、以及一个服务器生
    成的随机数。
    3. 第三步,客户端确认服务器证书有效后,生成一个新的随机数,并使用数字证书中的公钥,加密这个随机
    数,然后发给服务器。
    4. 第四步,服务器使用自己的私钥,来解密客户端发送过来的随机数。
    5. 第五步,客户端和服务器端根据约定的加密方法使用前面的三个随机数,生成对话秘钥,以后的对话过程都
    使用这个秘钥 来加密信息。
    

    握手阶段有三点需要注意

    (1)生成对话密钥一共需要三个随机数。
    (2)握手之后的对话使用"对话密钥"加密(对称加密),服务器的公钥和私钥只用于加密和解密"对话密
    钥"(非对称加密),无其他作用。
    (3)服务器公钥放在服务器的数字证书之中。
    

HTTP有哪些优点

HTTPS突出一个安全的特性,那http本身又有哪些独特的优点呢?

  1. 简单:HTTP 基本的报文格式就是 header + body。
  2. 灵活:通过一个HTTP协议可以完成不同类型的数据传输所以比较灵活
  3. 可靠:因为http是基于tcp/ip传输的,所以相对可靠
  4. 无状态:无状态的好处,因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。但是它也有缺点:无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。例如登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的,每次都要问一遍身份信息。

接着来了解下TCP与UDP吧。

TCP、UDP都是作用于传输层的数据传输协议。既然作用相同,那么两种协议之间就必然会存在相同之处与不同之处。***

TCP、UDP区别

  1. TCP 是面向连接的,UDP 是面向无连接的
  2. UDP程序结构较简单
  3. TCP 是面向字节流的,UDP 是基于数据报的
  4. TCP 保证数据正确性,UDP 可能丢包
  5. TCP 保证数据顺序,UDP 不保证

什么是面向连接,什么是面向无连接

  1. 在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会
  2. UDP想发数据就可以开始发送了。并且也只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作。

TCP 为什么是可靠连接

  1. 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
  2. TCP 报文头里面的序号能使 TCP 的数据按序到达
  3. 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
  4. TCP 拥有流量控制及拥塞控制的机制

UDP的不可靠性

  1. 首先不可靠性体现在无连接上,通信都不需要建立连接,想发就发,这样的情况肯定不可靠。
  2. 并且收到什么数据就传递什么数据,并且也不会备份数据,发送数据也不会关心对方是否已经正确接收到数据了。
  3. 再者网络环境时好时坏,但是 UDP 因为没有拥塞控制,一直会以恒定的速度发送数据。即使网络条件不好,也不会对发送速率进行调整。这样实现的弊端就是在网络条件不好的情况下可能会导致丢包,但是优点也很明显,在某些实时性要求高的场景(比如电话会议)就需要使用 UDP 而不是 TCP。

UDP的优点

  1. 虽然 UDP 协议不是那么的可靠,但是正是因为它不是那么的可靠,所以也就没有 TCP 那么复杂了,需要保证数据不丢失且有序到达。
  2. 因此 UDP 的头部开销小,只有八字节,相比 TCP 的至少二十字节要少得多,在传输数据报文时是很高效的。
  3. UDP 不止支持一对一的传输方式,同样支持一对多,多对多,多对一的方式,也就是说 UDP 提供了单播,多播,广播的功能。

UDP的使用场景

  1. 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
  2. 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
  3. 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候。
  4. 直播。直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
  5. 实时游戏。游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icecream_cheese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值