一,http协议简介
http协议是超文本传输协议(hyper text transfer protocol)的缩写,它是TCP/ip协议的一个应用协议。用于定义web浏览器与web服务器数据交换的过程。
那什么是协议呢?
计算机中的协议和现实 中的协议是一样的,一式双份/多份、多方都遵从这一个规范,这个规范就可以称为协议;而计算机网络之所以全世界可以互通,协议是功不可没的,如果没有协议,计算机各说各的话,计算机之间很难互通。计算机世界中有各种协议,比如http协议,tcp/ip协议,pop协议。tmp,ftp等等。
什么是HTTP协议呢?
![](https://i-blog.csdnimg.cn/blog_migrate/59d9d9ec2038b36de5f4b674c16207ce.png)
http协议即客户端按照一定规则向服务器发送数据或者请求数据,而服务器按照一定规则回应数据。
http版本:
http1.0特性:(断开连接)发送成功之后,立即断开,需要重新发送链接。
http1.1特性:(保持链接),发送成功之后也会保持链接。目前使用最多的是http1.1
http2.0 改进传输性能。
二,http协议主要特点
简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有get,HEAD,POST.每种方法规定了客户与服务器联系的类型不同。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快。
灵活:http允许传输任意类型的数据对象。正在传输的类型由content-type加以标记。
无连接:无连接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:http协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次传输链接的数据量增大。另一方面,在服务器不需要先前信息时,它的应答就较快。
支持B/S及C/S模式。
三,URI和URL的区别。
uri 是统一资源标识符,URL是统一资源定位符,urI是URL和URN的超集。
URN是统一资源命名。
URI是统一资源标识符,用来标识唯一的资源。
web上可用的每种资源如HTML,图片,文档,视频片段,程序等都是一个URI来定位的
URI一般由三部分组成:
访问资源的命名机制。
存放资源的主机名。
资源自身的名称,由路径表示,着重强调于资源。
URL是统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还能指明了如何找到这个资源。
URL是Internet上用来描述资源信息的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的mosaic。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件,服务器的地址和目录等。
URL一般由三部分组成:
协议
存有资源的主机IP地址
主机资源的具体地址。如目录和文件路径等。
URI是一种以抽象的,高层次概念定义统一资源标识,而url和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个URL都是URI,但不一定每个URI都是URL.这是因为URI还包括一个子类,即统一资源名称(URN),它命名资源但不指定如何定位资源。上面的mailto,news和isbn URI都是URN的示例。
三,请求信息和响应信息的格式:
request,response
一个完整的http包括请求部分和响应部分。
请求部分格式:
请求行
请求头
空行
请求数据
四个部分组成
![](https://i-blog.csdnimg.cn/blog_migrate/5a5bdf2890dbc86222ae00a1e12685c0.png)
1,请求行
请求行分为三个部分:请求方法,请求地址URL和协议版本,他们之间用空格分割。
例如,get /index.html http/1.1
请求头部
请求头部主要是为请求报文添加了一些附加信息,由“键值对”组成,每行一对,名和值之间使用冒号分割。
请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据。
请求头相关字段的意思:
![](https://i-blog.csdnimg.cn/blog_migrate/02b218e592101136100ed5ed98521c1a.png)
请求数据
请求数据不在get方法中使用,而post方法中使用。post方法适用于需要客户填写表单的场合。与请求数据相关的最长使用的请求头部是content-type和content-length.
下面是一个post方法的请求报文:
![](https://i-blog.csdnimg.cn/blog_migrate/8a13906e1144cd7e76ee5a33f2fc610a.png)
get就是请求方法,http1.1代表请求所用的协议版本,host那块是请求头部信息。
响应部分
http响应部分由状态行、响应头部,空行和响应正文4个部分组成。
![](https://i-blog.csdnimg.cn/blog_migrate/a516570dd97c1a076b59946d53152743.png)
![](https://i-blog.csdnimg.cn/blog_migrate/faef75a45061dacbd4cb369779d56022.png)
解析:
第一部分:状态行,由http协议版本,状态码,状态消息三部分组成。
第一行:状态行,http1.1版本,状态码200。
第二部分:响应头部,主要是用来说明客户端要使用的附加信息。
格式就是:key:value 一个键一个值的这种格式。
第二行和第三行为消息报头,
Date:生成响应的日期和时间;
content-typ:指定了MIME类型的html(text/html),编码类型是utf-8
content-length:代表接下来主体的长度等。
![](https://i-blog.csdnimg.cn/blog_migrate/1e5fa8d108d18c697f0ee04b98d49ae4.png)
第二部分:响应头部,主要是用来说明客户端要使用的一些附加信息。
第三部分:空行,响应头部后面的空行是必须的。
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
![](https://i-blog.csdnimg.cn/blog_migrate/b54b95c53e7bb89eea39a8452e3f7481.png)
四,http请求方法
根据http标准,http请求可以使用多种请求方法。
http1.0定义了三种请求方法:get ,post ,head方法
http1.1新增了五种请求方法:options,put,delete,trace和content方法。
get:请求指定的页面信息,并返回实体主体。
head:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
post 向指定资源提交数据进行处理请求。数据包含在请求体中。post请求可能会导致新的资源建立或已有资源的修改。
put 从客户端向服务器传送的数据取代指定的文档的内容。
delete 请求服务器删除指定页面
connect http1.1协议中能够预留将链接改为管道方式的代理服务器。
options 允许客户端查看服务端的性能。
trace 回显服务器收到的请求,主要用于测试或诊断。
五,get和post的区别
post比get安全,因为get提交的数据会暴露在url之后,post方法是把请求的数据放在请求体中。
get提交的数据长度有限制,post方法提交的数据没有限制。
get只有一个数据包,head信息与数据一起发送给服务器,post有两个数据包,先把head发一便,再把数据发一遍。
get比post传送数据更敏捷,post用来传递敏感信息。
六,http和https的区别
https和http一个加密,一个不加密。
https协议需要CA证书,需要付费购买证书。
http和https使用完全不同的链接方式,用的端口而不一样,前者用80,后者用443.
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输。
htto的链接很简单,是无状态;HTTPS协议是由ssl+http协议构建的可进行加密传输,身份认证的网络协议,比较安全。
七,tcp/ip协议:
tcp/ip协议是互联网通信模型,是互联网的基础通信架构,共采用了四层结构:
应用层:应用程序间沟通的层。
传输层:提供了节点间的数据传输。
互联网络层:负责提供基本的数据封包传送功能。
网络传输层:接收IP数据包进行传输
![](https://i-blog.csdnimg.cn/blog_migrate/5aa610ed352b6f9a0f7b183fc2588361.png)
网络七层协议:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
![](https://i-blog.csdnimg.cn/blog_migrate/5dd9ec99f0837ceb840a46662432803f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ac7914ef20d309038079c0dd2bc8791c.png)
TCP和UDP的区别:
链接方面:TCP是面向链接,发送数据前要建立链接。
UDP是无连接,发送数据前不需要建立链接。
安全方面:TCP提供可靠的服务,无差错,不丢失。
UDP不保证传输的安全性。
传输方面:TCP传输速度慢
UDP传输速度快
链接对象方面:tcp是一对一链接
UDP是一对多链接。
什么是三次握手和四次挥手?(建立tcp连接时用的)
三次握手的目的是建立可靠的通信信道,双方确认自己与对方的发送与接收机能正常。
四次挥手意思是一方表示自己发完了所有要发的数据,但还允许对方继续把没发完的数据发过来,等双方都确认没有要发的数据之后再断开连接。