前端网络

一、IP地址

IP地址的格式:
IP地址分为四个段:xxx.xxx.xxx.xxx,每个段0~255,每个段,都是由8个0、1组成的。
IP地址的分类:
⼀个IP地址分为两个部分:⽹络ID,主机ID
A类:0.0.0.0 ~ 127.255.255.255(⼀个⽹络能有1600+万台)
B类:128.0.0.0 ~ 191.255.255.255(172.16.0.0 ~ 172.31.255.255)
C类:192.0.0.0 ~ 223.255.255.255(192.168.xxx.xxx)
D类:(多播地址)
E类:

二、域名与DNS解析

域名:www.baidu.com

提问:能通过域名直接访问到一台机器吗?
回答:不可以的。

用域名和IP形成对应关系。
⾸先,计算机是不知道域名对应的IP的。
问路由器,如果路由器认识这个域名,就返回⼀个IP,然后计算机访问这个IP。
如果路由器不认识,他就问上⼀层路由器。
如果问到了城市这个级别的路由器的时候,DNS服务器。
如果DNS服务器不认识这个域名,继续向上级DNS服务器查找。

互联⽹建⽴的时候,13台总的DNS服务器。

当向浏览器的地址栏中输⼊⼀个url按回⻋之后,⽹络中都会发⽣什么?
⽐如输⼊的是:123.xyz
看浏览器的缓存。
本机host。
C:windows/system32/drivers/etc/host
127.0.0.1 localhost
0.0.0.0
家⾥路由器
上级路由、城市的LDNS服务器
继续向上级的DNS服务器找。
gDNS服务器。

三、五层网络协议

应用层----------HTTP协议,DNS协议
运输层----------TCP协议、UDP协议
网络层----------IP协议
数据链路层----mac地址
物理层----------通过光纤、铜等传输,0表示低电平,1表示高电平,为1时就电一下,没反应就是0,当然,是有具体时间间隔控制的

四、HTTP协议

请求:Request
请求头
数据体
请求⽅式 url 协议版本

POST /path?a=1&b=2 HTTP1.1
Host:www.baidu.com
Connection: keep-alive
User-Agent:asdasdasd
Cookie

传⽂件的⼀些信息。
GET/POST——HEAD,PUT,DELETE

响应:Response
响应头
数据体
协议版本 状态码 message
属性:值

Get与Post请求⽅式的区别(经典面试题)

  1. 是基于什么前提的?如果什么前提都没有,不使⽤任何规范,只考虑语法和理论上的HTTP协议。
    GET和POST⼏乎没有什么区别,只有名字不⼀样。
  2. 如果是基于RFC规范的。
    (1)理论上的(Specification):GET和POST具有相同语法的,但是有不同的语义。
    get是⽤来获取数据的,post是⽤来发送数据的,其他⽅⾯没有区别。
    (2)实现上的(Implementation):各种浏览器,就是这个规范的实现者。
    常⻅的那些不同:
    1)GET的数据在URL是可⻅的。POST请求不显示在URL中。
    2)GET对⻓度是有限制的,POST⻓度是⽆限的。
    3)GET请求的数据可以收藏为书签,post请求到的数据不可收藏为书签。
    4)GET请求后,按后退按钮、刷新按钮⽆影响,post数据会被重新提交。
    5)GET编码类型:application/x-www-form-url,post的编码类型:有很多种。
    encodeapplication/x-www-form-urlencoded
    multipart/form-data
    6)GET历史参数会被保留在浏览器⾥,psot不会保存在浏览器中的。
    7)GET只允许ASCII.post没有编码限制,允许发⼆进制的。
    8)GET与POST相⽐,GET安全性较差,因为所发的数据是URL的⼀部分。

五、Cookie与Session

1.如果我们⽤JS的变量来存数据,那么在⻚⾯关闭的时候,数据就消失了。
2.保持登录状态是怎么做到的呢?
按照正常的HTTP协议来说,是做不到的。
因为HTTP协议,上下⽂⽆关协议。
3. 所以说前端⻚⾯上,有可以持久化存储数据的东⻄。⼀旦登录成功,我就记载在这个⾥⾯。

