笔记 | HTTP 协议(一)网络基础 和 简单的 HTTP 协议

本文深入介绍了HTTP协议,包括其无状态特性、主要方法(GET、POST等)、持久连接与Cookie状态管理,以及TCP/IP协议族的工作原理,如IP、TCP和DNS服务。此外,还探讨了URI和URL的区别以及HTTP在实际应用中的关键点。
摘要由CSDN通过智能技术生成

1. 首先介绍一下HTTP


HTTP 协议,全称Hyper Text Transfer Protocol,超文本传输协议,它是一种规范,完成从客户端到服务器端等一系列运作流程。

2. 通信协议(TCP/IP协议族)


计算机与网络设备要相互通信,双方就必须基于相同的方法。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则,而我们就把这种规则称为 协议(protocol)。

像这样把与互联网相关联的协议集合起来总称为 TCP/IP。

TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层。

在这里插入图片描述

  • 应用层:决定了向用户提供服务时通信的活动,HTTP也处于该层。(FTP、DNS)
  • 传输层:提供处于网络连接中的两台计算机之间的数据传输。
  • 网络层:网络层用来处理在网络上流动的数据包。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选择一条传输路线。
  • 链路层:用来处理连接网络的硬件部分。

在这个过程里,数据流动如图,

在这里插入图片描述

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层 时会把对应的首部消去。

3. IP、TCP 和 DNS


3.1 负责传输的IP协议

IP网际协议位于网络层,作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足两个重要的条件是 IP 地址和 MAC 地址。

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

IP 间的通信依赖 MAC 地址,采用 ARP 协议可以根据通信方 的 IP 地址就可以反查出对应的 MAC 地址。

3.2 确保可靠的TCP协议

TCP 位于传输层,提供可靠的字节流服务。

所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。为了准确无误地将数据送达目标处,TCP 协议采用了三次握手 、四次挥手策略。

3.3 负责域名解析的DNS服务

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

用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP地址访问。因为与 IP 地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。

但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。

所以,DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

4. URI 和 URL


URI,统一资源标识符,就是由某个协议方案表示的资源的定位标识符。

URL,统一资源定位符,也就是我们访问页面时的网页地址。

URI 用字符串标识某一互联网资源,而 URL表示资源的地点。可见 URL是 URI 的子集。

了解一下URI的格式:
在这里插入图片描述

5. 简单的 HTTP 协议


HTTP 协议用于客户端和 服务器之间的通信。 请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一 端称为服务器端。

在这里插入图片描述

HTTP 是一种不保存状态,即无状态(stateless)协议。每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了 更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设 计成如此简单的。

HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于 是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

6. HTTP 方法


  • GET :获取资源
  • POST :传输实体的主体。
  • PUT:传输文件
  • HEAD:获得报文首部
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径
  • CONNECT:要求用隧道协议连接代理

7. 持久连接


HTTP 协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。传输容量小的话,问题也不大,但是如果包含大量图片等容量大的资源时,每次请求就会造成无谓的TCP连接建立和断开,增加通信量的开销。

为了解决这个问题,HTTP/1.1和部分 HTTP/1.0 采用持久连接的方法,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

使用长连接的HTTP协议,会在响应头有加入这行代码:

Connection:keep-alive

8. 使用 Cookie 的状态管理


HTTP是无状态协议,无状态的优点是减少服务器的CPU和内存资源的消耗。为了保持长连接引入了Cookie技术,它通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

首次响应,服务器会在响应报文里包含一个首部字段信息Set-Cookie,以此来通知客户端保存Cookie,客户端在之后的请求报文中加入Cookie 后再发送到服务器端。

服务器端接收到客户请求中的 Cookie 后,对比服务器上的记录,可以得到该客户之前的状态信息。

首次请求是这样的:

  1. 服务端保存客户端请求
  2. 服务端在响应中添加cookie后返回

在存有Cookie信息之后,请求时这样的:

  1. 客户端请求时带上cookie
  2. 服务端检查cookie,作出响应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值