走近HTTP协议之一 基本网络概念与理解

时间:2022-12-15 13:26:43

当今的技术领域,开发者人数最为之多的群体便是web领域,与之相关岗位的包括前端工程师,后台工程师,移动端开发工程师等等。然而由于受时代浮躁氛围的影响,许多开发者对最为基础的HTTP协议都不甚了解,这也正是本篇文章的目的--简单总结一下 了解HTTP协议之前你需要掌握的一些基础知识,基本术语等等

 

  1. 基本概念

 

  • 协议

"协议定义了两个或多个通信实体间交换报文的格式和次序,以及在报文传输/接收或其他方面所采取的动作。"--《计算机网络--自顶向下方法》 我们可以把协议理解为规则的集合

走近HTTP协议之一 基本网络概念与理解

(图:人类交流的协议与网络协议对比)

 

  • HTTP

HyperText Transfer Protocol(超文本传输协议)的缩写,是建立在web应用层的核心协议。

 

  • HTML

HyperText Markup Language(超文本标记语言)的缩写,web页面是由对象组成的,对象可以说就是文件,大多数web页面包含一个基本HTML文件,可以通过URL来寻址。

 

  • Web Browser(浏览器)

浏览器通过发送请求,获取服务器资源,实现了HTTP的客户端,可以称作客户端(Client)。其实现在许多的客户端也是web客户端转制的,包括PC端和移动端。

 

  • Web Server(服务器)

用于存储web对象,每个对象由URL寻址,web服务器实现了HTTP的服务器端(Server)。

 

  • TCP

Translation Control Protocol(传输控制协议)的缩写,是面向连接(Connection-oriented)的传输层协议,HTTP协议建立在TCP协议之上,TCP协议为HTTP协议提供可靠数据传输服务。运行在不同机器上的进程通过向Socket(套接字)发送报文来进行通信。

走近HTTP协议之一 基本网络概念与理解

 

  • Socket

socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

 

走近HTTP协议之一 基本网络概念与理解

 

  • URL

Uniform Resource Locator(统一资源定位符)的缩写,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置。

主要格式:<协议><特定协议部分>

 

  • URI

Uniform REsource Identifier(统一资源标识符)的缩写,是以统一的标准化方式标示资源的字符串。

 

  • URN

Uniform Resource Name(统一资源名称)的缩写,是URI的一种,用特定命名空间的名字标识资源。使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

 

  • GET

HTTP协议客户端对服务器的请求方法之一。从指定的服务器中获取数据

 

  • POST

HTTP协议客户端对服务器的请求方法之一。提交数据给指定的服务器处理

 

学习HTTP协议,大家要了解的最基本,最核心的概念就是以上这些,这些概念我会在后面的系列中逐步深入讲解和分析,分享一些自己的学习经验。

 

    2. 辨析与理解

 

  • 辨析URL URI URN

走近HTTP协议之一 基本网络概念与理解

明白这三者,你只需要知道以下几点:

  • URL和URN都是URI的子集,是URI的一种形式
  • 引入URI的目的是标准化方式标识资源
  • 引入URL是为了便于确定具体的网络位置和访问方式
  • 引入URN的目的是唯一标识一个实体

 

  • 辨析GET POST

看过好多网上的博客,都在讲POST方法比GET方法安全,POST方法会加密等等。这些可以说是错误的说法!!

辨析GET与POST,你要明白以下几点

  • HTTP是应用层上的协议,HTTP协议的四个方法恰好对应了增删查改功能
  • POST是添加,DELETE是删除,PUT是修改,GET是查询。所以POST并不能说比GET安全,两者功能是不同的。
  • POST和GET传输的都是明文,区别是GET能在URL上直接访问,但本质上都没有加密。
  • 另外,GET是幂等的,请求1次和请求n次相同,所以一些不是幂等的操作(文件上传,修改数据等)不能使用GET方法,用POST。

 

 

3. 总结


本文主要总结和分析了网络尤其是WEB开发者需要掌握的一些核心概念,为今后深入了解HTTP协议,网络编程,以及对服务器端的优化,打下良好的基础。当然,掌握这些还远远算不上打好基础,要想真正掌握好计算机网络,你还需要阅读相关技术书籍以及大量的编程实践,加油吧!