文档章节

HTTP协议通信原理 (资源)

寰宇01
 寰宇01
发布于 07/23 22:53
字数 2899
阅读 7
收藏 0

                                                      了解HTTP

HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。

HTTP 是一个网络协议,是专门用来帮你传输 Web 内容

HTTPS   HTTP 协议”和“SSL/TLS 协议”的组合。

 http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态

· 客户端与服务器端的一次通信,就是一次会话

· 实现状态保持的方式:在客户端或服务器端存储与会话有关的数据

· 存储方式包括cookie、session,会话一般指session对象

· 使用cookie,所有数据存储在客户端,注意不要存储敏感信息

· 推荐使用sesison方式,所有数据存储在服务器端,在客户端cookie中存储session_id

· 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据

· 注意:不同的请求者之间不会共享这个数据,与请求者一一对应

HTTP使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型都被模型化,即Web服务器告诉Web浏览器该文件所具有的种类,是文档、GIF格式图像声音文件还是应用程序。它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。

       端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。

     CPU通过接口寄存器或特定电路与外设进行数据传送,这些寄存器或特定电路称之为端口。

      端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。

 

HTTP 和 TCP 之间的关系

TCP 协议是 HTTP 协议的基石——HTTP 协议需要依靠 TCP 协议来传输数据。

在网络分层模型中,TCP 被称为“传输层协议”,而 HTTP 被称为“应用层协议”。

TCP 被称为“面向连接”的传输层协议。传输层主要有两个协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。

有很多常见的应用层协议是以 TCP 为基础的,比如“FTP、SMTP、POP、IMAP”等。

 

HTTP 协议如何使用 TCP 连接:HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”)

HTTP请求信息和响应信息的格式

请求:

(1)请求行

(2)请求头信息

(3)请求主题信息(可以没有)

(4)头信息结束后和主题信息之间要空一行

请求行又分3部分

请求方法   、请求路径、所用的协议

请求 方法:GET、POST、PUT、DELETE、TRACE、OPTIONS

状态码,状态文字

状态码是用来反服务器响应情况

最常见的如200 OK,404 NOT FOUND

状态文字是用来描述状态码的,便于人观察。

 

                          HTTP响应中的状态吗

状态码                           定义                           说明

1xx                                信息                           接收到请求,继续处理

2xx                                成功                           操作成功的收到,理解和接收

3xx                                重定向                         为了完成请求,必须采取进一部措施

4xx                            客户端错误                      请求的语法有错误或不能完全被满足

5xx                             服务端错误                      服务器无法完成明显有效的请求

 

常见返回值

200       ---服务器成功返回网页

301/2 ---   永久/临时重定向

304 Not  ----  未修改                  --取缓存

失败的状态码

404   ---请求的网页不存在

503   -- 服务器暂时不可用

500 ---服务器内部错误

对称加密和非对称加密

“对称加密技术”,意思就是说:“加密”和“解密”使用【相同的】密钥。

“非对称加密技术”,意思就是说:“加密”和“解密”使用【不同的】密钥。

)“非对称加密”能干的事情比“对称加密”要多。

                                                    HTTP通信过程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤

1、建立TCP连接

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

 

2、Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令

例如:GET/sample/hello.jsp HTTP/1.1。

 

3、 Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

 

4、Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,

HTTP/1.1 200 OK

应答的第一部分是协议的版本号和应答状态码。

5、Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

 

6、Web服务器向浏览器发送数据

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

 

7、Web服务器关闭TCP连接

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

Connection:keep-alive

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

                                               HTTP请求格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:

  • 请求方法URI协议/版本

  • 请求头(Request Header)

  • 空行

  • 请求正文

下面是一个HTTP请求的例子:

1GET/sample.jspHTTP/1.1
2Accept:image/gif.image/jpeg,*/*
3Accept-Language:zh-cn
4Connection:Keep-Alive
5Host:localhost
6User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
7Accept-Encoding:gzip,deflate
8username=jinqiao&password=1234

请求方法URI协议/版本

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1

以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

 

请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

1Accept:image/gif.image/jpeg.*/*
2Accept-Language:zh-cn
3Connection:Keep-Alive
4Host:localhost
5User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
6Accept-Encoding:gzip,deflate.

 

