HTTP工作原理详解

article/2025/3/13 21:19:50

1. HTTP简介


         HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

         在了解HTTP如何工作之前,我们先了解计算机之间的通信。

2. 计算机相互之间的通信


        互联网的关键技术就是TCP/IP协议。两台计算机之间的通信是通过TCP/IP协议在因特网上进行的。实际上这个是两个协议:

        TCP : Transmission Control Protocol 传输控制协议和IP:Internet Protocol  网际协议。

        IP:计算机之间的通信

        IP协议是计算机用来相互识别的通信的一种机制,每台计算机都有一个IP.用来在internet上标识这台计算机。  IP 负责在因特网上发送和接收数据包。通过 IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。IP 负责将每个包路由至它的目的地。

        IP协议仅仅是允许计算机相互发消息,但它并不检查消息是否以发送的次序到达而且没有损坏(只检查关键的头数据)。为了提供消息检验功能,直接在IP协议上设计了传输控制协议TCP.

       TCP : 应用程序之间的通信

       TCP确保数据包以正确的次序到达,并且尝试确认数据包的内容没有改变。TCP在IP地址之上引端口(port),它允许计算机通过网络提供各种服务。一些端口号为不同的服务保留,而且这些端口号是众所周知。

       服务或者守护进程:在提供服务的机器上,有程序监听特定端口上的通信流。例如大多数电子邮件通信流出现在端口25上,用于wwww的HTTP通信流出现在80端口上。

       当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信,占用两个计算机之间整个的通信线路。TCP 用于从应用程序到网络的数据传输控制。TCP 负责在数据传送之前将它们分割为 IP 包,然后在它们到达的时候将它们重组。

       TCP/IP 就是TCP 和 IP 两个协议在一起协同工作,有上下层次的关系。

       TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。IP 负责计算机之间的通信。TCP 负责将数据分割并装入 IP 包,IP 负责将包发送至接受者,传输过程要经IP路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址,然后在它们到达的时候重新组合它们。

3. HTTP协议所在的协议层


      HTTP是基于TCP协议之上的。在TCP/IP协议参考模型的各层对应的协议如下图,其中HTTP是应用层的协议。

     

4. HTTP请求响应模型


       HTTP由请求和响应构成,是一个标准的客户端服务器模型(B/S)。HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:

       HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

5. HTTP工作过程


     一次HTTP操作称为一个事务,其工作整个过程如下:

     1 ) 、地址解析

     如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm

     从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:

     协议名:http

     主机名:localhost.com

     端口:8080

     对象路径:/index.htm

     在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。

     2)、封装HTTP请求数据包

     把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

     3)、封装成TCP包,建立TCP连接(TCP的三次握手)

       在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口

     4)客户机发送请求命令

       建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

     5)服务器响应

     服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

        实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

     6)服务器关闭TCP连接

     一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码   

Connection:keep-alive

    TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

6. HTTP协议栈中各层数据流    


        首先我们看看客户端请求的时候,数据在各层协议的数据组织如下图:

         

       而服务器解析客户机请求就是反向操作的过程,如下图:

           

       客户机发起一次请求的时候:

       客户机会将请求封装成http数据包-->封装成Tcp数据包-->封装成Ip数据包--->封装成数据帧--->硬件将帧数据转换成bit流(二进制数据)-->最后通过物理硬件(网卡芯片)发送到指定地点。

       服务器硬件首先收到bit流....... 然后转换成ip数据包。于是通过ip协议解析Ip数据包,然后又发现里面是tcp数据包,就通过tcp协议解析Tcp数据包,接着发现是http数据包通过http协议再解析http数据包得到数据。

7. HTTPS实现原理    


        HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。其所用的端口号是443。

         SSL:安全套接层,是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用。通过证书认证来确保客户端和网站服务器之间的通信数据是加密安全的。

