http版本:0.9版本只能文本 1991年 TCP 70年代末期
1.0 版本:主流 支持多媒体数据处理 keep-alive 保持连接
1.1 版本:与1.0区别持久连接 更多的请求方法 精细的缓存控制,持久连接
smtp:出现的更早只能传输文本
http工作模式:对服务器资源的操作
https事务:请求==响应 各种类型的请求标示就是各种方法:如各类请求方法 GET PUT HEAD POST DELETE
http请求报文: request
报文格式:<method>方法名称 <request-URL> 请求资源 可以相对路径或者绝对路径 <version>http协议版本
<headers>请求首部
<status>:状态码
<reason-phrase>: 原因短语
<entiy-bady>:主体部分一般get方法是空的响应报文里面就有主体
OSI下面四层都是通过内核处理的,IP MAC 程序是不可见的
首部格式:name:value
Content-type:images/gif
首部分三种:
通用首部:请求和响应都可以使用
Connection:定义C S之间关于请求 响应的有关选项
Via:显示了报文经过的中间节点
Cache-Contral:缓存指示
pragma
请求首部:只有请求可用
Client_IP:
Host:请求的主机名和端口号
Referer:跳转地址
User-Agent:用户代理 使用什么工具发出的请求
Accept首部:用户表明客户自己更倾向使用的方式
响应首部:只有响应可用
实体首部:用于指定实体属性
扩展首部: 非标准首部,可能有程序开发者创建的 例如X-Forward-For
http响应报文: response
<version> <status><reason-phrase>
<headers>
<entity-body>
响应报文状态码:
1xx 信息性状态码 无多大意义
2xx 成功状态码 200:OK 201:created
3xx 重定向状态码
301:movedpermanently 永久重定向
302:Found 临时重定向
304:Not modified 用户第二次请求资源表示资源没变化 继续使用缓存
4xx 错误状态码 客户端错误:
403:Forbidden 请求被拒绝
404 :Not Found 服务器无法找到请求的URL
405:Method Not Allowed 不应许使用此方法请求响应的URL
5xx 服务器类的错误
500 服务器内部错误
502 bad GATEWAY 代理服务器从上游收到一条伪响应:
503 serveice unavailable:服务器此时无法提供服务 但是表示将来可能可用
http一次完整的请求流程:1.名称解析 DNS解析 2.三次握手 3.请求资源 4.四次断开
http协议:是一种无状态协议:一次事务结束后,无论接下来几次请求都是重新连接 服务器并不知道客户端来自同一个 连接即断开的属性
常用请求方法:
GET (请求获取一个资源,需要服务器发送)
HEAD(与get相似 但不需要服务器发送资源仅传回响应首部 )
以上两种是安全方法:(只请求不修改资源)
POST: (支持html表单提交,表单中有用户填入的数据,这些数据会发送服务器端,存储或者给处理程序使用 )
PUT:(向服务器写入文档,发布系统,例如上传文件之网盘)
DELETE:(请求删除指定url) OPTIONS(探测服务器对某资源支持的请求方法)
TRACE :( 检测代理服务器 跟踪请求要经过的防火墙代理或网关等)
扩展方法:LOCK MKCOL COPY MOVE
加速方式:
1.多线程,并行请求
2.三次连接请求后不断开,持久连接, 保持连接 弊端:占用服务器资源,超时并断开
100次10秒断开方式 凡事不断折中便能得到最好的效果…
base64 将二进制数据编码成文本发送,并能够让接受方还原来的格式
网络编程:
C语言只有数据结构并没有对象:
待续未完……