j标注:websocket是一个庞大的学习任务,这里暂时只记录前三种,websocket等系统学完了node之后再说。
------------------------------------------------------------------------------------------------
对于后台而言,除非特别标注,否则表单/ajax/jsonp提交并没有区别,最后都是“表单式”提交。四种数据交互各自的不同:
表单:通过浏览器本身功能实现,能够“稳定”提交。
ajax:通过js实现的功能,不够稳定,但是用户体验好一些。单工通信。跨域准备工作复杂。
jsonp:跨域。安全性差,基本被ajax淘汰。
websocket:性能高,比ajax性能要高10-7000倍(便于同步一些小说之类的大文件)。自上世纪70年代有linux就有的一种“古老的技术”socket,只是没有运用到web上,而成为webscoket。双工通信(服务器可以主动联系客户端,最近几年兴起原因之一)。跨域。
--------------------------------------
跨域(cross origin) && xss
跨域:www.baidu.con/1.php --->www.360buy.com/2.html
xss:人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS。在Web安全威胁前10位中,XSS排名第2,仅次于代码注入(Injection)。在跨域的过程中,原网站从被跨域网站(此时的被跨域网站往往非集团下网站)进行信息的获取的时候,被跨域网站往往会被注入不良信息,当这些信息到达原网站的时候,如果没有信息校验等一系列的保护措施(程序员操作不当,相应的代码偷工减料),这些恶意代码会污染自身网站。
因此,浏览器为了保护用户以及开发者,往往会主动的禁止跨域的存在。
跨域的必要性:
1.第三方委托。比如常见的微信登/陆微博登陆等等。
2.一些个具体的网站可能因为历史的原因发展的需要存在多个网址。比如t.sina.com-----weibo.com ;jd.com ---www.360buy.com
DDP协议(Distributed Data Protocol,分布式数据协议):一种新型的客户端与服务端的实时通信协议,Meteor框架的双向实时数据更新机制底层使用的就是DDP,目前兼容性不是很好。
------------------------------------------------
RFC:Request For Comments(RFC),是一系列以编号排定的文件。简单的来说,互联网上的所有的协议都是以RFC来编号的。它的存在是以给其他的互联网的协议进行编号的形式而存在的。比如说,http是rfc 2616号协议,https是rfc 2818号协议。
osi参考模型与实际的tcp/ip五层模型
物理层:通常是物理学/通信/通信材料学所要考虑的范围。
数据链路层:内网协议。指的是从电脑/手机到路由器之间的通信方式。
网络层:外网协议。内网上的信息传输到外网(主干网)之后,再进行传播所采用的协议。用于分配网络ip地址。常见的比如有ip协议。
传输层:能在外网上传播还不够,还需要保证传输的准确性,因此传输层的主要工作就是保证传输的正确率(往往是通过信息的复用或者操作的复用来提高准确性,比如发现错误重传)。常见的协议有udp协议和tcp协议。(下面有两者的区别)
会话层:实际中并不存在,因此也几乎没有相对应的协议。
表示层:实际中并不存在,因此也几乎没有相对应的协议。有的时候也叫“表现层”。
应用层:常见的如http协议。
tcp && udp
tcp中的t=“transport”就有“传输”的意思。两者都是传输层协议。不同的是,tcp协议保证传输的正确/传输的质量/传输的顺序,udp协议什么都不保证。udp常常用在需要高实时性 且低延时(视频画面不卡称之为低延时)的场合,比如视频直播(视频卡让人难以接受,视频传输偶尔错误出现几个雪花可以忍受)等等。
-------------------------------
http状态码及其代表的含义
可以浏览器中通过F12-->network来查看,一些大的公司还可以通过自我定义来实现。
1xx 消息
2xx 成功
3xx 重定向
301 永久重定向
302 临时重定向(缓解服务器压力?)
304 确切的来说,是“成功”的一种,表示“缓存(虽然有缓存,但是和服务器还是有通信的,防止需要的数据已经“更新”了,通信的时候,客户端发一次上一次的请求的内容以及获得内容的时间以区别是否更新,如果已经更新了,重发),从缓存拿到相应的数据。
4xx 失败(客户端,通常指的是浏览器)
5xx 失败(服务器端)
-------------------------------------
xml && json
html脱胎于xml,他的格式是这样的:
<person>
<name>jobs</name>
<age>22</age>
<job>前端开发</job>
</person>
使用的时候,xml.getElementsByTagName("person")[0](html抄袭的xml)
而一般的json的格式是这样的:
{"name":"jobs","age":22,"job":"前端开发"}
-------------------------