首页 > 代码库 > 关于http协议

关于http协议

在对http协议做一些小总结之前,先复习一下网络结构:

1、OSI七层网络结构:ISO(国际标准化组织)制定的一个互联网的标准框架模型,称为开发系统互连基本参考模型。由底向上依次是:物理层,数据链路层,网络层(IP协议),运输层(TCP、UDP协议),会话层,表示层,应用层(http协议,Telnet协议,ftp协议等)。划分的依据应该是每一层不同的作用、功能,每一层也对应有不同的协议。

2、简化的TCP/IP协议:四层,网络接口层(对应物理层和数据链路层),网络层,运输层,应用层(对应会话层、表示层和应用层)

3、对各层的理解:物理层的作用就是考虑比特流信息和物理信息(电流电压)如何对应,还有一些物理设备如何连接的要求;

                        数据链路层功能是提供在相邻结点之间的链路进行数据传输的服务,数据要从一个主机传输到另一个主机,就要经过一段一段的链路;

                        网络层的功能主要是为分组交换网上不同主机间提供通信服务,并有一些路由选择策略在数据传输时帮助选择合适的路由;

                        运输层就是为两个主机中进程之间的通信提供通用的数据传输服务;

                        应用层服务的对象是应用进程,通过应用进程间的交互来完成特定的网络应用,应用层协议定义的是进程之间通信和交互的规则

 

什么是url?

url:统一资源定位符,其实就是一个网络地址,代表网络上某个资源的位置,能通过url访问到这些资源

格式:<协议>://<主机地址>:<端口>/<路径>

<主机地址>:<端口>也可以用域名来表示,例如www.imooc.com这种,不过这种在请求万维网文档的时候会先通过DNS(域名系统)解析出主机地址

http的默认端口是80,所以使用http协议的url通常可省略端口号,路径也是可省略的,如http://www.tsinghua.com.cn,

后面也可带要访问的文档的路径,如http://www.tsinghua.com.cn/chn/yxsz/index.htm

 

http协议?

http协议:超文本传输协议。应用层协议,无连接、无状态。

用户点击页面上的某个链接,该链接url为http://www.tsinghua.com.cn/chn/yxsz/index.htm,整个过程如下:

1、浏览器分析链接指向的页面的url

2、浏览器向域名系统DNS请求解析www.tsinghua.com.cn的IP地址

3、域名系统DNS解析出域名对应的服务器的IP地址为166.111.4.100

4、浏览器与服务器建立TCP连接

5、浏览器向服务器发送http请求(浏览器发出取文件命令:GET/chn/yxsz/index.htm)

6、服务器www.tsinghua.com.cn给出响应,把文件index.htm发送给浏览器

7、TCP连接释放

8、浏览器在页面上显示服务器返回的文本内容

 

虽然在发送http请求之前,要先建立TCP连接,保证数据的可靠传输,但是http协议本身是无连接的,即无需再发送请求报文前建立连接。

http协议是无状态的,也就是没有记忆功能,即使同一个客户对同一个服务器发起第二次访问,也是一次全新的请求,服务器不会知道这个客户已经发起过多少次请求,也就是每一次访问都和第一次访问是一样的。

http请求报文实在建立TCP连接的三次握手中的第三次握手时发送给服务器的,这个连接是在http响应报文从服务器发送到客户端后才断开的。

HTTP1.0和HTTP1.1的区别:1.0版本是非持续连接,也就是每请求一次要建立一次TCP连接,下一次访问又要重新建立TCP连接;而1.1版本是持续连接的机制,也就是在服务器发送响应报文之后,仍在一段时间内保持连接,以供同一个客户和该服务器之间可以发送后续的请求和响应报文,这样的话就能节省建立TCP连接产生的开销。并且一些请求方法(如OPTION,PUT,DETELE,TRACE,CONNECT等)也是在1.1才增加的。

 

HTTP请求的方法:

1、GET 请求读取由URL所标志的信息 

2、POST 给服务器添加信息

3、PUT 在指明的URL下存储一个文档

4、DELETE 删除指明的URL所标志的资源

5、HEAD 请求读取由URL所标志的信息的首部

6、TRACE 用来进行环回测试的请求报文

7、CONNECT 用于代理服务器

8、OPTION 请求一些选项的信息

 

响应报文的状态码(Status Code)都是3位数字的,分为5大类共33种:

1xx:表示通知信息的,如请求收到了或者正在进行处理

2xx:表示成功了,如接受或知道了

3xx:表示重定向,如要完成请求还必须采取进一步的行动

4xx:表示客户的差错,如请求中有错误的语法或不能完成

5xx:表示服务器的差错,如服务器失效无法完成请求

 

在服务器上存放用户的信息?

可以在http中使用cookie。机制是怎样的呢?如果某个用户在浏览一个使用了cookie的网站时,发起http请求,服务器会为这个用户生成一个唯一的识别码,并在返回给该用户的响应报文中会添加这个识别码的信息,例如:Set-cookie:1233435,然后浏览器就会在cookie文本里新增一行记录这个识别码和对应的服务器的主机名,后续会在发送的http请求报文中加上这个识别码。这样网站就可以跟踪用户1233435在该网站的活动。

关于http协议