WEB与HTTP协议相关概念介绍

本文深入探讨了HTTP协议在构建web通信中的作用,以及与之密切相关的IP、TCP和DNS服务如何协作实现数据包的高效传输。文章还详细解释了URI与URL的区别,以及它们在web地址中的应用。此外,提供了关于协议层次、IP地址与MAC地址的关联、TCP协议确保数据准确传输的机制,以及DNS服务如何解析域名到IP地址的过程。

web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列动作流程。可以说,web是建立在HTTP协议上通信的。HTTP/1.1公布于1997年1月,它是目前主流的HTTP协议版本。新一代HTTP/2.0草案刚出来,但要达到较高的使用覆盖率,仍需要时日。

与HTTP关系密切的协议:IP,TCP

负责路由的IP协议

按层次分,IP(Internet Protocol)网际协议位于网络层。TCP/IP协议族中的IP指的就是网际协议,协议名称中占据了一半位置,其重要性可见一斑。IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。IP地址指明了节点被分配到的逻辑地址MAC地址是指网卡所属的固定物理地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。

IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时,会采用ARP协议(Address Resolution Protocol)。ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

确保可靠性传输的TCP协议

按层次分,TCP位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对象。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方

为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略(three-way handshaking)。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

171230_M065_168814.png

除了上述三次握手,TCP协议还有其他各种手段来保证通信的可靠性。

负责域名解析的DNS服务

DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。计算机既可以被赋予IP地址,也可以被赋予主机名和域名。比如:www.baidu.com  用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。为了解决上述的问题,DNS服务应运而生。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

172905_ENAF_168814.png

各种协议与HTTP协议的关系

通过一张图来了解下IP协议,TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥了哪些作用(下面的图好像缺少了接收方的IP部分):

173956_VYHK_168814.png

190517_0Vq0_168814.png

URI和URL

URI统一资源标识符)相比,我们更熟悉URL(Uniform Resource Locator,统一资源定位符)。URL正是使用web浏览器等访问web页面时需要输入的网页地址。比如,http://www.baidu.com  。

统一资源标识符(URI)

URI是Uniform Resource Identifier的缩写。RFC2396分别对这3个单词进行了如下定义。

Uniform:规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外,加入新增的协议方案(如http:或ftp:)也更容易。

Resource:资源的定义是“可标识的任何东西”。另外,资源不仅可以是单一的,也可以是多数的集合体。

Identifier:表示可标识的对象。也称为标识符。

综上所述,URI就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。采用HTTP协议时,协议方案就是http。除此之外,还有ftp,mailto,telnet,file等。标准的URI协议方案有30种左右,由隶属于国际互联网资源管理的非营利社团ICANN的IANA管理颁布。

URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集。举了几种URI的例子,如下图:

180716_e6ag_168814.png

后面会频繁出现URI这个术语,在充分理解的基础上,也可用URL替换URI

URI格式

表示指定的URI,要使用涵盖全部必要信息的绝对URI绝对URL以及相对URL。相对URL,是指从浏览器中基本URI处指定的URL,形如 /image/logo.gif。让我们先来了解一下绝对URI的格式:

183556_WlpQ_168814.png

协议方案名:使用http:或https:等协议方案名获取访问资源时要指定协议类型。不区分字母大小写,最后附一个冒号(:)。也可使用data:或javascript:这类指定数据或脚本程序的方案名。

登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是类似baidu.com这种DNS可解析的名称,或是192.168.1.1这类IPv4地址名,还可以是[0:0:0:0:0:0:0:1]这样用方括号括起来的IPv6地址名。

服务器端口号:指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动使用默认端口号。

带层次的文件路径:指定服务器上的文件路径来定位特指的资源。这与UNIX系统的文件目录结构相似。

查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选。

片段标识符:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在RFC中并没有明确规定其使用方法。该项也为可选项。注:有一些用来制定HTTP协议技术标准的文档,它们被称为RFC(Request for Comments,征求修正意见书)

转载于:https://my.oschina.net/fhd/blog/507602

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值