- 网络在计算机体系中的作用是什么?
我们可以将它类比成货运公司+公路管理,数据的传输
- TCP/IP体系分层
- 数据能传输的三个整体的理解:
局域网内:链路层对链路层(类比货运汽车是可以直接到达另一个城市的)
局域网内:应用层对应用层(封装+解包/分用,买东西会经过淘宝,快递,物流)
互联网中:应用层对应用层(ip地址不变的(五元组的作用),mac地址是在变化的)
ip是长期目标,mac是短期目标(局域网内是点对点的)
- 应用层协议
<1> DNS基本原理
<2>HTTP协议
1.HTTP工作在传输层的TCP协议上(真是因为TCP帮助HTTP完成了可靠性)
2 .HTTP的实际运用
3 .理解URL(urlencode(将字符串以url的编码)/urldecode(解码)/queryString(get方法递交的表单或通过url传值采用request.querystring进行获值的方法)/path)
4 .请求/响应的基本格式:(request/response)
http请求:
- 首行: [方法] + [url] + [版本]
- Header:请求的属性,冒号分割键值对,每组属性通过\n分割,遇到空行表示Header结束
- Body:空行后面的内容都是Body,Body允许出现为空的字符串,如果Body存在则在Header中会有一个Content-length属性来标识Body 的长度
http响应:
- 首行: [版本] + [状态码] + [状态码解释]
- Header:请求的属性,冒号分割键值对,每组属性通过\n分割,遇到空行表示Header结束
- Body:空行后面的内容都是Body,Body允许出现为空的字符串,如果Body存在则在Header中会有一个Content-length属性来标识Body 的长度,如果服务器返回了一个html,呢么html的页面就显示在body
请求方法:
响应的状态:
HTTP的常见Header:
- Content-Type: 数据类型(text/html等)
- Content-Length:Body 的长度
- Host:客户端告知服务器,所请求的资源是在哪个端口上(path+port)
- User-Agent:申明用户的操作系统和浏览器版本信息
- referer:当前是从哪个页面跳转过来的
- location:搭配30X的状态码使用,告诉客户端接下来要去哪里访问
- Cookie:用在客户端存储少量信息,通常用于实现会话(session)的功能
Cookie+Session(重点)
1.用户信息
http是一种无状态协议,就是说这一次请求和下一次请求是没有任何关系的,互不认识的,没有关联,这种无状态的好处是快速。坏处是需要进行用户状态保持的场景时【比如登录状态下进行页面的跳转,或者用户多页面共享等场景】,必须使用一些方式和手段比如:session和Cookie
2.Cookie
如上所述,http是一个无状态的协议,但是访问有些资源的时候往往需要经过认证的账户才能访问,而要一直保持在线的状态,所以,Cookie是一种在浏览器端解决的方案,将登陆认证过的信息保存在本地浏览器中,后面每次发送http请求时都会自动带上该信息,就能达到认证用户,保持用户在线的作用。
设置Cookie的方法是在response报头中可以携带set-Cookie字段来完成。
3.Session
而将用户的敏感信息放到本地浏览器中,能结果回话保持的问题,但是也会引起安全问题,一旦Cookie丢失,用户的信息就会泄露,也很容易造成跨站攻击,所以有了另外一种解决方法,将用户的信息不存储在浏览器,而是存储在服务器,而服务器本身采用md5的算法或相关算法生成唯一值(session_id),将该值保存在客户端浏览器,随后客户端的后续请求,浏览器都会自动携带该id,进而在服务器端进行认证,进而达到回话保持状态。
Cookie和Session区别:
- Cookie是以文本文件格式存储在浏览器中,而session是存储在服务器中。
- 因为每次发起http请求,都会携带有效的cookie信息,所以Cookie一般都是有大小限制的,防止网络压力一般只有4k
- 可以轻松访问cookie值但是无法轻松访问会话值,因此session方案更安全。
Cookie一般是一起来搭配使用,因为一般使用session,我们是需要使用到cookie机制来保存session_id的。
呢如果说本地禁止了cookie的话,不是session也不能使用了?
不用担心,也有一些代替的方法
- 经常使用的技术是URL重写,就是把session_id直接附加在url路径的后面
- 还有一种技术是:表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session_id传递回服务器。
面试问题:HTTP和HTTPS的区别是什么?
简单理解:http传送数据,都是明文传送,很容易被窃取或侦听,在现有的互联网应用中,很明显有不安全因素,所以有了HTTPS,可以简单的理解成HTTPS多了一层加密解密层,在发送前进行加密,接收后进行解密,在网络里和传输的都是经过加密的数据。
SSL相关介绍,浏览请点击
未完待续…