前端面试频次比较高的网络基础知识(详细版)

183 阅读8分钟

1、域名和DNS解析

www.baidu.com --> 域名
问:能不能通过域名直接访问到一台机器吗?
答:不可以。
1、用域名和IP形成对应关系。
首先,计算机是不知道域名对应的IP的。
其次,问路由器,如果路由器认识这个域名,就会返回一个IP,然后访问这个IP。
如果路由器不认识,他就问上一层路由器。如果问到了城市这个级别的路由器的时候,属于DNS服务器。
如果DNS服务器不认识这个域名,继续向上级DNS服务器查找,直到查找到总的DNS服务器,总的DNS服务器一定存在这个域名/IP。
互联网建立时候,建立了13台总的DNS服务器。
重点题型:
**当向浏览器的地址栏中输入一个URL按下回车键的时候会发生什么?**
1、查看浏览器缓存是否存在该域名。
2、如果没有查看本机host。(本机IP127.0.0.1 / localhost,他是不缓存的)
3、如果没有,就会查找家里的路由器 --> 上级路由、城市的LDNS服务器 --> 上级DNS服务器 --> gDNS服务器。

2、五层网络模型

1、应用层(http协议,DNS协议)
http协议分为两部分:
(1)请求:request (请求方式 路径 协议版本)
通过浏览器发送一个http请求:
TCP协议/IP协议(自己的IP地址,对方的IP地址,对方的域名,端口)请求头(http协议)
一个请求的发送会通过五层网络模型自上而下层层加密,然后通过操作系统网络发送到服务器,服务器再自底向上层层解析,得到请求内容。
    (2)响应:response(协议版本,状态码,信息message)
2、运输层(TCP协议、UDP协议)
3、网络层(IP地址-- IP协议)
4、数据链路层
5、物理层
软件部分面向123,硬件主要面向45

3、getpost请求方式的区别

1、首先要清楚是基于什么前提的:
如果什么前提也没有,不适用任何规范,只考虑语法和意义上的HTTP协议。get和post几乎没有什么区别,只是名字不一样。
2、如果是基于的:
(1)理论上:get和post具有相同的语法,但是有不同的意义。get是用来获取数据的,post是用来发送数据的,其他没有区别。
(2)实现上:各种浏览器就是这个规范的实现者。
常见的不同点:
    1get的数据在浏览器URL是可见的,post请求数据不显示在URL中。
    2get对长度是有限的,post则对长度没有限制。
    3get请求的数据可以收藏为书签,post请求到的数据不可以。
    4get请求后,按后退按钮、刷新按钮无影响,post数据会被重新提交。
    5get编码类型:application、x-www-form-url,post有很多种。
        比如:encodeapplication/x-www-form-url-encoded,(经过编译加密的)
        multipart/from-data(发文件)
    6get请求的历史参数会被保存在浏览器里,post不会保存。
    7get只允许ASCII编码,post没有编码限制,允许发二进制。
    8get和post相比,get的安全性比较差,因为所发的数据在URL的一部分。(两者相比而言,其实post的安全性也不高)

4、怎样能够发送一个http请求

1、在浏览器地址栏输入网址。(代码无法控制)
2、location.href=“URL” 发出网络请求,但是页面会发生跳转。
3、带有src属性的标签,比如<img src="图片地址"/>,请求能够发出,服务端可以处理,也可以返回,但是返回之后能否被应用,还要看浏览器。(无法处理返回结果)
4、带有herf="url" 属性的标签,比如<link/>、<a/>,请求能够发出,服务端可以处理,也可以返回,但是返回之后能否被应用,还要看浏览器。(无法处理返回结果)
5、带有action=“”属性的标签,比如<form>表单,可以向后端发送请求。但是发出请求后页面会跳转。
6、ajax请求。(不支持跨域)

5、跨域访问资源