1、加解密算法:

       有两种基本的加解密算法类型:

      1)、对称加密(symmetrcic encryption):密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES,RC5,3DES等;

       对称加密主要问题是共享秘钥,除你的计算机(客户端)知道另外一台计算机(服务器)的私钥秘钥,否则无法对通信流进行加密解密。解决这个问题的方案非对称秘钥。

      2)、非对称加密:使用两个秘钥:公共秘钥和私有秘钥。私有秘钥由一方密码保存(一般是服务器保存),另一方任何人都可以获得公共秘钥。

      这种密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

2、https的通信过程

   下面看一下https的通信过程:

   

过程大致如下:

 1、tcp连接和获取证书:

       SSL客户端通过TCP和服务器建立连接之后(443端口),并且在一般的tcp连接协商(握手)过程中请求证书。

      即客户端发出一个消息给服务器,这个消息里面包含了自己可实现的算法列表和其它一些需要的消息,SSL的服务器端会回应一个数据包,这数据包里面确定了这次通信所需要的算法,然后服务器将自己的身份信息以证书的形式发回客户端。证书里面包含了服务器信息:域名或者服务地址、加密公钥、以及证书的颁发机构。   

  2、Client在收到服务器返回的证书后处理:

       1)验证证书的合法性:颁发证书的机构是否合法、并使用这个机构的公共秘钥确认签名是否有效,确保证书中列出的域名就是它正在连接的域名。如果是浏览器客户端,若证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。

      2)  如果确认证书有效,那么生成对称秘钥并使用服务器的公共秘钥进行加密。然后发送给服务器。

 3、服务端接收客户端发来的数据之后要做以下的操作:

       使用自己的私钥将信息解密取出密码,使用密码解密客户端发来的握手消息,并验证HASH是否与浏览器发来的一致。

       使用密码加密一段握手消息,发送给客户端。客户端解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束。

 4、之后所有的通信数据将由之前浏览器生成的随机密码并利用加密算法进行加密。

https通信的优点:

1)客户端产生的密钥只有客户端和服务器端能得到;

2)加密的数据只有客户端和服务器端才能得到明文;

3)客户端到服务端的通信是安全的 

3、非对称加密算法RSA的加密解密原理


1、每个用户都有一对私钥和公钥。

  •      私钥用来进行解密和签名,是给自己用的。

  •      公钥由本人公开,用于加密和验证签名,是给别人用的。

2、当该用户发送文件时,用私钥签名,别人用他给的公钥解密,可以保证该信息是由他发送的。即数字签名。

3、当该用户接受文件时,别人用他的公钥加密,他用私钥解密,可以保证该信息只能由他看到。即安全传输.

4、数字证书CA

        数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机 构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。实际上,数字证书就是经过CA认证过的公钥

5、CA认证流程

SSL双向认证步骤:

        HTTPS通信双方的服务器端向CA机构申请证书,CA机构是可信的第三方机构,它可以是一个公认的权威的企业,也可以是企业自身。企业内部系统一般都使用企业自身的认证系统。CA机构下发根证书、服务端证书及私钥给申请者;

        HTTPS通信双方的客户端向CA机构申请证书,CA机构下发根证书、客户端证书及私钥各申请者;

        客户端向服务器端发起请求,服务端下发服务端证书给客户端。客户端接收到证书后,通过私钥解密证书,并利用服务器端证书中的公钥认证证书信息比较证书里的消息,例如域名和公钥与服务器刚刚发送的相关消息是否一致,如果一致,则客户端认为这个服务器的合法身份;

        客户端发送客户端证书给服务器端,服务端接收到证书后,通过私钥解密证书,获得客户端的证书公钥,并用该公钥认证证书信息,确认客户端是否合法;

        客户端通过随机秘钥加密信息,并发送加密后的信息给服务端。服务器端和客户端协商好加密方案后,客户端会产生一个随机的秘钥,客户端通过协商好的加密方案,加密该随机秘钥,并发送该随机秘钥到服务器端。服务器端接收这个秘钥后,双方通信的所有内容都都通过该随机秘钥加密;