Cookie是有限制的。
Cookie是存在浏览器⾥的,不是存在某个⻚⾯上的。是可以⻓期存储的。Cookie即使是保存在浏览器⾥,也是存放在不同的域名下的。

  1. 初始状态:没有登录
  2. 访问百度的登录,输⼊⽤户名,密码。
  3. 如果⽤户名和密码是正确的。百度的后端会向这个域名下,设置⼀个Cookie。写⼊⽤户的基本信息(加密的)。
  4. 以后每⼀次向百度发送请求,浏览器都会⾃动带上这些Cookie。
  5. 服务端(后端)看到了带有ID的cookie,就可以解析这个加密的ID,来获取到这个⽤户本身的ID。
  6. 如果能获取到本身的ID,那么就证明这个⽤户已经登录过了。所以后端可以继续保留⽤户的信息。
    缺点:如果某个坏⼈,复制了我浏览器⾥的cookie,他就可以在他的电脑上登录我的账号了。
    如:XSS注⼊攻击。

Session:数据存在服务器的
数据存在Session上也有缺点
如果⽤户量⾮常⼤,上亿的⽤户。
在⽤户量很⼤的时候,服务器端很耗资源的。
因为后端可能不⽌⼀台服务器,⽤户的登录信息,⼀般只存在⼀台服务器上。
因为⽤户的登录操作,在哪台机器上执⾏的,就⼀般存在哪台机器上。
需要通过反向代理。(轮询,IP哈希。)

六、拓展

B/S结构
Browser/Server——Browser只负责内容的展示,Server负责提供内容。
C/S结构
Client/Server——Client只负责内容的展示,Server负责提供内容。

index.html
页面的本质是什么?

⻚⾯的本质就是⼀个字符串。带有HTML格式的字符串。

浏览器向服务器请求⼀个⻚⾯的本质是什么?
(1)www.baidu.com
(2)服务器接收到这个请求后,服务器想要把这个⻚⾯的内容(HTML格式的字符串)返回给浏览器。
(3)⻚⾯的字符串存在哪⾥呢?存在HTML⽂件⾥。例如:index.html
(4)服务器端要读取⽂件。
(5)将读取出来的内容返回给浏览器。
最后返回的是⼀个字符串,这个字符串的来源可能是⽂件,可能是缓存,可能来⾃于数据库。

七、服务器

服务器:严格的说,服务器是⼀台计算机,这台计算机,只提供服务。(不是⽤户⽤的)
但是,我们常说的这个服务器,指的是服务容器,不是服务器。

服务容器:是⼀个程序。程序可以监听⼀个端⼝。读取⽂件,并且返回。

如果我们想通过访问服务器(服务容器)的⽅式,来访问我们⾃⼰写的⻚⾯。我们就得装⼀个服务容器的程序。

八、跨域访问资源

哪些东⻄属于资源?
js⽂件算吗?js⽂件肯定是算资源的,但是js⽂件是允许被跨域请求的。
css⽂件,jpg,png等。src属性的资源都是可以被跨域请求的。href资源⼤部分都是可以被跨域请求的。
哪些资源算跨域请求的资源?

  1. 后端接⼝的数据。
  2. 其它域的cookie
  3. 其它域的缓存

⻚⾯本身:有协议(http/https),域名,端⼝

要请求的数据:http://www.baidu.com:80

协议,域名,端⼝这三个,有任意⼀个不⼀样就算跨域。

跨域这个行为,发生在哪里?
1.即使跨域了(协议,域名,端⼝号有不⼀样的),请求也可以发出。
2. 服务器端也是可以接收的。
3. 服务器端也是可以正常处理的。
4. 服务器端也是可以正常返回数据。
5. 浏览器也能接收到这些数据。
6. 接收到之后,发现当前⻚⾯的域和请求的域不同,所以判定为跨域。
7. 我们的代码在这等着结果呢,但是因为浏览器判定跨域了,不会把结果传递给我们的代码。

虽然跨域了,但是我们依然需要这个数据,怎么办?
解决跨域问题:
1.后端(别⼈家的)配合我们进⾏跨域。
pan.baidu.com ——> zhidao.baidu.com
(1)JSONP(正常的情况,返回的数据都是JSON格式。JSONP是⼀种特殊的格式。)
(2)后端设置Access-Control-Allow-Origin属性以⽀持跨域。(聊天机器⼈课讲,因为需要nodejs)
2. 后端不配合我们进⾏跨域。
(3)iframe(只能显示,不能控制)
(4)通过后端代理(⾃⼰的后端)(后⾯聊天机器⼈讲,因为需要nodejs)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值