HTTP——资源、URL、连接

来源:互联网 发布:iwebshop 数据库字典 编辑:程序博客网 时间:2024/04/29 10:18

      作为WEB开发人员,HTTP协议是必不可少的一道菜,HTTP协议的目的很明确,通过HTTP搬运游弋在网上的各种资源,达到共享,其核心思想只有四个字请求响应,此协议看上去很简洁,但他的诞生却给互联网带来了质的飞跃。

     资源共享,这其中就会牵扯到几个东西,什么是资源?去哪找资源?怎么共享?也就是经常提到的WHATWHEREHOW?放到HTTP中来,是这样几个概念:媒体类型、URLURIURN)、报文、连接等。

     资源

     构建资源节约型社会,这是咱们中国新时期提出的建设口号,何为资源?一切皆资源,这是从整个世界的角度出发,那从互联网角度看什么是资源呢?文本文件、Word文件、图片文件、电影文件等,都是属于WEB资源,也称为MIME类型。目前,浏览器和WEB服务器所支持的类型有数百个,可查看TOMCAT_HOME\conf\web.xml,在里面可以看到很多支持的MIME类型。

     URL

     解决了WHATWHERE呢?一般资源会在另外一台主机,或者WEB服务器上,互联网上散布着数以亿计的机器,如何定位?URIUniformResource Identifier)解决了这个问题,暂且就把URIURN都叫URL吧,比如要获取百度的一张图片:

http://www.baidu.com/images/hello.gif

                                                                 |                  |                         |

                               使用HTTP协议  进入百度       获取名为images/hello.gif的资源

     连接

     资源传输就要靠网络,离不开七层协议,HTTP属于应用层,是基于TCP/IP协议,也就是基于传输层和网络层,按照道理WEB开发人员是不需要了解TCP/IP具体细节,只需将需要的报文(后面讲)发送给传输层即可,TCP/IP会将要传输的信息准确无误的传送至目的地址。建立一个连接需要三次握手,这个我们先暂时忽略,下面是Web浏览器通过TCP连接于Web服务器交互的过程:


      上图中TCP为数据的传输提供了可靠的数据管道,精确些,应该叫可靠的比特传输管道,从TCP连接一端填入的字节会从另一端以原有的顺序、正确地传送出来,记住,这里传送的是二进制数据。

      TCP的数据时通过名为IP分组(或IP数据包)的小数据块来发送的,从数据流向来看就是“HTTPover TCP over IP”HTTPS就是在HTTPTCP之间插入了(TLSSSL)密码加密层。HTTP传送一条报文时,会以流的形式将报文数据的内容通过一条打开TCP连接按序传输,TCP收到数据流之后,会将数据流砍成类似于段的小数据块,并封装在IP分组中,通过因特网传输,这过程,HTTP程序员是看不到的。

     每个TCP段都是由IP分组承载,从一个IP地址发送到另一个IP地址。每个IP分组都包括:

     一个IP分组首部(20字节);

     一个TCP段首部(20字节);

     一个TCP数据块(0或多个字节)。

      IP首部包含了源和目的IP地址、长度和其他一些标记。TCP段首部包含了TCP端口号、TCP控制标记,以及用于数据排序和完整性检查的一些数字值,如下图:


    为保持TCP连接的正确运行,TCP是通过端口号来保持所有这些连接的正确运行,IP地址将你连接到正确的计算机,端口将你连接到正确的应用程序上去,TCP连接是通过4个值来识别的:

<IP地址、源端口号、目的IP地址、目的端口号>

    这4个值一起唯一定义了一条连接。说了这么多,其实和HTTP程序员最有关系的就是TCP套接字编程了,也就是JAVASOCKET,这是操作系统提供一些操纵其TCP连接的工具,这个套接字APIHTTP程序员隐藏了TCPIP的所有细节,这方面大家可能都代码实现过,就不用多说了。下节的报文和连接构成了HOW

1 0
原创粉丝点击