目录
1. 一个页面从输入url到页面加载显示完成,这个过程中都发生了什么
2. 线程和进程的区别
3. 为什么会存在跨域问题
4. 跨域请求资源的方法
5. http方法
6. HTTP协议的主要特点及组成
7. HTTP和HTTPS
8. HTTP状态码
9. 三次握手 四次挥手
10. TCP和UDP的区别
11. get和post的区别
12. Ajax有关
13. cookie的弊端
14. localStorage,sessionStorage区别
1. 一个页面从输入url到页面加载显示完成,这个过程中都发生了什么
(1)当发送一个URL请求时,浏览器会开启响应的一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询,找到对应的ip地址
(2)浏览器与远程web服务器通过TCP三次握手来建立一个TCP/IP连接。
(3)一旦建立连接,浏览器会通过该连接向远程服务器发送HTTP的GET请求。远程服务器找到资源后并使用HTTP响应返回该资源。
2. 线程和进程的区别
首先
进程:是执行中的一段程序,一旦一段程序被载入到内存中并准备执行,它就是一个进程
线程:单个进程中的每个任务就是一个线程。
一个线程只能属于一个进程,但是一个进程可以有多个线程
3. 为什么会存在跨域问题
因为浏览器中的同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。
4.跨域请求资源的方法
(1)如果浏览器支持Access-Control-Allow-Origin,就在被请求的Response header中加入
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');
(2)如果浏览器不支持,就通过Nginx反向代理,满足浏览器的同源(源是由URL,主机名,端口号组成)策略实现跨域
(3)通过jsonp来解决跨域,但是只能发GET请求-
通过在文档中嵌入一个<script>标记从另一个域中返回数据
标记来从另一个域中返回数据标记来从另一个域中返回数据
5. http方法
get:请求资源
POST:传输资源
HEAD:获取报文首部资源
PUT:更新资源
DELETE:删除资源
6. HTTP协议的主要特点及组成
简单快速、灵活、无连接、无状态
简单快速:统一资源服务器、资源地址时固定的,请求资源只需传送对应的路径和方法即可
灵活:HTTP允许传输任意类型的数据对象。同一个http协议可以完成不同数据类型的传输
无连接:每次处理完请求后,连接就会断开
无状态:每次请求处理完断开,都不会有记录信息,再次请求,服务端也不能识别是否时同一个客户端。
组成:
报文分为:请求报文、响应报文
请求报文包括:
-请求行:主要包括请求方法、页面地址、协议版本
-请求头:由KEY/value组成,告诉服务端需要的资源类型
-空行:表示请求头结束,下边的都是请求体内容
-请求体:包括请求的一些数据
响应报文:响应行、响应头、空行与请求报文相差不多
7. HTTP和HTTPS
二者承载于不同的协议之上,造成了二者的差异
https之所以比http安全,是因为他利用ssl/TLS协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。保障了传输过程的安全性
8. HTTP状态码
hTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码类型
1**:信息,服务器收到请求,需要请求者继续执行操作
2**:成功,操作被成功接收并处理
3**:重定向,需要进一步操作以完成请求
4**:客户端错误,请求包含语法错误或无法完成的请求
5**:服务器错误,服务器在处理请求过程中发生了错误
200 请求成功。
206 部分内容。服务器成功处理了部分get请求
迅雷等通过此类(响应实现断点续传或者将一个大文档分解为多个下载段同时下载)
http请求字段range:
格式: Range: bytes=start-end
请求资源的部分内容(不包括响应头的大小),单位是byte,即字节,从0开始.
如果服务器能够正常响应的话,服务器会返回206 Partial Content 的状态码及说明.
如果不能处理这种Range的话,就会返回整个资源以及响应状态码为 200 OK.
http的header分割符:\r\n
301 永久移动,请求资源已被永久的移动到新的URL
302 临时移动 资源只是临时被移动。客户端应继续使用原有URI
400 客户端请求的语法错误,服务器无法理解
401 请求需要用户的身份认证
403 服务器理解客户端的请求,但是拒绝执行此请求
404 服务器无法根据客户端的请求找到资源
500 服务器内部错误,无法完成请求
503 超载或系统维护,服务器暂时无法处理客户端的请求
9. 三次握手 四次挥手
建立TCP的话,需要三次握手才能建立,而断开连接则需要四次挥手
三次握手:通俗描述就是(最主要是防止已过期的连接再次传到被连接的主机)
三次握手改成仅需要两次握手,可能发生死锁
(1) A对B说:我的序号是x,我要向你请求连接;(第一次握手,发送syn包,然后进入syn-send状态)
(2)B听到之后对A说:我的序号是y,期待你的下一句是x+1,同意建立连接(第二次握手,发送ack-syn包,然后进入syn-rcvd状态)
(3)A听到B说同意建立连接之后,对B说:已确认你同意和我连接(确认号ack=y+1,确认ACK=1,序列号seq=x+1)。(第三次握手,A已经进入established状态)
(4)B听到A的确认后,也进入established状态
四次挥手:通俗描述就是
(1) A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(序列号seq=u,终止FIN=1)。(第一次挥手,A进入FIN-WAIT-1)
(2)B收到消息后说:收到,你要关闭连接了。(序列号seq=v,
确认号ack=u+1,确认ACK=1)(第二次挥手,B进入CLOSE-WAIT)
(3)A收到B的确认后,等待了一段时间,因为B可能还有话要说。(此时A进入FIN-WAIT-2)
(4)B说完了它要说的话(只是可能还有话要说)之后,对A说,我要关闭连接了。(序列号seq=w,确认号ack=u+1,终止FIN=1,确认ACK=1)(第三次挥手)
(5)A收到B要结束的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,A进入到CLOSED状态)
(6)B收到A的确认后,也进入CLOSED状态
10. TCP和UDP的区别
Tcp是传输控制协议,UDP是用户数据报协议
TCP面向连接;UDP是无连接的
TCP传输数据比较慢,但是无差错,不重复,不丢失,基于字节流的运输层通信协议;UDP则具有较好的实时性,工作效率高,适用于高速传输和实时性较高的通信,但是不保证可靠交付。
TCP对系统资源要求较多,UDP对系统资源要求较少15. HTTP和HTTPS
二者承载于不同的协议之上,造成了二者的差异
https之所以比http安全,是因为他利用ssl/TLS协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。保障了传输过程的安全性
11. get和post的区别
GET请求把参数包含到URL里,POST通过request body来传递函数,
大多时候get用来获取数据,post用来传递数据
但其实get请求里也可以添加request body,post可以带上url参数
但是由于服务器原因,可能会选择忽略这些数据。
然后GET是产生一个数据包,post产生两个数据包
对于GET请求来说,浏览器会把HTTP header和data一次性发送出去,
而post先发送HTTP header 服务器返回100 continue,再发送data
12. Ajax有关
Ajax是无需重新加载页面,就能够更新部分网页的技术
优点:可以实现局部刷新
缺点:不支持浏览器back按钮
暴露了与服务器交互的细节
对搜索引擎的支持比较弱
不容易调试
如何创建ajax:
(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.
(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
(3)设置响应HTTP请求状态变化的函数.
(4)发送HTTP请求.
(5)获取异步调用返回的数据.
(6)使用JavaScript和DOM实现局部刷新.
13. cookie的弊端
cookie是由服务器生成并发给客户端的小量信息,大小为4kb左右,主要用途来保存登陆信息
cookie:数量和长度的限制
安全性问题:如果被拦截,就可获取所有的session信息
每次访问都要传送cookie给服务器,浪费带宽
有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
14. localStorage,sessionStorage区别
localstorage和sessionstorage大小为5mb左右,仅在浏览器中保存
sessionStorage用于本地存储一个会话中的数据,这些数据只有同一个会话的页面才能访问,并且当前会话销毁后,数据也销毁。
Localstorage用于持久化的本地存储,除非手动删除,不然一直存在。
网友评论