HTTP基础02:了解Web及网络基础
Last updated on January 2, 2025 am
了解Web及网络基础
1. 使用HTTP协议访问Web
URL输入与页面显示:当用户在浏览器地址栏中输入URL时,浏览器会向指定的Web服务器发送请求,获取相应的资源(如HTML文件、图片等),并将这些资源渲染成用户可见的Web页面。
客户端与服务器:浏览器作为客户端,负责向服务器发送请求并接收响应。服务器则存储资源并响应客户端的请求。这种请求-响应模式是Web通信的基础。
- HTTP协议:HTTP(超文本传输协议)是Web通信的核心协议,定义了客户端和服务器之间的通信规则。它基于请求-响应模型,客户端发送请求,服务器返回响应。HTTP协议是无状态的,意味着每次请求都是独立的,服务器不会保留之前的请求信息。
2. HTTP的诞生
- 背景:1989年,Tim Berners-Lee在CERN提出了WWW(万维网)的概念,旨在通过互联网实现全球知识共享。他提出了超文本(HyperText)的概念,即文档之间可以通过链接相互关联,形成一个巨大的信息网络。
- WWW构建技术:WWW的构建依赖于三大核心技术:
- HTML(超文本标记语言):用于创建和格式化Web页面。
- HTTP(超文本传输协议):用于在客户端和服务器之间传输数据。
- URL(统一资源定位符):用于定位互联网上的资源。
- Web的成长:1990年,CERN成功研发了世界上第一台Web服务器和Web浏览器。1993年,NCSA Mosaic浏览器问世,它支持内联图像显示,迅速在全球流行。1994年,Netscape Navigator发布,成为当时最流行的浏览器。1995年,微软发布了Internet Explorer,开启了浏览器大战。
- HTTP版本:
- HTTP/0.9:1990年发布,功能极为简单,仅支持GET请求。
- HTTP/1.0:1996年发布,引入了更多的请求方法(如POST、HEAD)和头部字段,支持多种内容类型。
- HTTP/1.1:1997年发布,是目前最广泛使用的版本,支持持久连接、分块传输编码等特性。
- HTTP/2.0:正在制定中,旨在提高性能,支持多路复用、头部压缩等新特性。
3. 网络基础TCP/IP
- TCP/IP协议族:TCP/IP是互联网的基础协议族,定义了计算机如何在网络上进行通信。HTTP协议是TCP/IP协议族的一部分,依赖于TCP/IP进行数据传输。
为什么需要 TCP/IP?
- 背景:互联网是由全球数以亿计的计算机和网络设备组成的复杂网络。为了让这些设备能够相互通信,必须有一套统一的规则和协议。TCP/IP 协议族就是为此而设计的,它定义了计算机和网络设备之间如何通信、如何传输数据、如何寻址等一系列规则。
- 跨平台通信:不同的计算机可能使用不同的硬件、操作系统和网络技术。TCP/IP 协议族提供了一种标准化的通信方式,使得这些异构系统能够无缝地进行数据交换。
- 模块化设计:TCP/IP 协议族采用分层设计,每一层负责特定的功能。这种模块化的设计使得协议族易于扩展和维护,某一层的改动不会影响其他层的功能。
分层管理的优点
简化设计:分层设计将复杂的网络通信问题分解为多个相对简单的子问题,每一层只需关注自己的任务,无需了解其他层的细节。
易于维护和扩展:如果某一层的协议需要更新或替换,只需修改该层的实现,而不会影响其他层。例如,传输层的 TCP 协议可以独立于应用层的 HTTP 协议进行优化。
灵活性:分层设计允许不同的协议在同一层中并存。例如,传输层可以使用 TCP 或 UDP,具体选择取决于应用的需求。
标准化接口:每一层之间通过标准化的接口进行通信,确保了不同厂商的设备能够互操作。
分层管理:TCP/IP协议族分为四层:
- 应用层:提供应用程序之间的通信服务,如HTTP、FTP、DNS等。
- 传输层:负责端到端的数据传输,主要协议有TCP和UDP。
- 网络层:处理在网络上流动的数据包。数据包是网络传输的最小数 据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计 算机,并把数据包传送给对方。
- 链路层:硬件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等 物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在 链路层的作用范围之内。
通信传输流
- 用 HTTP 举例来说明,首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。
- 接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端 口号后转发给网络层。
- 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。这样一来,发往网络的通信请求就准备齐全了。
- 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。
- 当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该 层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装(encapsulate)。
4. 与HTTP关系密切的协议:IP、TCP和DNS
- IP协议:IP(网际协议)位于网络层,负责将数据包从源地址传输到目的地址。IP协议依赖于IP地址和MAC地址进行通信。IP地址是逻辑地址,可以变化,而MAC地址是物理地址,通常不变。IP协议使用ARP(地址解析协议)来根据IP地址查找对应的MAC地址。
- TCP协议:TCP(传输控制协议)位于传输层,提供可靠的字节流服务。它将大数据分割成小的报文段进行传输,并通过三次握手确保数据的可靠传输。TCP还提供了流量控制、拥塞控制等机制,确保数据传输的稳定性。
- DNS服务:DNS(域名系统)位于应用层,负责将域名解析为IP地址。用户通常使用域名访问网站,而不是直接使用IP地址,因为域名更易于记忆。DNS服务通过域名查找IP地址,或从IP地址反查域名。
数据包发送的过程:
发送端准备发送数据包:
- 发送端想要将数据包发送到IP地址为192.0.43.10的目的地。
- 发送端使用ARP(地址解析协议)来解析目标IP地址对应的MAC地址。
ARP解析过程:
- 发送端通过ARP协议尝试解析目标IP地址192.0.43.10的MAC地址,但此时还未成功解析到具体的MAC地址。
先将数据包发送给路由器:
- 由于ARP解析未完成,发送端先将数据包发送给一个中间路由器,该路由器的MAC地址为00-XX-C6-6B-XX-XX。
第一次转发:
- 路由器接收到数据包后,进行第一次转发。路由器将数据包转发给下一个路由器,其MAC地址为00-XX-B5-A5-XX-XX。
第二次转发:
- 第二个路由器接收到数据包后,进行第二次转发。此时,路由器已经知道目标IP地址192.0.43.10的具体MAC地址为00-XX-A6-6B-XX-XX。
- 路由器将数据包转发给最终的目标接收端。
数据包到达接收端:
- 最终,数据包成功到达接收端,接收端的IP地址为192.0.43.10,MAC地址为00-XX-A6-6B-XX-XX。
总结:
- 数据包从发送端出发,通过多个路由器的转发,最终到达目标接收端。
- 在这个过程中,ARP协议用于解析目标IP地址的MAC地址,确保数据包能够正确送达目的地。
字节流服务:TCP 位于传输层,提供可靠的字节流服务。为了方便传输,将大 块数据分割成以报文段(segment)为单位的数据包进行管理。
三次握手
- 发送端首先发送一个带 SYN 标志的数据包给对方。
- 接收端收到后, 回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。
- 最后,发 送端再回传一个带 ACK 标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发 送相同的数据包。
5. 负责域名解析的DNS服务
- DNS功能:DNS的主要功能是将人类可读的域名转换为计算机可识别的IP地址。例如,当用户输入
www.example.com
时,DNS会将其解析为对应的IP地址,如192.0.2.1
,以便浏览器能够与服务器建立连接。 - 用户习惯:用户通常使用域名访问网站,因为域名比IP地址更容易记忆。DNS服务使得用户无需记住复杂的IP地址,只需输入简单的域名即可访问资源。
6. 各种协议与HTTP协议的关系
- HTTP通信过程:当用户访问一个Web页面时,首先通过DNS解析域名获取IP地址,然后通过IP协议找到目标服务器,接着通过TCP协议建立可靠的连接,最后通过HTTP协议发送请求并接收响应。整个过程涉及多个协议的协同工作。
- 协议协作:DNS负责域名解析,IP协议负责寻址,TCP协议确保数据传输的可靠性,HTTP协议则负责生成请求和处理响应。这些协议共同构成了Web通信的基础。
1.7 URI和URL
- URI与URL:URI(统一资源标识符)是用于标识互联网上资源的字符串,而URL(统一资源定位符)是URI的子集,表示资源的具体位置。URL是用户在浏览器中输入的地址,如
http://www.example.com
。 - URI格式:URI的格式包括协议方案、登录信息、服务器地址、端口号、文件路径、查询字符串和片段标识符。例如,
http://user:password@www.example.com:80/path/to/resource?query=string#fragment
。 - RFC标准:HTTP协议通常遵循RFC(Request for Comments)标准,RFC是互联网技术标准文档。虽然大多数应用程序遵循RFC标准,但某些应用程序可能会扩展或偏离标准,导致兼容性问题。
7. 总结
本章详细介绍了Web的基础技术,特别是HTTP协议的诞生、发展及其与TCP/IP协议族的关系。通过了解IP、TCP、DNS等协议,可以更好地理解HTTP在Web通信中的作用。URI和URL的概念及其格式也是Web开发中的重要基础知识。
参考:《图解HTTP》第一章
文章合集:chongzicbo/ReadWriteThink: 博学而笃志,切问而近思 (github.com)
个人博客:程博仕
微信公众号: