冯诺依曼式计算机———冯诺依曼(计算机之父)
运算器
CPU与GPU(显卡)
存储器
内存:(断电数据清空,读写速度快)
硬盘(辅存):(数据持久化,读写速度相对较慢)
控制器
主板一些器件
输入设备
键盘,鼠标,麦克风,网口
输出设备
显示器,耳机,网口
IP地址的格式
IP地址分为四个段:x.xxx.xxx.xxx,每个段0~255.
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类:多播地址 224.0.0.1—239.255.255.254
E类:240.0.0.1—255.255.255.254
域名与DNS解析
问:能通过域名直接访问到一台机器吗?
答:不可以的。
域名与IP形成对应关系
首先,计算机是不知道域名对应的IP,
问路由器。如果路由器认识这个域名,就会返回一个IP,然后计算机访问这个IP。如果不认识,他就访问上一层路由器。如果问道城市这个级别的路由器的时候还不认识,就访问DNS服务器,如果DNS服务器叶不认识,就像上一层DNS服务器查找。
互联网建立的时候,有13台总的DNS服务器 (现在应该不止)
面试题:当向浏览器的地址栏中输入一个url按下回车之后,网络中都会发生什么?
答:先看浏览器的缓存,认识的话直接访问,不认识
看本机的host (本机的host不会缓存)
127.0.0.1表示本机,localhost
0.0.0.0表示不知道IP,当不知道IP时默认到本机
在看家里路由器,
没有看上级路由器,城市的DNS服务器。如上。
直到找到gDNS服务器,即总DNS服务器,这里面一定有
五层网络模型
应用层 ------HTTP协议,DNS协议
运输层-------TCP协议,UDP协议
网络层--------IP地址–IP协议
数据链路层------mac地址
物理层
GET与POST有什么区别?(面试题)
1,是基于什么前提的?如果上面前提都没有,不使用任何规范,只考虑语法和理论上的HTTP协议。那GET与POST几乎没有什么区别,只有名字不一样。
2,如果是基于RFC规范的。
(1)理论上的(Specification):GET与POST具有相同的语法,但语义不同,get是用来获取数据的,post用来发送数据的,其他方面没什么不同。
(2)实现上的(Implementation):各个浏览器就是这个规范的实现者。(基于浏览器实现上的)
常见的不同:
1)GET请求的数据在URL上可见。POST请求不显示在URL中。(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历史参数会被保存在浏览器里,post不会保存在浏览器里
7)GET只允许ASCII编码,POST没有编码限制,允许发二进制。
8)GET与POST相比,安全性较差(两个都是不安全的),因为发的数据是URL的一部分。
Cookie与Session
保持登录状态是怎么做到的?
按照正常的http协议是做不到的,因为它是上下文无关协议。所以cookie是可以持久化存储的,cookie是存储在浏览器的,不是存储在某个页面。可以长期存储(能自己设置),cookie即使存储在浏览器,也是存放在不同的域名下的。cookie缺点:别人复制了cookie的信息可以登录你的账号。(XSS注入攻击)
cookie是存在浏览器里,session存在服务器,session相对安全。
session的缺点:用户量非常大的时候,服务器端很耗资源
发送网络请求
1)直接在地址栏上输入域名
2)location.href=" " (url),可以发出网络请求,但是页面会发生跳转
3)带有src或者href的标签,请求可以发出,服务器可以处理也可以返回,但返回之后能否被使用,还有看浏览器。
4)带有action的标签,如form表单,但发送请求之后,也会跳转页面
5)Ajax
// 要素
// 1,请求方式,get,post
// 2,url
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject(); //ie6兼容
}
xhr.open('get', 'http://developer.duyiedu.com/edu/testAjax'); //这里跨域了,端口默认80
xhr.send();
协议,域名,端口号有任意一个不一样就算跨域,跨域发生在浏览器端(浏览器接收数据),浏览器在接收服务器返回的数据之后,判断为跨域。
哪些资源算跨域请求的资源?
1)后端返回的数据
2)其他域的cookie
3)其他域的缓存
解决跨域问题:
1)后端(别人家的,你要访问的)配合我们进行跨域
(1)JSONP(正常情况下,返回的数据是JSON格式,JSONP是一种特殊的格式)。
(2)后端设置Access-Control-Allow-Origin属性以支持跨域。
2)后端不配好我们进行跨域
(3)iframe标签(只能显示,不能控制)
(4)通过后端代理(自己的后端)
Ajax请求:
// 要素
// 1,请求方式,get,post
// 2,url
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject(); //ie6兼容
}
xhr.open('get', 'http://developer.duyiedu.com/edu/testAjaxCrossOrigin'); //这里open方法还有第三个参数(true或者false),true或者不传表示异步,false表示同步
xhr.onreadystatechange = function () {
// console.log(xhr.readyState)
// readyState==4 表示请求已经完成,已经接收到数据
// status==200 网络请求,结果都会有一个状态码,表示请求是否正常,200表示成功
// 2**表示成功
// 3**表示重定向
// 4**表示客户端错误,404页面没找到
// 5**表示服务端错误.
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
var data = JSON.parse(xhr.responseText); //将其转化为JSON对象
}
}
xhr.send();