热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

工作流程_HTTP协议及其工作流程

篇首语:本文由编程笔记#小编为大家整理,主要介绍了HTTP协议及其工作流程相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了HTTP协议及其工作流程相关的知识,希望对你有一定的参考价值。


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

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


2-8  HTTP请求

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

HTTP的工作流程如下。

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

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

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

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

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

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

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

 

    2.封装HTTP请求

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

    3.封装TCP

    第三步就是封装TCP包,建立TCP连接,也就是常说的“三次握手”。由于HTTP位于最上层的应用层,所以HTTP在工作之前要先由TCPIP协议建立网络连接,这就是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

2.请求头

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

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

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

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

3.请求正文

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



节选自《细说AJAX与jQuery》


HTTP协议及其工作流程




推荐阅读
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • linux 禁止指定ip访问
    linux中如何禁止指定的ip访问呢?比如被别人暴力破解,被别人使用不同的密码尝试登录:所以我想直接禁用这些ip的访问.怎么办呢?解决方案:修改配置文件etchosts.deny把 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
author-avatar
zhangsheng7_215
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有