HTTP相关

HTTP 与HTTPS的区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理,相对更安全
  • HTTP 和 HTTPS 使用连接方式不同,默认端口也不一样,HTTP是80,HTTPS是443
  • HTTPS 由于需要加密以及多次握手,性能方面不如 HTTP
  • HTTPS需要SSL,SSL 证书需要钱,功能越强大的证书费用越高

UDP和TCP的区别

UDP(用户数据包协议)的特点:

  • UDP不提供复杂的控制机制,利用ip提供面向无连接的通信服务
  • 传输途中出现丢包,UDP也不负责重发
  • 当包到达的顺序出现混乱时,UDP也没有纠正的功能
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为

TCP(传输控制协议)的特点:

  • TCP充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
  • 此外,TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)
  • TCP 提供可靠的服务,传输过程采用流量控制、编号与确认、计时器等手段确保数据无差错,不丢失。UDP 则尽可能传递数据,但不保证传递交付给对方
  • TCP 面向字节流,将应用层报文看成一串无结构的字节流,分解为多个TCP报文段传输后,在目的站重新装配。UDP协议面向报文,不拆分应用层报文,只保留报文边界,一次发送一个报文,接收方去除报文首部后,原封不动将报文交给上层应用
  • TCP 只能点对点全双工通信。UDP 支持一对一、一对多、多对一和多对多的交互通信

如何理解TCP/IP协议

TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络实现信息传输的协议簇

  • TCP

    一种面向连接、可靠、基于字节流的传输层通信协议

  • IP

    用于封包交换数据网络的协议

TCP/IP协议不仅仅指的是TCPIP两个协议,而是指一个由FTPSMTPTCPUDPIP等协议构成的协议簇

TCP/IP协议族按层次分别了五层体系或者四层体系

五层体系的协议结构是综合了 OSI 和 TCP/IP 优点的一种协议,包括应用层、传输层、网络层、数据链路层和物理层

五层协议的体系结构只是为介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构,包括应用层、传输层、网络层(网际互联层)、网络接口层

DNS协议 是什么?说说DNS 完整的查询过程?

DNS(Domain Names System),域名系统,是互联网一项服务,是进行域名和与之相对应的 IP 地址进行转换的服务器

过程:

  • 首先搜索浏览器的 DNS 缓存,缓存中维护一张域名与 IP 地址的对应表

  • 若没有命中,则继续搜索操作系统的 DNS 缓存

  • 若仍然没有命中,则操作系统将域名发送至本地域名服务器,本地域名服务器采用递归查询自己的 DNS 缓存,查找成功则返回结果

  • 若本地域名服务器的 DNS 缓存没有命中,则本地域名服务器向上级域名服务器进行迭代查询。

    1、本地服务器向根域名服务器发送请求,获取顶级域名的地址给本地服务器

    2、本地服务器根据顶级域名地址发送请求,获取权限域名的地址

    3、根据权限域名地址发送请求,最终得到该域名对应的ip

  • 本地域名服务器将得到的 IP 地址返回给操作系统,同时自己将 IP 地址缓存起来
  • 操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起
  • 至此,浏览器就得到了域名对应的 IP 地址,并将 IP 地址缓存起

如何理解CDN,说说实现原理?

CDN 目的是为了改善互联网的服务质量,通俗一点说其实就是提高访问速度

CDN 构建了全国、全球级别的专网,让用户就近访问专网里的边缘节点,降低了传输延迟,实现了网站加速

通过CDN的负载均衡系统,智能调度边缘节点提供服务,相当于CDN服务的大脑,而缓存系统相当于CDN的心脏,缓存命中直接返回给用户,否则回源

HTTP1.0/1.1/2.0的区别

HTTP1.0:

浏览器和服务器只是短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接

HTTP1.1

  • 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用
  • 在同一个TCP连接里面,客户端可以同时发送多个请求
  • 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着
  • 新增了一些请求方法
  • 新增了一些请求头和响应头

HTTP2.0

  • 采用二进制格式而非文本格式
  • 完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行
  • 使用报头压缩,降低开销
  • 服务器推送

HTTP常见的状态码有哪些,适用的场景?

分类:

  • 1 表示消息

    • 100(客户端继续发送请求,这是临时响应):这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应
    • 101:服务器根据客户端的请求切换协议,主要用于websocket或http2升级
  • 2 表示成功

    • 200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回
    • 201(已创建):请求成功并且服务器创建了新的资源
    • 202(已创建):服务器已经接收请求,但尚未处理
    • 203(非授权信息):服务器已成功处理请求,但返回的信息可能来自另一来源
    • 204(无内容):服务器成功处理请求,但没有返回任何内容
    • 205(重置内容):服务器成功处理请求,但没有返回任何内容
    • 206(部分内容):服务器成功处理了部分请求
  • 3 表示重定向

    • 300(多种选择):针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择
    • 301(永久移动):请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置
    • 302(临时移动): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
    • 303(查看其他位置):请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码
    • 305 (使用代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理
    • 307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
  • 4 表示请求错误

    • 400(错误请求): 服务器不理解请求的语法
    • 401(未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    • 403(禁止): 服务器拒绝请求
    • 404(未找到): 服务器找不到请求的网页
    • 405(方法禁用): 禁用请求中指定的方法
    • 406(不接受): 无法使用请求的内容特性响应请求的网页
    • 407(需要代理授权): 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理
    • 408(请求超时): 服务器等候请求时发生超时
  • 5 表示服务器错误

    • 500(服务器内部错误):服务器遇到错误,无法完成请求
    • 501(尚未实施):服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码
    • 502(错误网关): 服务器作为网关或代理,从上游服务器收到无效响应
    • 503(服务不可用): 服务器目前无法使用(由于超载或停机维护)
    • 504(网关超时): 服务器作为网关或代理,但是没有及时从上游服务器收到请求
    • 505(HTTP 版本不受支持): 服务器不支持请求中所用的 HTTP 协议版本

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!