Java 网络编程,Http 协议,Https 协议,Tcp/Ip 协议,三次握手以及四次挥手, Http 长链接和短连接概念以及区别,对称加密,非对称加密原理等

Posted haijiao12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 网络编程,Http 协议,Https 协议,Tcp/Ip 协议,三次握手以及四次挥手, Http 长链接和短连接概念以及区别,对称加密,非对称加密原理等相关的知识,希望对你有一定的参考价值。

  • Http协议与Https协议

    • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

    • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    • HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

    • HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

    • HTTPS和HTTP的区别主要如下:

      1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

        2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

        3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

        4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    • Https的优点:

      • 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

        (2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

          (3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

          (4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

      • 缺点:

        • (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

          (2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

            (3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

            (4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

            (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

Tcp/IP协议

  • 它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。

    互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。

三握四挥

    • 认位ACK:当ACK=1时,确认号ack才生效。

    • 确认号ack:期望收到的下一个报文段的第一个数据字节的序号,

    • 同时选择一个初始序列号seq=x;

  • 四次挥手

    • 段首部的终止控制位FIN=1,序号seq=u

    • :为什么A要等待2MSL的时间?

  • 为了保证A发送的最后一个报文段能够到达B。因为这个 ACK 有可能丢失,从而导致处在 LAST-ACK 状态的服务器收不到对 FIN-ACK 的确认报文。服务器会超时重传这个 FIN-ACK,接着客户端再重传一次确认,重新启动时间等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待 2MSL,而是在发送完 ACK 之后直接释放关闭,一旦这个 ACK 丢失的话,服务器就无法正常的进入关闭连接状态。

  • 可以防止已失效的报文段。客户端在发送最后一个 ACK 之后,再经过经过 2MSL,就可以使本连接持续时间内所产生的所有报文段都从网络中消失,从保证在关闭连接后,不会有仍在网络中滞留的报文段去骚扰服务器。

  • 为什么建立连接三次,断开连接四次?

    • 因为建立连接时,服务器的确认 ACK 和请求同步 SYN 可以放在一个报文里,而断开连接时,服务器可能还有数据要传送,因此,必须先发一个客户端断开连接请求的确认 ACK,以免客户端超时重传,待服务器的数据传送完毕后,再发送一个请求断开连接的报文段。

    • 断开时次数比连接多一次,是因为连接过程,通信只需要处理「连接」,而断开过程,通信需要处理「数据+连接」。

    • 为什么要四次挥手?

        注:TCP 是全双工通信,因此必须两个方向分别断开连接

      • A 向 B 发送一个连接释放请求报文,代表 A 的数据传送完了,请求释放连接;

      • B 收到后,B 立即向 A 发送一个确认报文,代表 B 已经知道 A 没有数据要传送了,但是 B 可能还有数据要向 A 传送;

      • B 的数据传送完后,向 A 发送一个连接释放请求报文,代表 B 的数据也传送完了,请求释放连接;

      • A 收到后,也立即向 B 发送一个确认报文,同时等待 2MSL 后,连接断开。

长短连接

  • 实质上是TCP协议的长连接和短连接

  • HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。

  • IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。

  • TCP有可靠,面向连接的特点。

  • 在HTTP/1.0中,默认使用的是短连接。

    • 也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

      如果客户端访问的某个html或其他类型的Web资源,如javascript文件、图像文件、CSS文件等。

      当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。

  • 但从HTTP/1.1起,默认使用长连接,用以保持连接特性。

    • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭。

      如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

  • 长连接短连接区别:

    • 1.服务器端空间管理上:

      Keep-Alive不会永久保持连接,因为TCP连接将会越来越多,直到把服务器的TCP连接数量撑爆到上限为止,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间;

      短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。

    • 2.时间上:

      • 在客户请求频繁的情况下:若使用短连接,将在TCP的建立和关闭操作上浪费时间和带宽;

        若使用长连接,就可以节省很多这样的消耗;

  • 长连接有两个问题:

    a.HTTP 1.1 基于串行文件传输数据,因此这些请求必须是有序的,所以实际上我们只是节省了建立连接的时间,而获取数据的时间并没有减少

    b.最大并发数问题,假设我们在 Apache 中设置了最大并发数 300,而因为浏览器本身的限制,最大请求数为 6,那么服务器能承载的最高并发数是 50

对称加密和非对称加密

  • 非对称加密

    • 用公钥加密用私钥解密

    • b.加密、解密相对于对称加密效率更低,但是比对称加密更安全。

    • 公钥可能被中间人伪造,造成数据不安全。

  • Https

  • 总结:

    • 对称加密的效率最高

    • 数字证书、对称加密由于效率比较低适合做身份验证

    • https底层用的还是对称加密传输数据,所谓的数字证书、非对称加密都是为了验证对方的身份。

以上是关于Java 网络编程,Http 协议,Https 协议,Tcp/Ip 协议,三次握手以及四次挥手, Http 长链接和短连接概念以及区别,对称加密,非对称加密原理等的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议和HTTPS协议

Http协议和Https协议

Http协议和Https协议

网络安全科普 | HTTP和HTTPS是什么?有什么区别?

Http协议和Tomcat服务器

HTTP和HTTPS有什么不同