请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234

在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

                                                      HTTP请求方法

 

方法

          描述

GET

客户端请求指定资源信息,服务器返回指定资源

HEAO

只请求响应报文中的HTTP首部

POST

将客户端的数据提交到服务器

PUT

用从客户端向服务器传送的数据取代指定文档内容

DELETE

请求服务器删除Request-URI所表示的资源

MOVE

请求服务器将指定的页面移至另一个网络地址

 

这里只讨论GET方法与POST方法。

GET方法

GET方法是默认的HTTP请求方法,我们日常用GET方法来提交表单数据,然而用GET方法提交的表单数据只经过了简单的编码,同时它将作为URL的一部分向Web服务器发送,因此,如果使用GET方法来提交表单数据就存在着安全隐患上。

 

例如:Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB

从上面的URL请求中,很容易就可以辩认出表单提交的内容。(?之后的内容)另外由于GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大。

POST方法

POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。POST方法克服了GET方法的一些缺点。通过POST方法提交表单数据时,数据不是作为URL请求的一部分而是作为标准数据传送给Web服务器,这就克服了GET方法中的信息无法保密和数据量太小的缺点。因此,出于安全的考虑以及对用户隐私的尊重,通常表单提交时采用POST方法。

从编程的角度来讲,如果用户通过GET方法提交数据,则数据存放在QUERY_STRING环境变量中,而POST方法提交的数据则可以从标准输入流中获取。

 

链接:HTTP 断点续传(PHP实现)https://mp.weixin.qq.com/s/nOUIj9q6-8b7_os5zQvxPQ

HTTP协议中POST、GET、HEAD、PUT等请求方法及相应值得含义  https://mp.weixin.qq.com/s/_X-eqZHlWVX3QA_evR8aRA

 

 

OSI模型 :https://mp.weixin.qq.com/s/5pxA2kyQO-tiSMbQRRZBnA

网际协议 -- IP : https://mp.weixin.qq.com/s/tyz2m3cdynCuqgKIPI3hAQ

传输控制协议 -- TCP : https://mp.weixin.qq.com/s/5t3MAed4VsYiFr84E6Dm-w

UNIX下的五种IO模型 : https://mp.weixin.qq.com/s/bXl9yKTuUyjAoR9FK7MzSg

TCP/IP 协议族简介 : https://mp.weixin.qq.com/s/ZegPYeJk5vuA55S3euPnrg

HTTP 协议简介 : https://mp.weixin.qq.com/s/oOJK-OU9U4GDkvw8izMKNw

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文转载自:https://mp.weixin.qq.com/s/ZO8JN04yo5WPdDA6MhkBnQ

共有 人打赏支持
寰宇01
粉丝 7
博文 273
码字总数 660683
作品 0
南京
程序员
私信 提问
RESTful Web服务谁能通俗易懂的讲解下呢?

基于资源的一种架构方式,每个资源有自己特定的uri。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段...

缪斯的情人
2012/08/01
982
7
01套按字及http基础知识

01套按字及http基础知识 ——以下内容摘自马哥教育课堂 OSI参考模型 资源子网(3)+通信子网(4) 应用层细节 通信细节 用户空间 内核空间 每种用户空间程序有自己的通信协议 进程之间通信如何标...

zhuhc1988
2017/01/08
0
0
WebSocket 实战之——【WebSocket 原理】

一、WebSocket是什么? HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)。 首先HTTP有1.1和1.0之说,也就是所谓的kee...

tinywan1227
2016/09/21
0
0
Java Socket编程----通信是这样炼成的

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术...

浮躁的码农
2017/11/07
0
0
web服务器、应用服务器、web容器、反向代理服务器区别与联系

我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难。有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现。本文将带读者对这四个相似概念如何...

younger008
2017/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最重要的是做什么,而不是怎么做。

最重要的是做什么,而不是怎么做。 做什么是战略,怎么做是战术。将军下令说,天黑前拿下这座山头,这是战略。手下的士兵可以不知道为什么要拿下这座山头,还非得是天黑之前,但士兵必须知道...

我是菜鸟我骄傲
今天
1
0
w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
2
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
3
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部