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

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

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

一、搭建环境

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

1.1. 客户端

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

1.2. 服务端

以Java为例。

1.2.1. 必装工具

  • JDK:https://www.oracle.com/java/technologies/javase-downloads.html

  • Tomcat:https://tomcat.apache.org/

  • Intellij IDEA Ultimate:https://www.jetbrains.com/idea/download/

运行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. 网络抓包工具

浏览器(Chrome、Firefox)、Fiddler、Wireshark、Charles

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

客户端请求服务端过程:

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

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

网络协议系列一 - 基本认识相关推荐

  1. 网络协议系列之四:IGMP、ICMP和ARP

    前言 IGMP协议是一个组管理协议,它帮助多播路由器创建以及更新与每一个路由接口相连的忠实成员列表(就是与该路由接口连接频率较高).ICMP协议实际上就是差错控制协议,弥补了IP协议没有差错纠正机制以 ...

  2. 网络协议系列十七 - WebSocket/FTP

    WebSocket.FTP.RESTful.SMTP.IMAP.POP等协议很多人可能仅仅听说过,但没有了解过. 一.ARP/RARP/ICMP ARP(Address Resolution Prot ...

  3. 网络协议系列三 - MAC地址/IP地址/子网掩码

    MAC/IP/子网掩码在网络中非常重要,只要有网络的地方必然都会涉及这三个概念. 一.MAC 每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control). 全球唯一 ...

  4. 网络协议系列之二:HTTP(2)

    这篇文章继续对HTTP协议进行说明. 一个http事务包括客户向HTTP服务器发送请求以及服务器向客户端发送响应两个过程.根据事务的特点,这两个过程具有原子性,任何一个过程失败都会进行回滚(恢复事务之 ...

  5. 网络协议 19 - RPC 协议:远在天边近在眼前

    [前五篇]系列文章传送门: 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - DNS 协议:网络世界的地址簿 网络协议 17 - HT ...

  6. 网络协议 9 - TCP协议(下):聪明反被聪明误

    网络协议 9 - TCP协议(下):聪明反被聪明误 原文:网络协议 9 - TCP协议(下):聪明反被聪明误 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - ...

  7. 网络协议 8 - TCP协议(上):性恶就要套路深

    网络协议 8 - TCP协议(上):性恶就要套路深 原文:网络协议 8 - TCP协议(上):性恶就要套路深 系列文章: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络 ...

  8. 网络协议 3 - 从物理层到 MAC 层

        在上一篇博文中,我们见证了 IP 地址的诞生,机器一旦有了 IP,就可以在网络的环境里和其他的机器展开沟通了.     今天,我们来认识下 物理层 和 MAC 层.     日常生活中,身为 ...

  9. 网络协议 18 - CDN:家门口的小卖铺 1

    [前五篇]系列文章传送门: 网络协议 13 - HTTPS 协议:加密路上无尽头 网络协议 14 - 流媒体协议:要说爱你不容易 网络协议 15 - P2P 协议:小种子大学问 网络协议 16 - D ...

最新文章

  1. threejs画面拖动事件判断
  2. ubuntu 安装php-redis
  3. Have a tea -(极客大挑战(SMC,fork
  4. springboot接口入参下划线转驼峰以及返回参数驼峰转下划线实现
  5. swing打地鼠游戏_【亲子早教】9月早教亲子游戏
  6. 《简明电路分析》——导读
  7. H5活动产品设计指南基础版
  8. Frameworks.Entity.Core 1
  9. Create-React-App创建antd-mobile开发环境
  10. CPU密集型和I/O密集型
  11. Taro 周报 #7: 收获「e代驾」案例,发布 v2.2.16 和 v3.2.0-canary.2
  12. 【STM32入门】STM32基础理论知识
  13. 唐奇安通道策略-python量化【backtrader回测】
  14. python nlp 句子提取_自然语言16.1_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...
  15. 从共识算法开谈 - 硬盘性能的最大几个误解
  16. XMLWorkerHelper生成pdf文件添加页眉页脚
  17. TensorFlow 手写实现卷积神经网络CNN
  18. Linux 下的 FFmpeg 安装编译环境配置总结
  19. java为什么匿名内部类的参数引用需要添加final?
  20. 神舟不愿“当枪”的声明背后,“黑公关”问题引人深思

热门文章

  1. CSR8670项目实战:BlueHeart心率监测耳机
  2. python打开文件写入内容_python-11 文件的打开和写入
  3. c语言编写 构成的梯形,用C语言编写梯形
  4. OPC是什么及OPC简介
  5. JIRA的安装、破解、汉化(适用于4.0.1、4.0.2、4.1.1版本
  6. 诡异的交换机CPU利用率超高
  7. 小猿学python_小猿圈详解小白如何学习Python网络爬虫
  8. DOS命令格式化制作U盘
  9. VMware错误:无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错
  10. 百度18年兴衰背后:一部互联网流量变迁史