使用HTTP协议访问WebWeb浏览器根据地址栏指定的URL从Web服务器获取文件资源(resource)等信息,从而显示网页。超文本传输??协议(HTTP,HyperTextTransferProtocol)是互联网上使用最广泛的网络协议。所有WWW文档都必须符合此标准。HTTP最初旨在提供一种发布和接收HTML页面的方式。网络基础知识TCP/IP常用的网络(包括因特网)在TCP/IP协议族的基础上运行。HTTP属于其中的一个子集。TCP/IP计算机和网络设备要相互通信,双方必须基于相同的方法。不同硬件和操作系统之间的通信需要一个规则。我们称此规则为协议。TCP/IP协议族包括:TCP、IP、ICMP、FDDI、HTTP、FTP、UDP、SNMP等TCP/IP分层管理TCP/IP协议族分为应用层、传输层、网络层和数据层链路层。TCP/IP分层的好处是,分层之后,设计变得相对简单,某一层次的应用程序只需要考虑分配给自己的任务,不需要关心其他层次的应用方法。应用层应用层决定了向用户提供应用服务时的通信活动。TCP/IP协议族中预存了各种常用的应用服务。如FTP(FileTransferProtocol,文件传输协议)和DNS(DomainNameSystem,域名系统)。HTTP协议处于应用层。传输层传输层为上层应用层提供网络连接中两台计算机之间的数据传输。传输层有两种不同的协议:TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDataProtocol,用户数据报协议)。网络层(又名网际网络层)网络层处理网络上的数据包流。数据包是通过网络传输的最小数据单位。这一层规定了到达对方计算机的路径(即所谓的传输路由),将数据包传送给对方。通过多台计算机或网络设备与其他计算机进行传输时,网络层的作用是在众多选项中选择一条传输路径。链路层(也称为数据链路层、网络接口层)处理网络的硬件部分。包括控制操作系统、硬件设备驱动程序、NI(NetworkInterfaceCard,网络适配器,即网卡),以及光纤等物理可见部分(也包括连接器等所有传输介质)。硬件的范围在链路层的范围内。TCP/IP通信传输流的发送方在层与层之间传输数据时,每经过一层,就必须标记该层所属的头信息。反之,当接收端在层与层之间传输数据时,每经过一层就会擦除相应的header。这种对数据信息进行封装的做法称为封装。与HTTP密切相关的三个协议:IP、TCP、DNS负责传输的IP协议IP(InternetProtocol)位于网络层。InternetProtocol这个名字听起来有点夸张,但确实如此,因为几乎所有使用Internet的系统都使用IP协议。TCP/IP协议族中的IP指的是InternetProtocol,它占据了协议名称的半壁江山,其重要性可见一斑。有些人可能会将“IP”与“IP地址”混淆。“IP”实际上是一种协议的名称。IP协议的作用是相互传送各种数据包。要确保确实发送给对方,需要满足各种条件。两个重要的条件是IP地址和MAC地址(媒体访问控制地址)。IP地址是指分配给节点的地址,MAC地址是指网卡所属的固定地址。IP地址可以与MAC地址配对。IP地址可以改,但MAC地址基本不变。保证可靠性的TCP协议TCP位于传输层,提供可靠的字节流服务。所谓字节流服务(ByteStreamService)是指,为了方便传输,将一大块数据以段(segment)为单位分成数据包进行管理。而可靠的传输服务是指能够准确、可靠地向对方传输数据。总而言之,TCP协议对数据进行了划分,以便于传输大数据,TCP协议可以确认数据是否最终交付给了对方。为了准确地将数据传递给目标,TCP协议采用了三次握手策略。发送方首先向对方发送一个带有SYN标志的数据包。接收端收到后返回一个带有SYN/ACK标志的数据包来表示确认信息。最后,发送方返回一个带有ACK标志的数据包,这意味着“握手”结束。如果在握手过程中的某个阶段出现莫名中断,TCP协议会以相同的顺序再次发送相同的数据包。负责域名解析的DNSDNS(DomainNameSystem)服务和HTTP协议一样,是一个应用层的协议。它提供域名和IP地址之间的解析服务。域名便于人们记忆,IP地址便于计算机处理。为了实现域名和IP地址之间的转换,DNS服务应运而生。DNS协议提供通过域名查找IP地址,或从IP地址反向查找域名的服务。四大协议URI与URL的关系相比于URI(UniformResourceIdentifier,统一资源标识符),我们更熟悉的是URL(UniformResourceLocator,统一资源定位器)。URL就是在使用网络浏览器等访问网页时需要输入的网页地址。比如下图中的http://hackr.jp/就是URL。URI格式使用http:或https:等协议方案名称来指定访问资源时的协议类型。字母不区分大小写,并在末尾附加冒号(:)。您也可以使用data:或javascript:来指定数据或脚本程序名称。登录信息(认证)指定用户名和密码作为从服务器获取资源时必须的登录信息(认证)。此项目是可选的。服务器地址使用绝对URI,必须指定要访问的服务器地址。地址可以是DNS可解析名称,如hackr.jp,或IPv4地址名称,如192.168.1.1,或带方括号的[0:0:0:0:0:0:0:1]封闭的IPv6地址名称服务器端口号指定服务器连接到的网络端口号。此项也是可选的,如果用户省略它,将自动使用默认端口号。分层文件路径指定服务器上的文件路径以定位特定资源。这类似于UNIX系统的文件目录结构。查询字符串可用于为指定文件路径中的资源传入任意参数。此项目是可选的。片段标识符片段标识符通常用于标记获取的资源中的子资源(文档中的位置)。但是,RFC中并未明确指定其用途。此项目也是可选的。
