Http协议的简介

一、首先来一段网上的经典问题,在网络中,传输数据需要面临的三个问题:

1、客户端是如何知道所请求的内容的位置?

2、当知道了所求的内容后,如何去获取内容?

3、所求的内容将以何种形式来呈现在客户端来便于客户去识别?

大家可以先自己想想看。

-----------------------------------------------------------------------------------------------------------------

二、接下来我来公布答案,上面的3个问题实际上使用到了3个技术:

1、统一资源定位符(URL

2、超文本传输协议(Http

3、超文本标记语言(HTML

这篇文章将主要讲解Http协议。首先就是这是一个应用层的传输协议。Http的网络层次如下图:


可以看出Http协议是基于TCP/IP协议的。而TCP的连接可以理解为进程与进程之间的通讯。这时是需要Socket的。那什么事Socket呢?我的理解很简单就是IP+TCP/UDP+进程端口号。

TCP的连接需要3次握手,关闭需要4次握手。这些都是很重要的,我会另做总结的。

对了,这里推荐给大家一个比较好的可以观察Http连接的应用软件叫Fiddle。大家可以用用试试。

三、Http的请求和响应

1、请求(Request

3部分组成:请求行、http协议头、请求体(内容,是可有可无的)

说的这里就不得不提一下http的请求方式有两种:GetPost

他们两个的最大的区别就是:就是上面说的可有可无的东西。即请求体。Get请求是不存在请求体的,他主要是用于从服务器中获取内容的。而Post是由客户端向服务器发送内容的方式,这里的内容就会在请求体中,从而获取服务器中的内容。所以Post请求必须具有请求体。

举个例子:大家在看网页时,随便点开一个论坛网站,这实际上就是Get请求。但是这时想在论坛上下资源的时候会提示登陆,然后你就写入你的用户名和密码,单击登陆。好了,这个过程就是一个Post请求。你的用户名和密码会存放在请求体中被发送至服务器中的。

2、响应(response

这部分也是由三个部分组成的:状态行、http协议头和返回的内容。

其中状态行会提示你的响应是否成功。其中状态行中出现的状态码是200表示响应成功。如果是404或者是500等表示你响应失败。

四、http如何进行状态的保持

Http协议是无状态的。对于接收Http协议请求的服务器来说,并不会知道每一次的请求是来自同一个客户端还是其他的客户端。每一次的请求对于服务器都是陌生的。所以我们需要额外的手段来进行处理。

这里要提一下Cookie技术。Http是使用了Cookie来保持状态的。具体的过程如下图:


这个过程就和你去图书馆借书一样,你第一次去图书馆。谁认识你啊,来了是吧。可以给你借书,不过还要办张借书证。这个借书证就是Cookie。当你下次还书或者再次借书的时候记得带上借书证。好的,现在图书馆管理员拿着你的借书证就认识你了。这样你就和图书馆保持着一种借书还书的状态啦。

同理,客户端和服务器端的借书证就是Cookie了。

说到Cookie就会有人想到Session

   Session它是JSP的九大内置对象之一。那什么是Session呢?我的理解是每一个用户和服务器之间的一次会话就是一个SessionWeb中是这样解释的:用户通过浏览器进入某个页面到关闭这个页面所经历的时间被称为一个SessionSession是存储在服务器中的,比如当我们在访问某一个服务器时,我们在浏览器中不停的切换页面。这个时候就需要服务器的Session来判断(这里会需要SessionID的,一个32为的16进制数)这个用户是不是同一个用户。

而我们的Cookie是存储在每一个用户的客户端浏览器中的。


猜你喜欢

转载自blog.csdn.net/LULEI1217/article/details/50954199