您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

细说HTTP协议及其工作流程

时间:2019-11-26 13:26:42  来源:  作者:

在TCP/IP的模型图中,读者可以看到,HTTP协议位于最上层的应用层,它是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个协议。

HTTP是一个由请求和响应组成的、标准的客户端/服务器端模型(B/S结构)。HTTP协议永远是由客户端发起请求,服务器端给予响应,如图2-8所示。

细说HTTP协议及其工作流程

 

 

图2-8 HTTP请求

HTTP是一种无状态协议。无状态是指客户端和服务器端之间不需要建立持久的连接,客户端发起一个请求,服务器端返回响应,这个连接就会被关闭,在服务器端不会保留该请求的有关信息。

HTTP的工作流程如下。

1.地址解析

HTTP协议是通过标准URL来请求指定的服务器中的指定服务的。一个标准的URL如下:

http://www.baidu.com:80/index.html?name=tom&age=18

下面来拆分一下URL,看看这些组成都是做什么的:

(1)http:协议类型。这里指的是要发送的是什么协议,还可以是FTP等其他协议。而这里请求的是服务器中的网页,所以使用的是常见的HTTP协议。

(2)www.baidu.com:主机名。通过主机名,可以准确定位到要访问的那台服务器。而在前面说的网络通信中,IP是可以唯一表示服务器地址的,但IP烦琐复杂,很难记忆,所以人们就想了个办法,通过熟悉的英文、数字等来表示一台服务器的地址,称为域名。这样就需要一个文件(作为一个数据仓库)把IP和域名一一对应起来。在很早的时候,我们确实是这么做的,不过随着IP越来越多,文件也变得越来越大,不堪负重。于是人们就想到了把这些一一对应的关系都放到一台统一的服务器上,这台服务器被称为DNS域名解析系统,它会把域名解析成对应的IP。

(3)80:端口号。用户已经可以通过域名或者IP访问到一台服务器了,但是一台服务器里有那么多的服务和应用,怎样才能准确找到用户需要访问的那个服务或应用呢?在服务器中,每个服务和应用都会开启一个进程,都会有一个进程号(PID),如果对外提供服务,则还会有一个唯一的端口号,这让外部应用可以直接通过这个端口号访问到指定的服务和应用。端口号的范围是0~65 535,一些常用的服务和应用都有默认的端口号,一般不能轻易更改,比如Web服务器的80端口、远程连接SSH服务的22端口、数据库MySQL的3306端口等等。因为80端口是Web服务器的默认端口,所以在写HTTP请求的URL的时候,80端口一般是省略的。

(4)index.html:请求的文件名。用户通过域名和端口号已经能访问到Web服务器了,接下来就可以通过文件名来访问指定的文件了。Web服务器一般都做好了路由,不同的路由所提供的访问文件的形式可能不一样,但核心都是一样的。

(5)?name=tom&age=18:请求参数。即使同一个网页,可能针对不同的用户,服务器要返回给客户端的信息也是不一样的。而服务器就是通过URL中“?”后面携带的参数不同来响应不同的用户或者同一个用户的不同请求的。

 

2.封装HTTP请求

这一步会把上面写的URL以及本机的一些信息封装成一个HTTP请求数据包,后面笔者会详细说明。

3.封装TCP包

第三步就是封装TCP包,建立TCP连接,也就是常说的“三次握手”。由于HTTP位于最上层的应用层,所以HTTP在工作之前要先由TCP和IP协议建立网络连接,这就是TCP/IP协议族,因此互联网又被称为TCP/IP网络。

这里介绍一下TCP/IP协议的“三次握手”。首先由客户端发送建立连接的请求,客户端发送一个syn包,等待服务器端的响应;服务器端收到SYN包之后,返回给客户端一个表示确认的SYN包;最后客户端收到确认SYN包之后向服务器端发送ACK包,发送完之后开始建立连接,如图2-9所示。

细说HTTP协议及其工作流程

 

 

图2-9 TCP/IP三次握手

4.客户端发送请求命令

第四步就是在连接建立之后,客户端发送HTTP请求到服务器端,与请求相关的信息都会包含在请求头和请求体中发送给服务器端。

5.服务器端响应

服务器在收到请求之后,根据客户端的请求发送给客户端相应的信息。相关的响应信息都会放在响应头和响应体中。

6.关闭连接

服务器端在发送完响应之后,就会关闭连接。如果客户端的请求的头信息中有Connection-alive,那么服务器端在响应完这个请求之后不会关闭连接,直到该客户端的所有请求都响应完毕,才会关闭连接,这样大大节省了带宽和I/O资源。

请求和响应

HTTP请求由两部分组成:HTTP消息头和HTTP消息体。消息头告诉服务器该请求是做什么的,消息体告诉服务器怎么做。比如访问一个页面,头信息可以到浏览器中的调试心去看,而消息体需要用户单击鼠标右键查看源码,那些HTML代码就是服务器返回给客户端的消息体。

HTTP中的请求头由三部分组成:请求行、请求头和请求正文,如图2-10所示。

