Http超文本传输协议( 二 )
协议版本(SP)状态代码(SP)状态描述(CRLF)
状态代码是一个3位数字 , 分为5类:
- 1xx:保留
- 2xx:成功 , 表示处理成功 , 并正常响应
- 3xx:重定向 , 表示处理成功 , 但是需要浏览器进一步请求
- 4xx:客户端错误 , 表示客户端请求错误导致服务端无法处理
- 5xx:服务端错误 , 表示服务端处理请求过程出现了错误
文章插图
常用状态图
响应头: 响应头与请求中的消息头格式一致 , 表示的是服务端发送给客户端的附加信息 。
响应正文: 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/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提交的数据会放在URL之后 , 以‘?’分割URL和传输数据 , 参数之间以&相连 , 如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制) , 而POST方法提交的数据没有限制.
- GET方式需要使用Request.QueryString来取得变量的值 , 而POST方式通过Request.Form来获取变量的值 。
- GET方式提交数据 , 会带来安全问题 , 比如一个登录页面 , 通过GET方式提交数据时 , 用户名和密码将出现在URL上 , 如果页面可以被缓存或者其他人可以访问这台机器 , 就可以从历史记录获得该用户的账号和密码.
- HTTP 明文传输 , 数据都是未加密的 , 安全性较差 , HTTPS(SSL+HTTP) 数据传输过程是加密的 , 安全性较好 。
- 使用 HTTPS 协议需要到 CA(Certificate Authority , 数字证书认证机构) 申请证书 , 一般免费证书较少 , 因而需要一定费用 。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等 。
- HTTP 页面响应速度比 HTTPS 快 , 主要是因为 HTTP 使用 TCP 三次握手建立连接 , 客户端和服务器需要交换 3 个包 , 而 HTTPS除了 TCP 的三个包 , 还要加上 ssl 握手需要的 9 个包 , 所以一共是 12 个包 。
- http 和 https 使用的是完全不同的连接方式 , 用的端口也不一样 , 前者是 80 , 后者是 443 。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议 , 所以 , 要比较 HTTPS 比 HTTP 要更耗费服务器资源 。
文章插图
https与http
UDP协议和TCP协议都是传输层的协议 , TCP协议提供可靠的通信传输 , 而UDP则是常常被用于让广播和细节控制的交给应用的通信传输
推荐阅读
- BurpSuite抓取HTTPS数据包
- HTML最基本知识
- 一分钟搞懂;如何通过nginx将网站访问改为https
- HTTP2.0的技术构架总结 与 Nginx和Tomcat配置HTTP2.0
- 什么是BBR
- ASP.NET Core和Https
- 帝国cms内容批量替换:http头,图片路径等
- 程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路
- SlowHTTPTest是什么
- HTTP慢速攻击是什么