应用层协议:HTTP

应用层协议:HTTP

全称:Hyper Text Transfer Protocol 超文本传输协议
定义了万维网客户进程(即浏览器)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

从层次的角度看,HTTP协议是一个应用层协议;
它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
它可以使浏览器更加高效,使网络传输减少,
不仅保证计算机正确快速地传输超文本文档,
还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是我们浏览网页、看在线视频、听在线音乐等必须遵循的规则。
正是在这样的规则下,浏览器才能向万维网服务器发送万维网文档请求,
然后服务器会将请求的文档发送回浏览器。
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和规则,
这些格式和规则就构成了超文本传输协议。

它所对应的传输层的协议是TCP的传输;
它所应用的传输层的端口是80号端口,另外还有一个备用端口是8080端口。

HTTP工作过程:

一个HTTP的操作称为一个事物

它的工作过程分为四个步骤:
	首先客户机和服务器需要建立TCP连接,这时HTTP开始工作了;
	计算机系统中有一个专门为HTTP开放默认端口:80端口,
	还有一个备用的8080端口,主要用于万维网传输信息的协议;
	
	第二步当连接建立以后,客户机会发送一个请求给服务器,
	请求具有专门的请求格式和请求报文,
	请求的格式是统一资源定位符URL;
	
	第三步是服务器接到请求以后,给予的相应的响应信息;
	与请求类似,应答也有专门的格式与响应报文;
	
	最后一步,当客户端收到服务器所返回的信息,
	通过浏览器显示在用户的显示屏,接着客户机与服务器断开连接;
	如果在这个过程当中,某一个步骤出现了错误,
	那么产生错误的信息,将返回到客户端。

对应用户来说,这些过程是由HTTP自己完成的。
用户只要用鼠标点击,等待信息显示浏览即可。
所以用户能够看到的就是,在浏览器中间输入了你的对应的网页地址,
那么网页就显示在你的面前了。

步骤一:
首先客户机和服务器需要建立连接,这时HTTP开始工作了;
在这里插入图片描述
步骤二三:
第二步当连接建立以后,客户机会发送一个请求给服务器;
第三步是服务器接到请求以后,给予的相应的响应信息;
在这里插入图片描述
请求格式:
在这里插入图片描述
请求报文:

请求报文(Request message)包含了四个部分的内容:
	请求行(Request line)
	头部(Headers)
	空行(A blank line)
	主体部分(Body)

请求行(Request line)包含了三部分的内容:
	Request type
	URL
	HTTP version

URL全称:Uniform Resource Locator
统一资源定位符由四部分组成:
	Method
	Host
	Port
	Path

Request message:
在这里插入图片描述
Request line:
在这里插入图片描述
响应格式:
在这里插入图片描述
响应报文:

响应报文(Response message)包含了四个部分的内容:
	状态行(Status line)
	头部(Headers)
	空行(A blank line)
	主体部分(Body)

状态行(Status line)包含了三部分的内容:
	HTTP version
	Status code
	Status phrase

Response message:
在这里插入图片描述
Status line:
在这里插入图片描述
步骤四:
最后一步,当客户端收到服务器所返回的信息,
通过浏览器显示在用户的显示屏,接着客户机与服务器断开连接;
如果在这个过程当中,某一个步骤出现了错误,
那么产生错误的信息,将返回到客户端。
在这里插入图片描述

URL的概念与组成

浏览某个网页时,很重要的是要知道某个网页的URL(统一资源定位符Uniform Resource Locator)

以 https://www.baidu.com/index.php 为例:
在这里插入图片描述
通过URL的组成,可以看到当我们在浏览器中输入URL时,
其中的域名会被提取出来,并用DNS服务将其解析为IP地址。
之后就进行HTTP读物,建立连接,发送请求,接收应答消息,断开连接,
最终就会在浏览器上浏览到我们想要浏览的页面。

HTTP的工作究竟是如何完成的?

在双方建立连接之前,首先要知道对方的地址,那么怎样才能知道对方的地址呢?
就要通过DNS服务

第一步是浏览器分析超链接,超链接中的域名被提取出来,
通过DNS服务得到对应的IP地址;

第二步,浏览器向DNS请求解析这个域名所对应的IP,
当得到这个IP地址以后,双方就可以开始建立连接的工作了;

第三步,双方之间可以建立起TCP的连接。

:浏览器分析超链接,超链接中的域名被提取出来,通过DNS服务得到对应的IP地址。
:浏览器向DNS请求解析这个域名所对应的IP,当得到这个IP地址以后,双方就可以开始建立连接的工作了。
:双方之间可以建立起TCP的连接。

如下图:
在这里插入图片描述

HTTP是应用层的服务,那么在传输层它依靠的是一个可靠的面向连接的传输,TCP的传输。
TCP的传输在80端口或者8080这个端口完成,双方建立起连接以后可以进行下一步的工作。

下一步浏览器发出HTTP请求报文,
请求报文里面含有这样一个文件命令 GET/chn/yxsz/index.htm  
意思是:希望得到chn文件夹下的yxsz文件夹下index.htm文件,
这实际上就是我们用户所需要的对应的网页文件。

当服务器收到HTTP的请求报文以后,
会按照这个路径到对应的文件夹下,取得对应的index.htm文件,
接着把这个文件组织到它的报文当中,反馈给我们的浏览器。
浏览器进行接收以后,会检查报文是否完整,
如果完整双方之间的数据传输就完成了。
随后TCP连接可以被释放。

整个的TCP/IP三次握手结束以后,
HTTP协议还会在浏览器这一端对响应报文进行一个文件提取的工作。
它会将传过来的index.htm这个文件,按照超文本的格式在屏幕上显示出来,
所以用户这时就可以看到网页的全部内容了。

在这里插入图片描述
在这里插入图片描述

两种常用的请求方式

在客户端发送请求时,有这两种常用的请求方式:GETPOST

GET方式:

是以实体的方式得到由请求URL所指定资源的信息,
如果请求URL只是一个数据产生过程,
那么最终要在响应实体中返回的是处理过程的结果所指向的资源,
而不是处理过程的描述。

POST方式:

用来向目的服务器发出请求,要求它接受被附在请求后的实体,
并把它当作请求队列中请求URL所指定资源的附加新子项,
POST被设计成用统一的方法实现下列功能:
	1.对现有资源的解释;
	2.向电子公告栏、新闻组、邮件列表或类似讨论组发信息;
	3.提交数据块;
	4.通过附加操作来扩展数据库。

可以看出,GET是向服务器发索取数据的一种请求,
而POST是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。
发布了80 篇原创文章 · 获赞 1 · 访问量 1284

猜你喜欢

转载自blog.csdn.net/weixin_44772874/article/details/104141953