1、哪些东西属于资源
js文件,但js文件是允许被跨域的。
css文件,图片、音频等。src属性的资源都是可以被跨域的,href请求大部分都是被允许跨域的。
2、哪些资源属于跨域请求的资源
(1)后端接口数据
(2)其他域的cookie
(3)其他域的缓存,local/session
3、什么是其他域?怎样算跨域?
页面本身:有协议(http/https),域名,端口(http默认端口号是:80,https默认443)要请求的数据:xxxx 。
协议、域名、端口号,有任意一个不相同就会发生跨域。
4、跨域这个行为都发生在哪里?
(1)即使跨域了(未达成同源策略),请求也是可以发送的。
(2)服务端也是可以接受的,也是可以返回数据的,浏览器也能接受这些数据。
(3)浏览器接受到这些数据后,发现请求的(协议、域名、端口号)与当前页面不同时,判定为跨域。
(4)我们之前的代码等着返回的结果呢,但是发生了跨域,浏览器不会把结果返回给我们。
5、怎样解决跨域问题
(1)后端(别人家的)配合我们进行跨域。
    1)JSONP(正常情况,返回数据都是JSON格式。JSON是一种特殊格式)。
    2)后端设置Access- Control- Allow- Origin(值为*)属性以支持跨域。(涉及到nodejs)
(2)后端不配合我们跨域。
    1)iframe(只能显示,不能操作控制)
    2)通过后端代理(自己的后端)(涉及到nodejs)
6、jsonp格式的特殊性?
    发送请求的时候会带上一个回调函数(call back);
    返回的结果不是json,而是callback名++ json + );
    **jsonp跨域,只能使用get方法,如果我们设置了post请求方法,jquery会自动转为get方法。**
    **但是,不是在jsonp中只能用get方法,也不是所有的post都会被转换为get**
    jquery会先判断是否同源,如果同源,设置什么方法就是什么方法,如果不同源,不管设置什么,都会改为get方法
7、jsonp原理
(1)首先jquery判断该请求是否与当前页面的域是否同源,如果同源就没有跨域的事了。
(2)如果不同源,创建一个script标签。
(3)随机生成一个callback的名,并且创建一个名为callback的函数。
(4)设置标签的src属性,并且将值设置为要请求的地址。
(5)将callback作为参数拼接在后面。
    ===============以上为前端部分==============6)后端接收到请求后准备要返回的数据。
(7)后端拼接数据,将要返回的数据用callback的值和括号包裹起来。
    例如:callback= abc1234,要返回的数据为{"a": 1 ,"b" : 2}
    拼接的结果为:abc1234({"a":1,"b": 2});
(8)将结果返回。
    ===============以上为后端部分==============9)浏览器接受到内容,并且会当做js代码执行。
(10)执行名为abc1234的函数并将结果返回,我们就能拿到数据,进行其他操作。

6、浏览器有哪些存储,他们有什么区别

image.png

7、http和https区别

1)两者连接方式完全不同,端口也不同,http默认端口80,https为4432)http连接很简单,是无状态的https协议由SSL+http协议构建的可进行加密传输身份认证和网络协议,比http协议安全3)http是超文本传输协议,信息是明文传输https则是具有安全性的SSl加密传输协议4)https协议需要到CA申请证书,一般免费证书较少,因此需要一定的费用

8、常见状态码解析

200--> (成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的页面。
301-->(永久移动)请求网页已经永久移动到新位置。服务器返回此响应(对get和head请求的响应,会自动将请求跳转到新的位置)
302--> (临时移动)服务器目前从不同位置的网页响应请求,但请求着应继续用原有位置来进行以后的请求。
303--> (查看其他位置)请求着应当对不同位置使用单独get请求来检索响应时,服务器返回此代码。
400--> (错误请求)服务器不理解请求的语法。
401--> (未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403--> (禁止)服务器拒绝请求。
404-->(未找到)服务器找不到要请求的页面。
500-->(服务器内部错误)服务器遇到错误,无法完成请求。
501--> (尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法是可能返回此代码。
502-->(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503-->(服务不可用)服务器目前无法使用(由于超载或停机维护),通常这只是暂停状态。
504-->(网关超时)服务器作为网关或代理,没有及时从上游服务器收到请求。
505-->(http版本不受支持)服务器不支持请求中所用的http协议版本。

结束

第一次发帖,以上是自己整理的内容,如果有错误或者有不规范的地方,请在评论区给予指出,如果阅读之后有所收获请点个赞支持一下。感谢!!!