• 计算机网络面试


    1.http和https有什么区别?

    HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分用SLL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代而已.

    通常, HTTP直接和TCP通信, 当使用SSL时, 演变成了先和SSL通信, 再由SSL和TCP通信了, 简而言之, 所谓HTTPS, 其实就是身披SSL协议的这层外壳的HTTP.

    在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性的保护这些功能.

    SSL是独立于HTTP的协议, 所有不光是HTTP协议, 其他运行在应用层的SMTP(邮件协议)和Telnet等协议均可配合SSL协议使用. 可以说SSL是当今世界上应用最广泛的网络安全技术.

    SSL采用一种叫做公开密钥加密(Public-key cryptography)的加密方式.

    近代的加密方法中, 加密算法是公开的, 而秘钥是保密的, 通过这种方式得以保持加密方法的安全性.

    加密和解密同用一个密钥的方式称为共享密钥加密, 也被叫做对称密钥加密.

    共享加密方式加密时必须将密钥也发给对方. 在互联网上转发密钥时, 如果通信被监听那么密钥就会落入攻击者之手, 同事也就失去了加密的意义,

    怎么才能安全的转交?

    使用两把密钥的公开密钥加密

    公开密钥加密方式很好地解决了共享密钥加密的困难

    公开密钥加密使用一对非对称的密钥. 一把叫做私有密钥, 另一把叫做公开密钥

    使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 在使用自己的私有密钥进行解密. 利用这种方式, 不需要发送用来解密的私有密钥, 也不用担心密钥被攻击者窃听而盗走.

    另外, 要想根据密文和公开密钥, 恢复到信息原文是异常困难的, 因为解密过程就是在对离散对数进行求值, 这并非轻而易举就能办到的. 退一步讲, 如果能对一个非常大的整数做到快速地因式分解, 那么密码还是在存在希望的, 但就目前的技术来看是不太现实的.

    HTTPS采用共享秘钥加密 和 公开秘钥加密两者并用的混合加密机制. 若密钥能够实现安全交换, 那么有可能会考虑仅适用公开密钥加密来通信. 但是公开密钥加密和共享密钥加密相比, 其处理速度要慢.

    所以应充分利用两者各自优势, 将多种方法组合起来用于通信. 在交换密钥环节适用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密方式.

    遗憾的是, 公开密钥加密方式还是存在一些问题的, 那就是无法证明公开密钥本身就是货真价实的公开密钥. 比如, 正准备和某台服务器建立公开密钥加密方式下的通信时, 如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥. 或许在公开密钥传输途中, 真正的公开密钥已经被攻击者替换了.

    为了解决上述问题, 可以使用有数字证书认证机构其他相关机关颁发的公开密钥证书

    基本流程为:

    • 1.服务器把自己的公开密钥登录至数字证书认证机构
    • 2.数字证书认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书
    • 3.客户端拿到服务器的公钥证书后, 使用数字证书认证机构的公开密钥, 向数字证书认证机构验证公钥证书上的数字签名, 以确认服务器的公开密钥的真实性
    • 4.使用服务器的公开密钥对报文加密后发送
    • 5.服务器用私有密钥对报文解密

    由于HTTPS还需要做服务器,客户端双方加密及解密处理, 因此会消耗CPU和内存等硬件资源, 和HTTP通信相比, SSL通信部分消耗网络资源. 而SSL通信部分, 有因为要对通信进行处理, 所有时间上又延长了.

    针对速度慢这样一个问题, 并没有根本性的解决方案, 我们会使用SSL加速器这种(专用服务器)硬件来改善该问题. 相对软件来讲, 能够提高数倍SSL计算速度.

    既然HTTPS那么的可靠安全, 那为何不所有的Web网站不一直使用HTTPS?

    其中的一个原因是, 因为与纯文本通信相比, 加密通信会消耗更多的CPU资源以及内存资源, 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定会随之减少.

    因此, 如果是非敏感信息则使用HTTP通信, 只有在包括个人信息等敏感数据时, 才利用HTTPS加密通信, 以节省资源. 除此之外, 想要节约购买证书的开销也原因之一.

    2.osi 7层模型各层的作用?

    物理层

    数据链路层:帧

    网络层

    IP协议

    ICMP协议:TCP/IP协议集中的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等

    传输层: TCP/UDP协议

    会话层

    应用层:HTTP/FTP

    ping命令:调用ICMP

    表示层

    2.socket粘包,长连接,短连接,轮询?

    TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。

    长连接

        Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。

    短连接

        Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 
    通讯,比如多个Client连接一个Server.

    2.GET和POST区别?

    GET和POST不是一个请求一个发送消息这么简单,如果面试你怎么说,基本上就挂了,GET和POST都可以向服务器端发送消息

    GET方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔,如下所示:

    http://www.test.com/hello?key1=value1&key2=value2

    而POST直接不在URL里面显示出来,可以在HTTP报文头里面看到后面的串和GET是一样的

  • 相关阅读:
    USACO 6.4 章节
    USACO 6.3 章节 你对搜索和剪枝一无所知QAQ
    USACO 6.1 章节
    USACO 5.5 章节
    USACO 5.4 章节
    USACO 5.3 章节
    99乘法表
    mini整数计算器
    python爬虫-爬取天气预报内容
    python实时监控服务器性能
  • 原文地址:https://www.cnblogs.com/umrx/p/7561540.html
Copyright © 2020-2023  润新知