前段时间面试,因为没有参加过社会招聘,对于应用层不是考试重点的我一脸懵,翻出课本,上网查了些资料,总结一下,只有总结了东西才是自己的。
一.什么是万维网:
万维网是一个大规模的,联机式的信息存储所,英文简称Web。
二.超文本,超媒体:
所谓超文本是指包括制定其它文档的链接的文本(text)。
所谓超媒体是指出了包涵文档text之外,还包含其它表示方式的信息,如图形,图像,声音,动画,视频图像等。
三.实现万维网需要的几个必须解决的关键问题
1.怎样标志分布在整个互联网上的万维网文档?-----》URL
URL(统一资源定为符)
资源位置和访问这些资源的方法;资源地址;互联网上的所有资源,都有一个唯一的确定的URL。
URL的一般形式由一下四个部分组成:
<协议>://<主机>:<端口>/<路径>
http://localhost:8080/工程路径
2.用什么样的协议来实现万维网上的各种链接?-----》HTTP
HTTP(超文本传输协议)
1)对客户端和服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。
2)HTTP协议本身是无链接:为了保证数据的可靠传输,HTTP使用了面相链接的TCP作为运输层协议。因此不用考虑数据在 传输过程中被丢弃后又怎样被重传。
3)HTTP协议是无状态的(stateless):服务器不记录用户是否访问过也不记录访问次数。
简化了服务器的设计,是服务器更容易支持大量并发的HTTP请求。
无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,那是无法取到的。
为了解决这个问题:通过Cookie;通过Session会话保存。
4)HTTP协议请求一次万维网文档所需要的时间:
3.怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用用户清楚的知道在什么地 方存在着链接?-----》HTML
四.HTTP的报文结构
1)请求报文--从客户向服务器发送请求报文。
请求行:包含请求方法;URI;HTTP版本信息
请求首部字段
请求内容实体
例子:
GET /dir/index/htm HTTP/1.1 {请求行使用了相对URL}
Host:www.baidu.com {此行是首部行的开始。这行给出主机的域名}
Connection:close {告诉服务器发送完请求的文档后就可释放链接}
User-Agent:Mozilla/5.0 {表明用户代理是实用火狐浏览器Firefox}
Accept-Language:cn {表示拥护希望优先的到中文版本的文档}
2)响应报文--从服务器到客户的回答。
状态行:包含HTTP版本;状态码;状态码的原因短语
响应首部字段
响应内容实体
例子:
HTTP/1.1 301 Moved Permanently {永久性地转移了}
Location:http://www.baidu.com/ee/index.html {新的URL}
状态码:都是三位数字,分5大类。
1xx:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。
2xx:表示客户请求成功,如接受或知道了。
3xx:表示重定向,如要完成请求还必须采取到进一步的行动。
4xx:表示由客户端引发的错误,如请求中有错误的语法或不能完成。
5xx:表示由服务器端引发的错误,如服务器失效无法完成请求。
200
:请求被正常处理
204
:请求被受理但没有资源可以返回
206
:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
301
:永久性重定向
302
:临时重定向
303
:与
302
状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
304
:发送附带条件的请求时,条件不满足时返回,与重定向无关
307
:临时重定向,与
302
类似,只是强制要求使用POST方法
400
:请求报文语法有误,服务器无法识别
401
:请求需要认证
403
:请求的对应资源禁止被访问
404
:服务器无法找到对应资源
500
:服务器内部错误
503
:服务器正忙
五.HTTP协议中有哪些请求方式?
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。
POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
PUT:传输文件,保文主体中包含文件内容,保存到对应URI位置。
HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
OPTIONS:查询响应URI支持的HTTP方法。
注意:GET方法和POST方法的区别!!!!
区别一:
1)get传输数据通过URL请求,以filed = value 的形式,置于URL后,并用“?”连接,多个请求数据间用“&”连 接,如:http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的。
2)post传输数据通过Http的post机制,将字段与对应值封装在请求实体中发送给服务器,这个过程对用户是不可见 的。
区别二:
1)get重点在从服务器上获取资源。
2)post重点在向服务器发送数据。
区别三:
1)get传输的数据量小,因为受URL长度限制,但效率较高。
2)post传输大量数据,所以上传文件时只能用post方式。
区别四:
1)get是不安全的,因为URL是可见的,可能会泄露私密信息。
2)post较get安全性较高。
区别五:
1)get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
2)post支持标准字符集,可以正确传递中文字符。
六.HTTP与HTTPS优缺点?
通信使用明文不加密,内容可能被窃听,也就是被抓包分析。
不验证通信方身份,可能遭到伪装
无法验证报文完整性,可能被篡改
HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
七.HTTP优化
利用负载均衡优化和加速HTTP应用
利用HTTP Cache来优化网站
八.HTTP协议有哪些特征?
1)支持客户/服务器模式;
2)简单快速;
3)灵活;
4)无连接;
5)无状态;
九.网络传输的过程: