基础问题

  • 说说Http的常用状态码有哪些?

    • 1xx表示信息
    • 2xx表示成功
    • 3xx表示重定向
    • 4xx表示客户端错误
    • 5xx表示服务端错误

    1xx

    代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。

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

    2xx

    代表请求已成功被服务器接收、理解、并接受。

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

    3xx

    表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

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

    4xx

    代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

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

    5xx

    表示服务器无法完成明显有效的请求。这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生。

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

    参考文献

    https://zh.wikipedia.org/wiki/HTTP状态码
    https://vue3js.cn/interview

  • 在浏览器中从输入URL到呈现页面发生了什么?

    直观解析

    graph LR
    解析URL-->DNS查询-->TCP连接-->HTTP请求-->响应请求-->渲染页面
    • 解析URL:判断输入的地址是否是合法的地址还是一个待搜索的关键词
    • DNS查询:对域名进行翻译,得到目标服务器的IP地址
    • TCP连接:得到目标服务器的IP地址后,经过三次TCP握手完成连接
    • HTTP请求:构建请求体,向目标服务器发送HTTP请求
    • 响应请求:服务器构建响应体并返回,页面关闭后四次TCP挥手断开连接
    • 渲染页面:根据不同的资源类型采用不同的解析方式
  • 如何理解UDP和TCP?区别是什么?

    UDP

    UDP(User Datagram Protocol),即用户数据包协议,是一个面向数据报的通信协议。
    形象理解,拿到一份UDP,直接统统转手发送出去这份。

    TCP

    TCP(Transmission Control Protocol),即传输控制协议,是一个面向字节流的通信协议。
    形象理解,发送方TCP会把数据放入一个类似蓄水池的缓冲区域,等到可以发送的时候再进行发送,并根据当前的网络状态来判断报文大小。

    区别

  • 如何理解OSI七层模型?

    graph TD
      应用层-->表示层-->会话层-->传输层-->网络层-->数据链路层-->物理层
  • 如何理解TCP/IP协议?

    TCP/IP协议并不只是含有TCP、IP协议,而是诸多协议的协议簇,以TCP、IP协议最具代表性而命名为TCP/IP协议。
    TCP/IP协议从分析角度不同可以分为四层/五层模型,五层模型一般常用于解析原理,实际运用为四层模型。

    graph TD
      应用层-->传输层-->网络层-->数据链路层

    与OSI七层模型有着显著联系:(上三下二中一一)

    • TCP/IP的应用层 –> OSI的应用层、表示层、会话层
    • TCP/IP的传输层、网络层 –> OSI的传输层、网络层
    • TCP/IP的数据链路层 –> OSI的数据链路层、物理层

进阶问题