7. HTTP各种长度限制   


1. URL长度限制

        在Http1.1协议中并没有提出针对URL的长度进行限制,RFC协议里面是这样描述的,HTTP协议并不对URI的长度做任何的限制,服务器端必须能够处理任何它们所提供服务所能接受的URI,并且能够处理无限长度的URI,如果服务器不能处理过长的URI,那么应该返回414状态码。

        虽然Http协议规定了,但是Web服务器和浏览器对URI都有自己的长度限制。

        服务器的限制:我接触的最多的服务器类型就是Nginx和Tomcat,对于url的长度限制,它们都是通过控制http请求头的长度来进行限制的,nginx的配置参数为large_client_header_buffers,tomcat的请求配置参数为maxHttpHeaderSize,都是可以自己去进行设置。

        浏览器的限制:每种浏览器也会对url的长度有所限制,下面是几种常见浏览器的url长度限制:(单位:字符)

IE : 2803

Firefox:65536

Chrome:8182

Safari:80000

Opera:190000 

        对于get请求,在url的长度限制范围之内,请求的参数个数没有限制。

2. Post数据的长度限制

        Post数据的长度限制与url长度限制类似,也是在Http协议中没有规定长度限制,长度限制可以在服务器端配置最大http请求头长度的方式来实现。

3. Cookie的长度限制

        Cookie的长度限制分这么几个方面来总结。

                (1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况

                IE :原先为20个,后来升级为50个

                Firefox: 50个

                Opera:30个

                Chrome:180个

                Safari:无限制

        当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

(2) 浏览器所允许的每个Cookie的最大长度

        Firefox和Safari:4079字节

        Opera:4096字节

        IE:4095字节

(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。

4. Html5 LocalStorage

       Html5提供了本地存储机制来供Web应用在客户端存储数据,尽管这个并不属于Http协议的一部分,但是随着Html5的流行,我们可能需要越来越多使用LocalStorage,甚至当它普及的时候跟它打交道就会同今天我们跟Cookie打交道一样多。

        对于LocalStorage的长度限制,同Cookie的限制类似,也是浏览器针对域来限制,只不过cookie限制的是个数,LocalStorage限制的是长度:

Firefox\Chrome\Opera都是允许每个域的最大长度为5MB

但是这次IE比较大方,允许的最大长度是10MB


http://chatgpt.dhexx.cn/article/mh9mGify.shtml

相关文章

Http--工作原理

参考自 转载自 温习以下知识点: 1、TCP 2、TCP的3次握手和4次挥手 3、HTTP 4、HTTPS 5、SPDY 6、HTTP2.0 7、隧道 8、代理 9、InetAddress和InetSocketAddress一、TCP OSI七层协议(网络体系下的关系) 熟记这七层协议,发送时从…

web应用程序工作原理和HTTP原理

web程序工作原理 web程序大致可分为静态网站和动态网站,静态网站使用HTML语言编写,代码文件放在Web服务器,用户使用浏览器通过HTTP协议请求访问Web服务器上的Web页面,Web服务器将接收到的用户请求处理后,再发送给客户端…

HTTP介绍、原理

HTTP 与 HTTPS 有哪些区别? HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。HTTP 连接建立相…

HTTP与HTTPS的工作原理

普通HTTP请求存在的问题 HTTP 本身是明文传输的,没有经过任何安全处理。例如用户在百度搜索了一个关键字,比如“苹果手机”,中间者完全能够查看到这个信息,并且有可能打电话过来骚扰用户。也有一些用户投诉使用百度时(官网&#x…

HTTP的工作原理

敲牛腩新闻发布系统的时候其实基本上就是按照视频中的讲解一步一步的进行,里面涉及到的知识大部分都是自己之前没有接触,它算开了个头剩下的就是如何去解决这些问题了。 在该系统的编码完成后,首先想到的就是发布了这在之前的博客&#xff08…

HTTP协议:工作原理

1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定…

http协议原理

HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态…

HTTP原理与实现

一、基本概念 一、基本原理* 1、全称: HyperText Transfer Protocol (超文本传输协议) 2、底层实现协议:建立在 TCP/IP 上的无状态连接。 3、基本作用:用于客户端与服务器之间的通信,规定客户端和服务器之间的通信格式。包括请…

HTTP协议原理详解

文章目录 TCP协议与HTTP协议TCP 和HTTP的渊源HTTP 的版本HTTP/0.9HTTP/1.0HTTP/1.1HTTP/2.0 HTTP/1.1相较于 HTTP/1.0 协议的区别HTTP1.0运行方式HTTP1.1运行方式 HTTP/2.0 与HTTP/1.1 的区别区别:HTTP/2为什么是二进制HTTP/2多路传输消息头为什么需要压缩服务器推送…

@http工作原理及使用

文章目录 Http协议介绍Http工作原理访问网站分析Http请求方法Http响应方法http相关术语 Http协议介绍  HTTP 全称:Hyper Text Transfer Protocol 中文名:超文本传输协议------包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些…

深入浅出HTTPS工作原理

深入浅出HTTPS工作原理 看了这么多篇讲https和加密算法的文章,只有阮一峰老师和这位老师的总结比较好。特此转载。 本文经授权转自腾讯蓝鲸(微信号:Tencent_lanjing) 蔡卓伦 14年毕业后加入腾讯sng增值产品部,一直从事…

HTTP详解 1 -工作原理

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 1. HTTP简介 HTTP协议(HyperTe…

关于HTTP的工作原理

对于http,相信只要是个码农就都不会很陌生,但是如果有人问你,你对http了解吗?或者问当我们在浏览器的地址栏中输入一个网址如“http://www.baidu.com”之后发生了什么,为什么会出现【百度一下,你就知道】这…

HTTP协议的工作原理

一、HTTP协议用于客户端和服务端之间的通信 1、http协议规定,请求是从客户端发出,最后服务器端相响应请求并返回 2、请求报文是由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。 3、响应报文基本上由…

HTTP和HTTPS的工作原理及区别

一、HTTP和HTTPS的基本概念 HTTP(HyperText Transfer Protocol:超文本传输协议):是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从Web服…

HTTP详解(1)-工作原理

1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定…

VBS带你领略脚本语言的快乐!(入门篇)

VBS语言基础入门 前言 小弟初来乍到,自诩高中时曾自学过一点VBS脚本语言基础,感觉不错,想把学习到的东西记录下来,和大家分享一下,由于小弟我学艺不精,有误的地方还请多多指教。    入门篇是给电脑小白做…

◎Vbs脚本编程简明教程之十 —— Vbs脚本编程常用的编辑器

Vbs脚本常用的编辑器当然是notapad,不过这个编辑器的功能当然实在是太弱了一点,其实有很多的专用的脚本编辑器可以大大方便vbs脚本的编写。我常用的有两种: 1、VBSEDit汉化版 2、primalscript汉化版,可以对30多种脚本进行编辑

VBS基础语法讲解

VBS基础语法讲解 文章目录 VBS基础语法讲解引言 一、编辑VBS的相关软件二、变量的定义一点说明 三、输入与输出1、输入2、输出 四、判断语句五、循环语句1、do -- loop 循环1)until2)while3)exit do 2、for -- next 循环 引言 最近在学习VBS…

bat编程和vbs编程入门

先看看bat(批处理文件)中一些简单的命令 开头第一句 echo off 这句话的意思是后面每句都关闭回显,(你可以不加这句直接echo 几行试试)on打开命令的回显状态;off关闭命令的回显状态。关于“回显”&#xff…