无论是 C/S 开发还是 B/S 开发,无论是前端开发还是后台开发,网络总是无法避免的,数据如何传输,如何保证正确性和可靠性,如何提高传输效率,如何解决会话管理问题,如何在网络拥堵环境下采取措施。这些都是需要了解的。
今天总结下与网络相关的知识,不是那么详细,但是包含了我认为重要的所有点。如果想深入了解的可以参考《图解HTTP[上野 宣]》、《图解TCP/IP(第5版)[竹下隆史]》以及计算机网络相关教材。
概要网络知识我做了 8 个方面的总结,包括DNS协议,HTTP协议,HTTPS协议,TCP协议,IP协议,TCP/IP,Web攻击,其他协议。以下对这些内容做一些简单的总结,同时我也有完整的思维导图,博客上不方便展示,若有需要,联系我。
细节 1. DNS 协议作用:提供域名到IP地址之间的解析服务。或逆向从IP地址反查域名的服务
2. HTTP协议 2.1 特点无状态
使用URI定义互联网资源
HTTP方法
GET:获取资源
POST:传输实体主体
PUT:传输文件
HEAD:获得报文首部
DELETE:删除文件
OPTIONS:询问支持的方法
TRACE:追踪路径
CONNECT:要求用隧道协议连接代理
持久连接节省通信量
管线化实现并行发送多个请求,而不需要一个接一个等响应
2.2 HTTP 报文用于HTTP协议交互的信息称为HTTP报文
请求报文
报文首部
请求行
请求首部字段
通用首部字段
实体首部字段
其他
空行
报文主体
响应报文
报文首部
状态行
响应首部字段
通用首部字段
实体首部字段
其他
空行
报文主体
发送多种数据的多部分对象集合
MIME
multipart/form-data
内容协商
服务器驱动协商
客户端驱动协商
透明协商
2.3 HTTP状态码1XX:接收的请求正在处理
2XX:请求正常处理完毕
200 OK
204 NoContent
206 Partial Content
3XX:需要进行附加操作以完成请求
301 Moved Permanenetly
302 Found
303 See Other
304 Not Modified
307 Temporary Redirect
4XX:服务器无法处理请求
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
5XX:服务器处理请求出错
500 Internal Server Error
503 Service Unavailable
2.4 HTTP1.1 和HTTP1.0的区别可扩展性:定义Via头域,增加版本号的支持
缓存
增加对缓存的重激活机制:使用ETag头域描述一个资源
增加Cache-Control头域支持可扩展的指令集
带宽优化:允许请求资源的某部分,而不是整个资源
长连接
HTTP/1.0只支持浏览器与服务器保持短暂的连接,浏览器的每次请求都要建立一个新的连接。
而HTTP/1.1允许在一个TCP连接上可以传送多个HTTP请求和响应。HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。
非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求;
流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文
2.5 Cookie与Session的区别存取方式的不同
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比较艰难的。
Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
隐私策略的不同
Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。
Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
有效期上的不同
Cookie的过期时间指定
Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器该Session就会失效,因而Session不能完成信息永世有效的效果。
服务器压力的不同
Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。
Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。
浏览器支持的不同
Cookie是需要客户端浏览器支持的。
假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。
跨域支持上的不同