Http超文本传输协议( 二 )


协议版本(SP)状态代码(SP)状态描述(CRLF)
状态代码是一个3位数字 , 分为5类:

  1. 1xx:保留
  2. 2xx:成功 , 表示处理成功 , 并正常响应
  3. 3xx:重定向 , 表示处理成功 , 但是需要浏览器进一步请求
  4. 4xx:客户端错误 , 表示客户端请求错误导致服务端无法处理
  5. 5xx:服务端错误 , 表示服务端处理请求过程出现了错误
具体的数字在HTTP协议手册中有相关的定义 , 可参阅 。
Http超文本传输协议

文章插图
常用状态图
响应头: 响应头与请求中的消息头格式一致 , 表示的是服务端发送给客户端的附加信息 。
响应正文: 2进制数据部分 , 包含的通常是客户端实际请求的资源内容 。
响应的大致内容:HTTP/1.1 200 OK(CRLF)Content-Type: text/html(CRLF)Content-Length: 2546(CRLF)(CRLF)1011101010101010101......两个响应头:
Content-Type是用来告知浏览器响应正文中的内容是什么类型的数据(图片 , 页面等等)不同的类型对应的值是不同的 , 比如:
常见的媒体格式类型如下:
  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式
以application开头的媒体格式类型:
  • application/xhtml+xml :XHTML格式
  • application/xml : XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json : JSON数据格式
  • application/pdf :pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : <form encType=””>中默认的encType , form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
get和post的区别
  1. GET提交的数据会放在URL之后 , 以‘?’分割URL和传输数据 , 参数之间以&相连 , 如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制) , 而POST方法提交的数据没有限制.
  3. GET方式需要使用Request.QueryString来取得变量的值 , 而POST方式通过Request.Form来获取变量的值 。
  4. GET方式提交数据 , 会带来安全问题 , 比如一个登录页面 , 通过GET方式提交数据时 , 用户名和密码将出现在URL上 , 如果页面可以被缓存或者其他人可以访问这台机器 , 就可以从历史记录获得该用户的账号和密码.
HTTP 与 HTTPS 区别
  1. HTTP 明文传输 , 数据都是未加密的 , 安全性较差 , HTTPS(SSL+HTTP) 数据传输过程是加密的 , 安全性较好 。
  2. 使用 HTTPS 协议需要到 CA(Certificate Authority , 数字证书认证机构) 申请证书 , 一般免费证书较少 , 因而需要一定费用 。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等 。
  3. HTTP 页面响应速度比 HTTPS 快 , 主要是因为 HTTP 使用 TCP 三次握手建立连接 , 客户端和服务器需要交换 3 个包 , 而 HTTPS除了 TCP 的三个包 , 还要加上 ssl 握手需要的 9 个包 , 所以一共是 12 个包 。
  4. http 和 https 使用的是完全不同的连接方式 , 用的端口也不一样 , 前者是 80 , 后者是 443 。
  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议 , 所以 , 要比较 HTTPS 比 HTTP 要更耗费服务器资源 。

Http超文本传输协议

文章插图
https与http
UDP协议和TCP协议都是传输层的协议 , TCP协议提供可靠的通信传输 , 而UDP则是常常被用于让广播和细节控制的交给应用的通信传输


推荐阅读