HTTP——资源、URL、连接
来源:互联网 发布:iwebshop 数据库字典 编辑:程序博客网 时间:2024/04/29 10:18
作为WEB开发人员,HTTP协议是必不可少的一道菜,HTTP协议的目的很明确,通过HTTP搬运游弋在网上的各种资源,达到共享,其核心思想只有四个字请求响应,此协议看上去很简洁,但他的诞生却给互联网带来了质的飞跃。
资源共享,这其中就会牵扯到几个东西,什么是资源?去哪找资源?怎么共享?也就是经常提到的WHAT?WHERE?HOW?放到HTTP中来,是这样几个概念:媒体类型、URL(URI、URN)、报文、连接等。
资源
构建资源节约型社会,这是咱们中国新时期提出的建设口号,何为资源?一切皆资源,这是从整个世界的角度出发,那从互联网角度看什么是资源呢?文本文件、Word文件、图片文件、电影文件等,都是属于WEB资源,也称为MIME类型。目前,浏览器和WEB服务器所支持的类型有数百个,可查看TOMCAT_HOME\conf\web.xml,在里面可以看到很多支持的MIME类型。
URL
解决了WHAT,WHERE呢?一般资源会在另外一台主机,或者WEB服务器上,互联网上散布着数以亿计的机器,如何定位?URI(UniformResource Identifier)解决了这个问题,暂且就把URI、URN都叫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就是在HTTP和TCP之间插入了(TLS或SSL)密码加密层。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套接字编程了,也就是JAVA的SOCKET,这是操作系统提供一些操纵其TCP连接的工具,这个套接字API向HTTP程序员隐藏了TCP和IP的所有细节,这方面大家可能都代码实现过,就不用多说了。下节的报文和连接构成了HOW。
- HTTP——资源、URL、连接
- 《HTTP 权威指南》读书笔记——URL与资源
- HTTP学习笔记——URL与资源
- 关于HTTP(二)——URL与资源
- [HTTP权威指南读书笔记]第二章—URL与资源
- 【HTTP】URL与资源
- http—url
- HTTP协议学习(一)——URL与资源,报文结构详解
- 《HTTP权威指南》学习笔记(二)—URL和资源
- HTTP协议(二)URL与资源
- HTTP学习笔记:URL与资源
- 1.http权威指南:url与资源
- 统一资源定位符——URL
- Mark——URL-统一资源定位器
- URL/HTTP/心跳包和长连接
- [SSP]HTTP权威指南——URL
- HTML — HTTP URL 中的特殊字符
- HTTP协议(1)—HTTP的连接
- 如何在 Ubuntu Linux 中为 VirtualBox 开启 USB 支持
- python GUI --Model, View, Controller
- 线程
- 50年代末至60年代末
- spring声明式事务管理配置及说明
- HTTP——资源、URL、连接
- 熔炉--电影观后感
- 70年代的计算机
- 分享下让苹果快速通过新版本的经验(以前没告诉过别人)
- 最近我和你有一样的心情!
- 科学计算
- 【C/S通信交互之Socket篇】Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架!
- 手把手教你写专利申请书/如何申请专利
- 计算机的过程检控