HTTP(1)

HTTP(1)

HTTP(HyperText Transfer Protocol)通常被翻译为超文本传输协议,但这种译法并不严谨,严禁的译名应该为“超文本转移协议”。

最初设想的基本理念是:借助多文档之间相互关联形成的超文本,连成相互参阅的WWW(World Wide Web,万维网)。

3项WWW构建技术:

  • 把SGML(Standard Generalized Markup Language, 标准通用标记语言)作为页面的文本标记语言的HTML(HyperText Markup Language, 超文本标记语言);
  • 作为文档传递协议的HTTP;
  • 指定当所在地址的URL(Uniform Resource Locator, 统一资源定位符)

Web成长时代

1990年11月,CERN(欧洲核子研究组织)成功研发出了世界上第一台Web服务器和Web浏览器。

HTTP正式作为标准被公布是在1996年5月,版本被命名为HTTP/1.0,并记载于RFC1945。

TCP/IP协议

计算机与网络设备要相互通信,双方就必须基于相同的方法。这个方法规则就称为协议。

TCP/IP协议族流重要的一点就是分层:应用层、传输层、网络层和数据链路层。

好处:就如同模块化开发一样,只要各层之间的接口部分规划好以后,每个层次内部的设计就能够*改动。而且层次化之后设计也更为简单,单个层次只考虑自己分派的任务就可以了,不用考虑其他部分。

应用层

决定了向用户提供应用服务时的通信的活动。FTP和DNS,HTTP协议也处于该层。

传输层

提供处于网络连接中的两台计算机之间的数据传输。TCP(Transmission Control Protocol, 传输控制协议)和UDP(User Data Protocal, 用户数据报协议)在这一层。

网络层

用来处理网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。

与对方计算机之间通过多态计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

链路层

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card, 网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围内。

TCP/IP通信传输流

HTTP(1)

客户端在应用层(HTTP协议)发出一个想看某个web页面的HTTP请求;

为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层;

在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层,这样,发往网络的通信请求就准备齐全了。

接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层,当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkIAa2Sf-1594712576490)(https://s1.ax1x.com/2020/07/14/UN2S78.png)]

负责传输的IP协议

不要把IP和IP地址搞混,IP是一种协议,网际协议位于网络层。作用是把各种数据包传送给对方。

保证确实传送到对方那里的两个重要条件:IP地址和MAC地址(Media Access Control Address)。

IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对,IP地址可变换,但MAC地址基本不会更改。

场景:IP之间的通信依赖MAC地址,但是通常通信双方不在同一局域网下,需要经过多台计算机和网络设备中转才能连接到对方。在中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这时,会采用APR(Address Resolution Protocol)协议。ARP是一种用以解析地址的洗衣,根据通信方的IP地址就可以反查出对应的MAC地址。

确保可靠性的TCP协议

TCP位于传输层,提供可靠的字节流服务(Byte Stream Service),是指为了方便传输,将大块数据分割成以报文段位单位的数据包进行管理。可靠就是指准确可靠的传输给对方。

为了准确无误的将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。握手过程使用了TCP的标志——SYN(synchronize)和ACK(acknowledgement)。

过程:

  • 发送端先发送一个带SYN标志的数据包给对方。(先测试线路通不通)
  • 接收端接收后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。(接收端告诉你通了)
  • 最后发送端再回传一个带ACK标志的数据包,代表握手结束。(然后才发送信息)

如果在握手过程中某个阶段莫名终端,TCP协议会再次以相同顺序发送相同的数据包。

负责域名解析的DNS服务

DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。

URI和URL

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

URI(Uniform Resource Identifier)统一资源标识符。

Uniform:规定同一的格式可以方便处理多种不同类型的资源,新增协议方案(如http:或ftp:)也更容易。

Resource:资源的定义是“可标志的任何东西”。文档文件、图像或服务(例如当天的天气)等能够区别于其他的类型的,都可以作为资源。资源不仅可以是单一的,也可以是多数的集合体。

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

综上,URI就是由某个协议方案表示的资源的定位标志符。协议方案是指访问资源所使用的协议类型名称。

URI用字符串标识某一互联网资源,而URL标识资源的地点(互联网上所处的位置)。可见URL是URI的子集。

URI格式

绝对URI格式:

http://user:[email protected]:80/dir/index.htm?uid=1#ch1

http: :使用http:或https:等协议方案名获取访问资源时需要制定协议类型。

user:pass 登录信息(认证),指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证),可选。感觉有点像cookies。

www.example.jp 服务器地址。也可以用IP地址。

80 服务器端口号,可选。省略则自动使用默认端口号。

dir/index.htm 带层次的文件路径,指定服务器上文件路径来定位特质的资源。

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

服务器端口号,可选。省略则自动使用默认端口号。

dir/index.htm 带层次的文件路径,指定服务器上文件路径来定位特质的资源。

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

#ch1片段标识符,定位网页中的具体位置。可选。