HTTP协议理解

HTTP(Hyper Text Transfer Protocol)超文本传输协议,是一种请求响应式协议,类似两国会晤中需要遵守的规则。那么,其中有什么内容特点呢?

HTTP特点:

1)支持客户端/服务器模式(浏览器也是一种客户端)

2)够简单,所以够快速

3)够灵活,传输什么类型的数据都能适应

4)无状态,指对事务处理没有记忆,也就是说没有续传性,一旦断开,下次重新连接要重新传输(区别于FTP是有状态的,假如传文件传到一半断网了,没事,下次接着传)

HTTP版本问题:

  HTTP1.0每次只能处理一个HTTP请求,这将直接导致用户访问一个包含各种链接的网页时,速度缓慢(每个链接都要有一个请求和一个响应多慢啊)

  HTTP1.1一个TCP连接上可以传送多个HTTP请求和响应

HTTP消息=HTTP请求消息+HTTP响应消息

HTTP请求消息=请求行+请求头+请求消息

1)请求行:请求方式+资源路径+HTTP版本(用空格分隔):GET /index.html HTTP/1.1

  其中请求方式分为get和post两种方式,区别如下:

  get方式生成的请求会将参数部分加载在URL后面,以?为标志,也就是说保密性不强,get方式传送的数据量有限(不超过1KB)

  post方式保密性强,传输大小无限制,所以实际开发中这种方式更受青睐!

2)请求头:主要向服务器端传递附加信息:(头字段名称+冒号+空格+值)   <%--   这里是解释-->

  Host: localhost:8080    <%--主机和端口号(必须包含这个)-->

  Accept: image/gif, image/x-xbitmap, *    <%--告诉服务器,客户端可以接受的MIME(多用途互联网邮件扩展)类型-->

  Referer: http://localhost:880/itcast/  <%--检验请求网站的来源,即请求发出站,可以用于网站的防盗链-->

  Accept-Language: zh-cn,zh;  <%--客户端期望服务器返回哪个国家语言的文档,这里表示中国(en-us表示美国)-->

  Content-Type: application/x-www-form-urlencoded  <%--指出实体内容的MIME类型-->

  Connection: Keep-Alive  <%-- 建立连接是否连续 -->

  Cache-Control: no-cache  <%--告诉服务器端是否允许缓存该页面-->

HTTP响应消息=响应状态行+响应消息头

1)响应状态行:HTTP版本+状态码+状态码对应的文本信息(空格分隔):HTTP/1.1 200 OK

  其中状态码由三位数字组成,表示请求是否被理解或被满足,其中第一个数字定义了响应的类别

  1xx:请求已接收,需要继续处理

  2xx:请求已接收、理解并接受(常见的200表示正常)

  3xx:为完成请求,客户端需要进一步细化请求(302表示找到,例如请求重定向SendRedirect)

  4xx:客户端请求出错(常见的404表示页面找不到,400请求无效,408请求超时)

  5xx:服务器出错(常见的500内部服务器出错)

2)HTTP相应头:紧接着响应状态行之后是若干响应消息头,也是传递附加信息,不过是服务器端向客户端发送的

  Server: Apache-Coyote/1.1  <%--服务器名称-->

  Content-Encoding: gzip  <%--压缩编码格式-->

  Content-length: 80  <%-- 响应内容类型-->

  Content-Language: zh-cn  <%--指出响应的使用语言-->

  Content-Type: text/html; charset=GB2312  <%--客户端检查接收的内容代表哪种格式的数据类型  -->

  Expires: -1  <%-- 和下面两个共同组合使用,告诉客户端是否在客户端缓存网页-->

  Cache-Control: no-cache

  Pragma: no-cache

HTTP暂止于此,下次是复习Servlet技术~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏帅小子的日常

cookie和session

1444
来自专栏Java技术交流群809340374

分布式锁的3种实现(数据库、缓存、Zookeeper)

目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。

1610
来自专栏云计算教程系列

如何在CentOS 7上使用Linux审计系统

在Linux审核系统可以帮助系统管理员创建一个审计跟踪,日志服务器上的每一个动作。我们可以通过检查审计日志文件来跟踪与安全相关的事件,将事件记录在日志文件中,以...

1K5
来自专栏Flutter&Dart

DartVM服务器开发(第八天)--http服务端框架

Aqueduct是一个HTTP Web服务器框架,用于构建用Dart编写的REST应用程序。

4594
来自专栏散尽浮华

Nginx+upstream针对后端服务器容错的运维笔记

熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一、nginx的upstr...

1.2K9
来自专栏小尘哥的专栏

springboot中redis的使用和分布式session共享问题

本文旨在解决分布式系统的session如何共享问题,大致思路:session放入redis。其他解决方案:持久化、放cache等都可以,但是自从有了redis,...

903
来自专栏LIN_ZONE

Linux各目录及每个目录的详细介绍(转载)

Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其根目录,如下图:

1352
来自专栏数据和云

浅谈TimesTen内存数据库的结构

作者介绍 ? 朱亮 云和恩墨技术专家,6年专职oracle dba生涯先后服务于保险、金融、电信、百货等客户 Oracle TimesTen In-Memor...

3928
来自专栏Java技术交流群809340374

分布式锁的3种实现(数据库、缓存、Zookeeper)

目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。

2080
来自专栏帅小子的日常

cookie和session

3585

扫码关注云+社区

领取腾讯云代金券