HTTP网络协议
什么是HTTP?
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它基于TCP/IP通信协议来传递数据。
简单来说,它就是一种约定协议,一种客户端跟服务端之间的约定协议。
什么是协议?
计算机和计算机之间的通讯语言叫做协议,不同的计算机之间要使用相同的协议才能进行通信。
HTTP的网络通信过程
HTTP协议工作于客户端和服务端之间,整个通信过程,浏览器会作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求,会向客户端发送响应信息。
URL组成:
1.协议部分该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等。
2.域名/ip该URL的域名部分为www.baidu.com, 或:http://180.101.49.12,它们同为百度网址
3.端口部分跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。如果没有,那么说明URL使用的是默认端口。
4.路径从域名后的第一个“/”开始到最后一个“/”为止,是路径部分。
5.参数部分从“?”开始到“#”为止之间的部分为参数部分,又称查询参数。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
HTTP报文
客户端与服务器之间的信息传递使用的载体叫做报文,报文分为请求和响应两个部分。
请求报文:
客户端发送数据给服务器的过程叫做请求报文
格式:
请求行:包含请求方法,要访问的资源以及所舒勇的HTTP版本
请求头部:说明服务器要使用的附加信息
空行:请求报文头部后的空行是必须的
请求体:get往往不存在请求体,post请求体包含请求的参数
请求方法:
GET:请求获取Request-URI所标识的资源。
POST:在Request-URI所标识的资源后附加新的数据。
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
PUT:请求服务器存储一个资源,并用Request-URI作为其标识。
DELETE:请求服务器删除Request-URI所标识的资源。
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
CONNECT:保留将来使用。
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
在实际应用中常用的请求方法是GET和POST。
GET和POST的区别:
1.从参数的传递方面来看:GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的。
2.从长度限制方面来看:GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但是浏览器一般都有一个界限。
3.从安全方面来看:GET请求相较于POST,因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。
4.从功能方面来说,GET是从服务器上获取数据,POST是向服务器传送数据。
响应报文:
格式:
1.响应行(状态行):协议版本,状态码,成功与失败的状态信息。
2.响应头部:由一些键值对构成,用来说明客户端要使用的一些附加信息。
3.空行:响应头部后面的空行是必须的。
4.响应数据(响应正文):服务器返回给客户端的数据等信息内容。
状态码及分类
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。
常见的状态码分类
https和http有什么区别
https是http的安全版本,也叫超文本安全传输,https是有加密传输协议的通道,并且SSL提供了安全加密基础,https主要是用于http的传输,并且在HTTP与TCP之间有一个特殊的加密/身份验证。
端口:https的端口是443,而http的端口是80,当然两者的连接方式也是不太一样的。
传输数据:http传输是明文的,而https是用ssl进行加密的,https具有安全性。
申请证书:https传输一般是需要申请证书,申请证书可能会需要一定的费用,而http不需要。