http协议总结

 

一、www的简单构成:

  • html:文本如何标记
  • http:文本在不同机子之间如何传输
  • url:标记如何定位

二、uri和url

  • uri:统一资源标示符,由某种协议表示的资源的定位符,协议可以是http,ftp,mailto,urn。其表示的资源可以是绝对路径也可以是相对路径。其核心是资源的标识。
    • mailto:zzy@example.com
    • http://www.cnblogs.com/zengzy/
    • /index.html
    • urn:isbn:0-486-27557-4
  • url:统一资源定位符,是一种具体的uri,表示能够在互联网中使用从而能定位到资源的标识符,必须是绝对路径。其核心是定位

三、简单的http

  • 请求报文结构,下面这个请求报文的意思是:请求hacker.jp这台主机上的form/entry这个资源

  • 响应报文结构

 

四、http八大方法

  • 八大方法

  1. get:从指定的资源请求数据,即查找资源
     
  2. post:向指定资源提交需要被处理的数据,即修改资源
     
  3. put:上传uri标识的资源到某个主机
     
  4. delete:删除uri指定的资源
     
  5. head:与get方法相同,但是不返回实体的主体,只返回首部
     
  6. trace:路径追踪,让http服务器端将请求报文环回给客户端
  7. connect:要求在与代理服务器通信时建立隧道,用隧道协议进行tcp通信。主要是使用SSL(Secure Sockets Layer,安全套阶层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
    格式:CONNECT 代理服务器名:端口号 HTTP 版本
    eg: 
    请求:CONNECT proxy.hackr.jp:80 HTTP/1.1
    相应:HTTP/1.1 200 OK(之后进入网络隧道)     
     
  8. options:http服务器返回支持的http方法
  • get与post区别
 GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签可收藏为书签不可收藏为书签
缓存能被缓存不能缓存
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史参数保留在浏览器历史中。参数不会保存在浏览器历史中。
对数据长度的限制是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。无限制。
对数据类型的限制只允许 ASCII 字符。没有限制。也允许二进制数据。
安全性

与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。

在发送密码或其他敏感信息时绝不要使用 GET !

POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性数据在 URL 中对所有人都是可见的。数据不会显示在 URL 中。

 

五、http报文格式

1).请求报文:                       2).响应报文

请求行                          状态行

请求首部字段                       响应首部字段

通用首部字段                       通用首部字段

实体首部字段                       实体首部字段

  空行(用CR+LF表示,回车换行)               空行(用CR+LF表示,回车换行)       

      报文主体                           报文主体    

可见请求报文和响应报文只有绿色部分是不一样的。

3).请求行:请求方法 URI http版本号  get /index.html HTTP/1.1

4).状态行:http版本号 状态码 原因短语  HTTP/1.1 200 ok

5).常见的状态码:

 类型原因短语
          1xx       Informational,信息性的状态码接受的请求正在处理
          2xx  Success,成功状态码请求正常处理完毕
          3xx Redirection,重定向状态码可能需要新的请求才能能完成操作
          4xxClient Error,客户端错误错误的客户端请求,uri拼写错误等
          5xxServer Error,服务器端错误服务器出现错误,可能是web的bug等
  • 2xx:

200 Ok:表示请求正常处理

204 No Content :表示服务器成功处理请求,但返回的相应报文中不含实体的主体部分,就是上面报文结构中的红色部分

206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分请求

  • 3xx:

301 Moved Permanently:永久性重定向。也就是说原来请求的uri被分配了新的uri,以后就使用这个新的uri。如果之前的uri被保存为了书签,那么把uri替换为新的uri

302 Found:临时性的重定向。与301不同之处在于不更新书签等。其在收到302后马上用新的uri进行第二次请求,并将方法改为get,但规范本身是禁止这么做的,只是大多数浏览器都没有遵守规范。

303 See Other:表示请求的资源有多个uri,明确规定应使用get方法定向获取请求的资源。在现在的使用中302与其有一致的含义。

307 Temporary Redirect:与302有一致的含义,禁止post方法转成get方法

304 Not Modified:与附带条件的请求配合使用(例如if-None-Match,if-Range等,下文请求首部字段将会讲到),表示请求的资源找到了,但是没有满足请求的附带条件。

  • 4xx

