HTTP
1. HTTP(HyperText Transfer Protocol超文本传输协议)
[1]TCP+80
[2]状态码:
i.1XX:表示请求已经接受,继续处理请求
ii.2XX:请求已经完成处理,例:
a)200请求已经正常处理完毕
iii.3XX:表示把请求的URL定位到其它目录,例:
b)301请求永久重定向
c)302请求临时重定向
d)304请求被重定向到客户端本地缓存
iv.4xx:客户端出现错误,例:
a)400客户端请求存在语法错误
b)401客户端请求没有经过授权
c)403客户端的请求被服务器拒绝,一般是没有权限
d)404客户端请求的URL在服务器不存在
v.5XX:服务器端出现错误,例:
a)500服务器端发生永久错误
b)503服务器端发生临时错误
[3]分布式,万维网
2.HTTPS
通信过程:非对称加密和对称加密SSL(位于应用层和传输层之间);端口TCP+443;
3.无状态协议
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。
由于Web服务器要面对很多浏览器的并发访问,为了提高Web服务器对并发访问的处理能力。
4.连接(connection)
Connection: keep-alive(保持连接) 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接(可设定时间)。
Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。
5.请求方法
GET | 向特定的资源发出请求 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 向指定资源位置上传其指定内容 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
DELETE | 请求服务器删除Request-URL所标识的资源 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
6.GET和POST的区别
[1] 位置不同:GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的主体中。
[2] 大小限制:GET提交的数据大小有限制,因为浏览器对URL的长度有限制,而POST方法提交的数据没有限制。
[3] 安全问题:GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上。
7.工作流程
[1] No1:浏览器(192.168.1.6)向服务器(115.239.210.36)发出连接请求。此为TCP三次握手第一步,此时从图中可以看出,为SYN,seq:X (x=0);
[2] No2:服务器(115.239.210.36)回应了浏览器(192.168.1.6)的请求,并要求确认,此时为:SYN,ACK,此时seq:y(y为0),ACK:x+1(为1)。此为三次握手的第二步;
[3] No3:浏览器(192.168.1.6)回应了服务器(115.239.210.36)的确认,连接成功。为:ACK,此时seq:x+1(为1),ACK:y+1(为1)。此为三次握手的第三步;
[4] No4:浏览器(192.168.1.6)发出一个页面HTTP请求;
[5] No5:服务器(115.239.210.36)确认;
[6] No6:服务器(115.239.210.36)发送数据;
[7] No8:客户端浏览器(192.168.1.6)确认;
[8] 断TCP连接(如果设置keep-alive保持连接)
8.请求信息
请求行(请求方法/URL/协议版本)、消息报头(字段名/值)、空行(报头发送完毕)、请求正文
9.响应消息
状态行(协议版本/状态码/状态消息)、消息报头、空行、响应正文
10.解决HTTP无状态的问题
[1] Cookies:通过Cookies,服务器就可以清楚的知道请求2和请求1来自同一个客户端
[2] Session(会话)ID:服务器客户端创建一个session id
[3] 通过表单变量和QueryString保持状态,例:www.xxx.com/xxx.aspx?var1=value&var2=value2
[4] 区别:Cookies将状态保存再在客户端,Session将状态保存在服务器端;Session更加安全不会任意读取客户信息;考虑到减轻服务器性能方面,应当使用cookies。
11.URL
[1] 协议://主机:[端口]/路径/[;url-params][?query-string][#anchor]例:
12.缓存
[1] 缓存作用:减少的带宽消耗和延迟
[2] 客户端缓存:未修改返回304(请求被重定向到客户端本地缓存)
[3] WEB代理:validation(验证)或者Freshness指定缓存最长时间。
13. 断点续传
采用分段的原理,只请求未下载的部分