• 4_其他基础题


    一、状态码
    状态码含义
    1xx Informational(信息性状态码)接受的请求正在处理
    2xx Success(成功状态码)请求正常处理完毕
    3xx Redirection(重定向)需要进行附加操作以完成请求
    4xx Client error(客户端错误)客户端请求出错,服务器无法处理请求
    5xx Server Error(服务器错误)服务器处理请求出错
    • 200(成功) 服务器已成功处理了请求
    • 400:请求无效 产生原因:前端提交请求的字段名或者类型与后端的实体没有保持一致
    • 401:当前请求需要用户验证
    • 403:服务器已经得到请求,但是拒绝执行
    • 404(未找到)服务器找不到请求的网页。
    • 500(服务器内部错误) 服务器遇到错误,无法完成请求。
    • 501(尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
    • 502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    • 503(服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
    • 504(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    • 505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
    二、Get和Post区别

    GET和POST是HTTP协议中的两种发送请求的方法,HTTP的底层是TCP/IP,所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

    1. 传参方式不同

    • GET方法提交的数据会放在URL之后,通过?连接,通过&进行参数分割。
    • POST请求通过request body传递参数,将请求信息放置在报文体中

    2. 传输数据大小
      GET方法提交的数据大小有限制,不能大于2KB(因为浏览器对URL的长度有限制),而POST方法提交
    数据没有限制。

    3. 后退页面

    get后退不会有影响,post后退会重新进行提交

    4. 缓存

    GET请求能够被缓存,会保存在浏览器的浏览记录中,以GET请求的URL能够保存为浏览器书签,Post请求不具有这些功能。

    5. 字符类型

    get只支持ASCII字符,post没有字符类型限制

    6. GET产生一个TCP数据包;POST产生两个TCP数据包。

    • 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
    • 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

    7. 安全性

    GET比POST更不安全

    • Get安全性非常低,参数直接暴露在url中
    • Post传递数据比较隐私,但提交的参数也可以通过F12查看,从安全性考量区别不大。
    PS. 为什么Get的效率比Post高
    • post在接收返回来的数据会先将请求头发送给服务器确认,然后才真正的发送数据,(相当于第一次先向服务器打个招呼,第二次才将数据真正的发过来,get则是直接发送数据。专业的说法是,get产生一个TCP数据包,post产生两个TCP。数据包但并不是所有的浏览器post都会请求两次,火狐浏览器就会请求一次)总结起来就是请求的过程比get更多
    • get会将数据进行缓存
    三、在浏览器输入URL回车之后发生了什么?
    1. URL解析
    2. DNS域名解析
    3. TCP连接
    4. Http请求
    5. 响应请求
    6. 页面渲染
    1. URL解析
    首先判断用户输入的内容是url地址还是待搜索关键字,然后做出响应的操作。
    
    • 1
    2. 域名解析
    解析过程大概如下:
    1、搜索浏览器DNS缓存,浏览器缓存会维护一张域名跟ip地址的映射关系表
    2、如果没有命中则搜索操作系统的DNS缓存
    3、如果还是没有命中,则操作系统将域名发送到本地域名服务器,本地域名服务器通过递归的方式查询自己的DNS缓存,查找
    到后,将结果返回
    4、若本地域名服务器的DNS缓存也没有命中,则本地域名服务器向上级域名服务器进行迭代查询。
        第一步 本地域名服务器先向根域名服务器发起请求,根域名服务器将顶级域名服务的地址返回给本地域名服务器
        第二步 本地域名服务器根据顶级域名服务器地址向顶级域名服务器发起请求,然后得到权限域名服务器地址
        第三步 本地域名服务器通过权限域名服务器地址向权限域名服务器发起请求,然后得到该域名的ip地址
    5、本地域名将IP地址返给操作系统,并且本地域名将该IP缓存起来
    6、操作系统将IP返回给浏览器,并将ip缓存起来
    7、浏览器得到ip地址,并将ip缓存起来
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    3. TCP连接
    在客户端发送数据给服务端之前,会发起TCP三次握手以同步客服端和服务端的序列号和确认号,并交换TCP窗口大小信息
    
    完成三次握手,客户端和服务端可以开始传输数据
    
    • 1
    • 2
    • 3
    4. http请求
    tcp建立成功之后,客户端发送http请求报文到服务端
    
    http请求报文有四部分组成:请求行、请求头、空行、消息体
    
    • 1
    • 2
    • 3
    5. 响应请求
    当服务器接收到客户端的请求之后,会进行逻辑处理,处理完之后,会返回给客户端一个http响应数据,
    响应数据包括三部分:状态行、响应头、响应正文
    
    • 1
    • 2
    6. 页面渲染
    当浏览器接收到服务器的响应数据,会解析html,请求js、css等资源,最后进行页面渲染,呈现给用户。
    页面渲染大概分为五步:
    (1)根据HTML文件解析出DOM Tree
    (2)根据CSS解析出 CSSOM Tree(CSS规则树)
    (3)将 DOM Tree 和 CSSOM Tree合并,构建Render tree(渲染树)
    (4)reflow(重排):Layout根据Render tree进行节点信息计算
    (5)repaint(重绘):Painting根据计算好的信息绘制整个页面
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    四、OSI七层模型和TCP/IP四层模型
    • OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。

    • OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。

    • OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。

    TCP:transmission control protocol 传输控制协议;UDP:user data protocol 用户数据报协议

    OSI七层网络模型TCP/IP四层概念模型对应网络协议
    应用层(Application)应用层HTTP/FTP/TFTP…
    表示层(Presentation)同上Telnet…
    会话层(Session)同上SMTP/DNS
    传输层(Transport)传输层TCP/ UDP
    网络层(Network)网络层IP/ ICMP…
    数据链路层(Data Link)数据链路层FDDI…
    物理层(Physical)同上IEEE802.1A/ IEEE802.2到IEEE802.11
  • 相关阅读:
    高德地图车机版导航
    第三篇、Runnable接口实现多线程
    基于android的旅游信息查询系统APP(ssm+uinapp+Mysql)
    深入探索Stable Diffusion:从原理到应用的全面解析
    分布式事务解决方案详解
    要做出高品质的docker镜像,一个靠谱的dockerfile必不可少!
    python基础02——字符串
    2023年MBA/MPA/MEM模考/密训班11.12盛大开考
    轻量封装WebGPU渲染系统示例<16>- 使用GPU Compute计算(源码)
    P7961 [NOIP2021] 数列
  • 原文地址:https://blog.csdn.net/linxwx/article/details/127759651