400 Bad Request:表示请求报文中存在语法错误,当发生错误是,需要修改请求的内容再次发送请求,另外,客户端浏览器会像对待200 0k一样对待该状态码

401 Unauthorized:表示发送的请求需要通过HTTP认证的认证信息,响应报文必须包含一个使用与被请求资源的www-authenticate首部用以质询用户信息,当浏览器初次接收401时,会弹出认证用的窗口

403 Forbidden

404 Not Found

  • 5xx

500 Internal Server Error:表示服务器端在执行请求时发生了错误,也有可能是web的bug

503 Service Unavailable:服务器可能正超负荷或暂停维护无法访问

6)HTTP的四种首部类型

四大首部类型分别是通用首部字段,请求首部字段,响应首部字段,实体首部字段

  • 通用首部字段:指既能在请求报文中使用,又能在响应报文中使用的字段
    1. Cache-Control:控制缓存的行为,常见的值有No-Cache,No-Store。No-Cache:请求报文出现它表示不希望获取缓存过的资源,响应报文出现它表示不希望代理缓存请求,No-Store表示不缓存请求或响应的任何一部分
    2. Connection:控制连接的管理,常见的值为Keep-Alive
    3. Date:报文的创建日期
    4. Trailer:表示实现说明在报文主体后记录了哪些首部字段,看下面这个例子

      HTTP/1.1 200 OK

      ....

      Trailer:Expires

      ...

      (报文主体)

      Expires:Tue, 28 Sep 2015 22:13:34 GMT

    5. Transfer-Encoding:报文主体的传输编码方式(并没有搞明白和请求首部字段Te有什么区别)
    6. Upgrade:向服务器指定某种传输协议以便服务器进行转换
    7. Via:代理服务器相关的信息,报文经过代理或网关时,会把该代理或网关信息写入via字段
  • 请求首部字段

Accept首部:

Accept : 浏览器可以处理的媒体类型

Accept-Charset:优先的字符集,比如utf-8,gb2312,gbk等等

Accept-Encoding:优先的内容编码,比如deflate,zlib,gzip等

Accept-Language:优先的语言,en-us等

If首部:

If-Match:比较实体标记Etag,服务器端会给每一个资源标记Etag,客户端请求的时候可能带上此条件,表示服务器端有If-Match值对应的资源就处理请求

If-None-Match:与If-Match对应,表示服务器端没有其对应的值就处理请求

If-Modified-Since:如果服务器资源自某个时间点之后修改了,就处理该请求

If-Unmodified-Since:如果服务器资源自某个时间点之后没有改动,就处理该请求

If-Range:告知服务器若制定的If-Range字段值(Etag或者时间)和请求资源的Etag和时间相同时,则作为范围请求处理,反之,返回全体资源。请看下面这个例子:

    

 其他:

Range:表示请求的字节范围

User-Agent:Http客户端程序的信息

Max-Forwards:最大的传输逐跳数,可以有Traces方法配合使用

Host:请求的资源所在的服务器

From:用户的电子邮件

Te:表示优先的传输编码,比如deflate,gzip等,与Accept-Encoding不一样,A-E是指能接受的压缩方式,而Te是指请求报文实体的压缩方式

  • 响应首部字段

Accept-Ranges:表示服务器端是否接受范围请求

Age:告知客户端服务器端多长时间之前创建了请求,单位是秒

Etag:服务器端资源的标识

Location:重定向后uri

Proxy-Authenticate:服务器端要求代理的认证信息

WWW-Authentivate:服务器端要求客户端的认证信息

Retry-After:告知客户端再次发起请求的时间

Server:服务器端的信息

  • 实体首部字段

Content首部

Content-Encoding:实体使用的编码

Content-Language:实体的自然语言

Content-Length:实体的大小

Content-MD5:实体的MD5校验码

Content-Range:实体的字节范围

Conten-Type:实体的媒体类比

其他首部

Expire:实体的过期日期

Allow:允许的方法,可与Options方法共同使用

 

参考资料:

1.《图解HTTP》,上野宣著,人民邮电出版社

2.http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

 

写者:zengzy 
出处: http://www.cnblogs.com/zengzy 
标题有【转】字样的文章从别的地方转过来的,否则为个人学习笔记

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值