剑指Offer(更新)之Web前端 & 网络协议(四)

1.Ajax请求有几种返回值

  • Text/HTML格式
    这种返回类型处理很简单,直接就当作字符串用就行了.为了方便使用
  • XML格式
    返回的是一个XML DOM对象,解析其中的数据就类似于HTML DOM 编程. 比如通过name获取标签对象(数组形式),再从该数组中获取需要的标签对象,再从标签对象中获取文本值.
  • 返回json
    选择json和xml类型时时,该方法会把返回的字符串转化为相应的对象,无论是json还是xml,返回值实际上全是字符串

2.Ajax有几部分组成,核心是什么

Ajax: Asynchronous Javascript And Xml;
组成:
Ajax不是新技术,而是之前技术的整合
包括的技术:JavaScript、XML、CSS、XMLHttpRequest、DOM
异步:发送请求以后,不等结果,由回调函数处理。
JavaScript:向服务器发送请求,获得返回结果,更新页面
XML: 用来封装数据
核心:
XMLHttpRequst对象:通过该对象向服务器发送请求。
使用XMLHttpRequest的步骤:
  1)创建XMLHttpRequest对象
  2)设置请求的方法及URL
    xhr.open(“GET/POST”,“url”,true/false),true表示异步请求,false表示同步请求
  3)设置状态改变时的回调函数
    xhr.onreadystatechange=function(){}
    0:未初始化
    1:正在加载
    2:加载完成
    3:请求进行中
    4:请求完成
  4)发送请求
    xhr.send(data),
    如果为post提交,则data为提交的数据,如果为get提交,则参数为null即可。

3.什么是JSON,JSON的优缺点

JSON:json是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性
优点:
1.数据格式比较简单,易于读写,格式都是压缩的,占用宽带小
2.支持多种语言,.JSON格式的编码比较简单
3.JSON的解码难度较低比起XML简单的多
5.JSON和js交互更加方便
6.JSON的速度远远快于XML
缺点:
1.没有XML格式推广的那么广泛
2.没有错误处理
3.安全性
4.支持工具有限

4.web中常用http状态码以及含义

  • 200 OK 请求成功。一般用于GET与POST请求
  • 301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
  • 302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
  • 304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
  • 400 Bad Request 客户端请求的语法错误,服务器无法理解
  • 404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
  • 405 Method Not Allowed 客户端请求中的方法被禁止
  • 500 Internal Server Error 服务器内部错误,无法完成请求

5.Http与Https的区别

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

6.什么是Http协议无状态协议?怎么解决Http协议无状态协议?

无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
解决:

  • 通过Cookies保存状态信息
  • 通过Session保存状态信息
  • 通过表单变量保持状态
  • 通过QueryString保持状态

7.常用的HTTP方法有哪些?

  • GET: 用于请求访问已经被URl(统一资源标识符)识别的资源,可以通过URL传参给服务器
  • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
  • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
  • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
  • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
  • OPTIONS:查询相应URI支持的HTTP方法。

8.TCP与UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP需要验证,UDP不需要
3、TCP传输速度比UDP慢
4、TCP的有数据验证传输过来比较完整,UDP会丢包

9.什么是TCP三次握手,什么是四次挥手?

第一次握手:客户端尝试连接服务器,向服务器发送 syn 包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入 SYN_SEND 状态等待服务器确认
第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个 SYN包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

第一次挥手:
Clien发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:
Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。
第三次挥手:
Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:
Client收到FIN后,Client进入TIME_WAIT状态,发送ACK给Server,Server进入CLOSED状态,完成四次握手。

因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里 发送给客户端。

关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还 能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些 数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会 分开发送。

10.简述从输入网址到获得页面的过程

第一步:浏览器通过DNS解析得到url的IP地址
第二步:浏览器得到服务器端的IP地址后,与服务器端建立TCP连接
第三步:建立TCP连接后,浏览器向服务器发送http请求
第四步:服务器响应http请求,将请求的指定资源发送给浏览器
第五步:浏览器释放TCP连接
第六步:浏览器得到完整的html代码开始进行解析与渲染,如果遇到外部引用的css,图片等资源,同样发送一个http请求。
第七步:浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现出来。

11.TCP/IP模型

7层:

  • 应用层

  • 表示层

  • 会话层

  • 传输层

  • 网络层

  • 数据链路层

  • 物理层

四层:

  • 应用层
  • 传输层
  • 网络层
  • 网络接口层

你可能感兴趣的:(剑指Offer)