细说HTTP协议及其工作流程

 

 

1.请求行

请求的第一行是请求行,里面有请求方法、URL、协议版本等。比如图2-10,请求的方法是GET,请求的URL是/ ,协议版本是HTTP/1.1。

常见的请求方式有GET和POST。GET方式主要用于获取网络资源,POST方式主要用于表单提交。由于GET方式的参数是在地址栏中的,所以总是可见的,不是很安全,而且长度也有限制。而POST方式的参数是封装成实体之后发送给服务器的,是不可见的,相对比较安全,用户的敏感信息一般采用POST方式提交。

2.请求头

每个头域都由一个头域名、冒号和值域组成。下面介绍一些常见的头域。

(1)Connetion:表示是否需要持久连接。如果服务器看到它的值为keep-alive,或者请求协议使用的是HTTP/1.1(默认使用持久连接),同一个页面如果包含多个资源,则只会使用一个连接,如Connection:keep-alive。如果设置了Connetion:close,则每一个请求结束都会关闭连接,新的请求又会重新建立连接。一个网页至少有几十个资源请求,这样很浪费带宽和时间。

(2)Host:这个是必需的,表示请求的服务器地址是什么,是从URL中提取出来的。比如http://www.baidu.com/的Host就是www.baidu.com。这里是80端口,默认省略;如果是其他端口,比如http://www.baidu.com:8080,则Host是www.baidu.com:8080。

(3)Accept:浏览器可以接受的媒体类型(MIME类型),如Accept:text/html代表浏览器可以接受HTML文档。“*”代表接受任何类型,如Accept:*/*。

(4)Accept-Encoding:浏览器申明自己接受的编码方法,通常指定压缩方法、是否支持压缩、支持什么格式的压缩。

3.请求正文

也叫请求数据,在使用POST请求提交表单数据的时候,这些表单数据就会被放在HTTP请求的请求正文中,以加密的形式向服务器传输。



Tags:HTTP协议   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、什么是IPFS IPFS,全称为星际文件传输系统(Inter Planetary File System),它是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议。IPFS将很多种技术(p2p网络技术...【详细内容】
2021-06-17  Tags: HTTP协议  点击:(125)  评论:(0)  加入收藏
无论你是Java、PHP开发者,还是运维人员,只要从事互联网行业,面试时都可能被问到HTTP协议相关知识。历时多天的呕心沥血,为你总结了HTTP协议的经典面试题。由于涉及内容比较繁杂...【详细内容】
2020-07-12  Tags: HTTP协议  点击:(108)  评论:(0)  加入收藏
1989年,万维网(World Wide Web)创始人蒂姆·伯纳斯·李(Tim BernersLee)发表了一篇关于在互联网上建立超链接文档系统的想法的论文,为HTTP的诞生奠定了基础,这是当...【详细内容】
2020-07-09  Tags: HTTP协议  点击:(103)  评论:(0)  加入收藏
前言:从本篇开始,正式介绍HTTP的协议,力图简洁和有效罗列出HTTP协议的核心知识点。1. HTTP协议概念2. HTTP通过请求URI来定位资源3. 告知服务器意图的HTTP方法4. HTTP通过持久...【详细内容】
2020-03-08  Tags: HTTP协议  点击:(128)  评论:(0)  加入收藏
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。HTTP协议是前端人员学习的入门级知识点,同时它也在不...【详细内容】
2020-03-07  Tags: HTTP协议  点击:(65)  评论:(0)  加入收藏
什么是长连接?长连接还是短连接相比于短连接,长连接更节省资源。如果每发送一条消息就要创建链路、发起握手认证、关闭链路释放资源,会损耗大量的系统资源。长连接只在首次创建...【详细内容】
2019-12-23  Tags: HTTP协议  点击:(84)  评论:(0)  加入收藏
在TCP/IP的模型图中,读者可以看到,HTTP协议位于最上层的应用层,它是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个协议。HTTP是一个由请求和响应组成的、标...【详细内容】
2019-11-26  Tags: HTTP协议  点击:(97)  评论:(0)  加入收藏
0X01 HTTPHTTP是一个应用层的面向对象的协议。0X02 抓包工具Wireshark、burpsuite、Fiddler0X03 POST请求 POST /user/avatar/srote HTTP/1.1 第一部分(请求行)Host: www.moz...【详细内容】
2019-11-04  Tags: HTTP协议  点击:(174)  评论:(0)  加入收藏
负责域名解析的DNS 服务首先,用户访问一个域名,会经过 DNS 解析DNS(Domain Name System),它和 HTTP 协议一样是位于应用层的协议,主要提供域名到IP 的解析服务。我们其实不用域...【详细内容】
2019-10-24  Tags: HTTP协议  点击:(170)  评论:(0)  加入收藏
HTTP协议原理HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议HTTP的重要应用之一是WWW服务www,全称World Wide Web,常称为Web,中文译为”万维网”HTTP协议...【详细内容】
2019-09-29  Tags: HTTP协议  点击:(153)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条