【网络协议】网络协议系列一 - 基本认识

互联网的出现,彻底改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票等。

思考:数据是如何从一个设备传递到另一个设备的?

这一切都是由网络协议来规定的。没有网络协议,就没有今天的互联网/物联网。

一、搭建环境

要想真正了解网络之间数据如何传输?协议的约束条件?就需要一套能够发起网络请求和处理请求的环境。

1.1. 客户端

使用浏览器即可(会基本的HTML+CSS+JS即可)。

1.2. 服务端

以Java为例。

1.2.1. 必装工具

运行Tomcat

Windows:/tomcat-package/bin/startup.bat

Mac或Linux:/tomcat-package/bin/startup.sh

1.2.2. Java的跨平台原理

JVM(Java Virtual Machine):Java虚拟机。

Java跨平台:一次编译,到处运行。

  • 编译生成和平台无关的字节码文件(class文件)
  • 由对应平台的JVM解析字节码为机器指令(010101)
  • 如果代码有语法错误,将编译失败,并不会生成字节码文件(失败后不会运行JVM程序,最终导致Java程序运行失败)

1.2.3. C/C++的跨平台原理

C/C++的跨平台:使用平台相关的编译器生成对应平台的可执行文件。

扩展:C++的是C Plus Plus的简写。

1.2.4. 客户端和服务器交互

客户端发送网络请求给服务器,服务器使用Tomcat软件监听客户端发送的请求(含端口号),然后执行对应的Java代码把结果返给客户端。而字节码文件需要JVM运行环境才能正常运行(Tomcat本身也是Java编写的)。

1.3. 网络抓包工具

浏览器(ChromeFirefox)、FiddlerWiresharkCharles

1.4. 模拟网络工具

用来模拟网络环境(交换机、路由器之间的切换)。

Xshell(只有Windows版本)、Packet Tracer注册地址)、GNS3

二、什么是协议?

在生活中我们会经常遇到租房协议,协议内容约束了房东和房客之间的关系和条件。但租房协议基本没有统一(基本上每个人的租房协议格式都不太一样),让双方在法律层面都有所顾忌。试想一下,如果租房协议有一个国家/国际标准,会怎么样呢?

2.1. OSI

网络协议的概念基本和上面的描述一致,客户端向服务端发送数据,服务端向客户端响应数据,如果没有固定的标准数据格式,就会产生数据混乱,而且极其低效。所以为了更好地促进互联网网络的发展,国际标准化组织ISO在1985年制定了网络互连模型OSI

OSI参考模型(Open System Interconnect Reference Model),具有7层结构:

2.2. TCP/IP

在实际应用场景中,其实只有4层,即TCP/IP协议

在学校或学术研究机构,会把数据链路层也加上去,因为数据链路层和物理层非常重要,对了解数据传输本质有关键性作用。

2.3. Client-Server

客户端请求服务端过程:

客户端的数据经过每一层格式化包装后,通过物理层传给服务端,然后服务端反向解包最终得到客户端传入的原始数据。

无论是什么协议,都要经过上面的过程。因为不同协议区别基本上是在应用层。