HTTP协议
Http简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。
-
特点:
HTTP叫超文本传输协议,基于请求/响应模式的!
HTTP是无状态协议。(无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态)
- URL:统一资源定位符,就是一个网址:协议名://域名:端口/路径,例如:http://www.xxx.cn:80/index.html
Http状态码
100~199:指示信息,表示请求已接收,继续处理
200~299:请求成功,表示请求已被成功接收、理解、接受
300~399:重定向,要完成请求必须进行更进一步的操作
400~499:客户端错误,请求有语法错误或请求无法实现
500~599:服务器端错误,服务器未能实现合法的请求
---
常见的状态码如下:
200 OK:客户端请求成功
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden:服务器收到请求,但是拒绝提供服务
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
URI和URL区别
- URI:uniform resource identifier,统一资源标识符,用来唯一的标识一个资源
- URI一般由三部组成:
- 访问资源的命名机制
- 存放资源的主机名
- 资源自身的名称,由路径表示,着重强调于资源。
- URI一般由三部组成:
- URL:uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源
- URL一般由三部组成:
- 协议(或称为服务方式)
- 存有该资源的主机IP地址(有时也包括端口号)
- 主机资源的具体地址。如目录和文件名等
- URL一般由三部组成:
HTTP三次握手四次挥手
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭
简单说来是 “先关读,后关写”,一共需要四个阶段。以客户机发起关闭连接为例:
1. 服务器读通道关闭
2. 客户机写通道关闭
3. 客户机读通道关闭
4. 服务器写通道关闭
-
三次握手(建立连接):
- 第一次客户端向服务器发出连接请求
- 第二次服务器响应客户端请求,并告知客户端已经接收请求
- 第三次客户端告知服务器收到响应,可以进行数据可靠传输
完成三次握手,主机A与主机B开始传送数据
- 四次挥手(关闭连接):
- 第一次客户端向服务发送关闭请求,关闭服务器读通道
- 第二次服务器响应客户端请求,客户端关闭写通道
- 第三次服务器向客户端请求确认,关闭客户端读通道
- 第四次客户端向服务器请求,关闭服务器写通道
请求协议
请求协议
请求首行; // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1
请求头信息;// 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
空行; // 用来与请求体分隔开
请求体。 // GET没有请求体,只有POST有请求体。
浏览器发送给服务器的内容就这个格式的,如果不是这个格式服务器将无法解读!在HTTP协议中,请求有很多请求方法,其中最为常用的就是GET和POST。
GET请求
HTTP默认的请求方法就是GET
- 没有请求体
- 数据必须在1K之内!
- GET请求数据会暴露在浏览器的地址栏中
POST请求
数据在请求体中
数据的大小没有上限
-
请求体中如果存在中文,会使用URL编码!
username=%E5%BC%A0%E4%B8%89&password=123
GET和POST区别
- get请求侧重于从服务器获取数据,所以请求参数在url中,并有大小限制,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),并被cookie保存,方便下次请求;
- post请求侧重传递参数,请求参数在请求体中,数据量大 POST支持多种编码方式(可进行加密),而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
响应协议
响应协议
响应首行;
响应头信息;
空行;
响应体。
响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。遇到会开一个新的线程加载,所以有时图片多的话,内容会先显示出来,然后图片才一张张加载出来。
上一篇: 我是她妈
下一篇: 定时调度系列之Quartz.Net详解
推荐阅读
-
C#基于HttpWebRequest实现发送HTTP请求的方法分析
-
im通讯用什么协议(详细解析im通讯协议)
-
.Net WInform开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用
-
成功解决SyntaxError: Non-UTF-8 code starting with xc0 in file but no encoding declared; see http://p
-
Python实现TCP/IP协议下的端口转发及重定向示例
-
请求400错误请求(解决http400错误的方法)
-
Python实现TCP协议下的端口映射功能的脚本程序示例
-
Python实现基于HTTP文件传输实例
-
零基础写python爬虫之HTTP异常处理
-
小米路由器被曝劫持HTTP 403和404页面 官方正式回应