大家好,欢迎来到IT知识分享网。
1.HTTP简介
http协议是一种超文本传输协议,主要应用在浏览器与服务器之间的通信,可以传输文本,图片,视频等。它是一种应用层协议,也是基于TCP协议,当然现在流行的Https协议是在TLS或SSL协议层上面。如下图所示:

HTTP是一个应用层协议,是一个无状态协议,默认端口号是80.,HTTPS端口号为443。
HTTP的特性:
(1) 协议简单,只用传递请求方法和路径,程序规模小,通信速度快。
(2)可以指定传输类型,由Content-Type标记。
(3)HTTP0.9 和 1.0使用非持续连接,每次处理完请求,并收到客户端响应后,就断开连接。HTTP1.1是使用持续连接,一个连接可以传送多个对象,可以节省时间,由于负载多,真实数据少,实际网络带宽利用率不高,类似心跳包,所以这种对于带宽来说,实际利占用带宽并没有想象中高。
(4)HTTP是无状态协议,意味着如果要处理前面的信息,则必须重传,可能导致每次连接数据量增多,相反,这个时候不需要先前信息,响应比较快。
2.HTTP工作流程
(1).首先客户端与服务器之间建立连接,个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP套接字连接。例如http://www.baidu.com
(2).客户端发送请求给服务器,请求格式:URL,协议版本号,MIME信息包括修饰符,客户机信息,可能的内容。
(3).服务器收到请求,并给予回复,回复格式:状态行,协议版本,状态码,状态信息,后面包括服务器信息,实体信息和可能的内容。
(4).客户端并把接收到的信息,通过浏览器展示,然后客户机与服务器断开连接。
(5)客户端浏览器解析HTML内容。浏览器首先解析状态行,请求是否成功的状态码,解析每个响应头,可以查看下面的数据类型,如HTML文档和字符集,客户端浏览器读取响应HTML,然后根据HTML语言进行格式化,并在浏览器窗口中显示。
请求消息主要包括以下格式:
请求行,请求头,空行,数据。如下图:

如通过Get请求方法:
GET /teacher_6.jpg HTTP/1.1
Host:www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, lik
e Gecko) Chrome/81.0.4044.113 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
xxxx
第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的 HTTP 版本。[/teacher_6.jpg]为要访问的资源,HTTP/1.1是协议版本。
第二部分:请求头部,主要是一些附加信息,使用key-value的形式展现。该信息由你的浏览器来定义,并且在每个请求中自动发送等。
第三部分:空行,请求头部后面的空行是必须的。
为什么是必须的呢?
空行实际就是\r\n\r\n,http协议也是基于tcp,tcp的粘包与分包,是通过包长度或结尾标识来设计,所以就用\r\n\r\n来隔离头部和真实数据,头部和数据包是可以一起发的,但是接收好,头部和数据是可以分开处理。
第四部分:请求数据也叫主体,可以添加任意的其他数据。
HTTP响应消息Response
HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

第一部分:状态行,由HTTP协议版本号,状态码,状态消息,3部分构成
第二部分为消息报头,说明客户端的一些附加信息。
第二行,第三行,第四行均为消息报头。
Date:生成响应的日期和时间;Content-Type:指定了 MIME 类型的 HTML(text/html),编码类型是ISO-8859-1。
第三部分:空行,消息报头后面的空行是必须的。
第四部分:响应正文,服务器返回给客户端的文本信息。空行后面的 html 部分为响应正文。
3.HTTP请求方法
HTTP1.0 定义了三种请求方法: GET、POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法: OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
序号 方法 描述
(1) GET 请求指定的页面信息,并返回实体主体。
(2) HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取
报头
(3)POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/
或已有资源的修改。
(4)PUT 从客户端向服务器传送的数据取代指定的文档的内容。
(5)DELETE 请求服务器删除指定的页面。
(6)CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
(7)OPTIONS 允许客户端查看服务器的性能。
(8)TRACE 回显服务器收到的请求,主要用于测试或诊断。
(9)PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
GET、POST区别
(1)GET提交的数据放在URL之后,以?分割URL和传输数据,参数间以&相连,如
http://localhost:8600/user?name=test1&id=。POST方法是把提交的数据放在HTTP的Body中。
(2)GET 提交的数据大小有限制(因为浏览器对 URL 的长度有限制),而 POST 方法提交的数据没有限制.
(3) GET 方式需要使用 Request.QueryString 来取得变量的值,而 POST 方式通过 Request.Form来获取变量的值。
(4) GET 方式提交数据,会带来安全问题,比如一个登录页面,通过 GET 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。
4.响应头信息











HTTP状态码:
第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求









HTTP Content-Type:
内容类型,一般指网页中存在的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 :
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172912.html