关于HTTP通信的全过程

本文详细介绍了HTTP通信的全过程,从TCP连接的建立到关闭,涵盖了请求命令、服务器处理请求、响应报文等内容,并讨论了不同I/O模型下服务器的工作方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP的相关概念

HTTP是处于应用层的协议,使用tcp传输层协议进行可靠的传送。因此,需要提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的HTTP和HTTPS的传输协议,但因特网还有其他网络应用系统(FTP,SMTP等)。

HTTP通信的全过程

1.建议TCP连接
在HTTP工作开始之前,web浏览器首先要通过网络与web服务器建立连接,连接通过TCP协议完成,该协议与IP协议共同构建Internet。HTTP是比TCP更高层次的应用层协议,只有底层协议建立之后才能进行更深层次协议的连接。因此要先建立TCP连接,TCP连接的端口一般为80
web服务器会创建一个新的套接字将套接字绑定在80端口,同时监听80端口的转台等待连接。web浏览器会获取IP地址和端口号哦,同时创建新的套接字,连接到服务器对应的IP和端口上创建HTTP连接
2.web浏览器向服务器发送请求命令
建立了连接之后,浏览器向服务器发送请求命令例如:GET/sample/hello.jsp HTTP/1.1。
常用的请求:GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS
3.web服务器接收请求
web服务器接收请求相应模型分为以下4种
·单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应
·多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求
·复用I/O模结构:启用一个进程,同时响应N个连接请求
·复用的多进程I/O模型:启用M个进程。每个进程响应N个连接请求,同时接收M*N个请求
4.web服务器处理请求
服务器对请求报文进行解析,并获取请求的资源以及请求办法等相关信息,根据方法,资源,首部和可选的主体部分对请求进行处理
5.web服务器应答
服务器获取请求报文中请求的资源web服务器,即存放了了web资源的服务器,负责向请求者提供对方请求的静态资源,或者是动态运行后生成的资源,一旦web服务器识别出了资源,就会执行请求方法中描述的动作并返回响应报文,响应报文中包含响应状态码,响应首部,如果产生了响应主机的话,还包括响应主体
1)响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送回去。响应报文中通常包括:描述响应主体MIME类型的Content-Type首部,描述了响应主体长度的Content-Length,实际报文的主题内容和年
2)URL重定向:web服务器构建的响应并非客户端请求的资源,而是资源另外一个访问路径
3)MIME类型:web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理在一起
·魔法分类:Apache web服务器可以扫描每个资源的内容,并将其与一个已知模式表(被称为魔法文件)进行匹配,以决定每个文件的MIME类型。这样做可能比较慢,但很方便,尤其是文件没有标准扩展名时
·显式分类:可以对Web服务器进行配置,使其不考虑文件的扩展名或内容,强制特定文件或目录内容拥有某个MIME类型
·类型协商: 有些Web服务器经过配置,可以以多种文档格式来存储资源。在这种情况下,可以配置Web服务器,使其可以通过与用户的协商来决定使用哪种格式(及相关的MIME类型)“最好”
6.发送响应报文
客户端向服务器发出请求后,服务器向客户端回送应答,HTTP/1.1 200 OK。应答的第一部分是协议的版本号和应答状态码。像客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于他自己的数据以及被请求的文档
。web服务器向浏览器发送头信息后,他会发送一个空白行来表示头信息的发送到此为结束。接着他就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束
7.web服务器关闭TCP连接
一般情况下,一旦web服务器向浏览器发送了请求数据,他就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入这行代码Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络宽带
8.记录日志
最后,事务结束后,web服务器会在日志文件中添加一个条目,来描述已执行的事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值