你说你懂互联网,那这些你知道么?(一)

简介: 今天的因特网无疑是有史以来由人类创造的、精心设计的最大系统、该系统由数以千计的计算机设备(计算机、平板电脑、智能手机)彼此相互连接构成,并且还有一批与因特网相互连接的物品比如游戏机、监控系统、汽车、医疗设备、智能眼镜、手表、运动手环等,随着5G时代的到来,万物互联也越来越称为可能,这里推荐一下 尤瓦尔·赫拉利 的《未来简史》,这个人的格局很高,他书中描述的未来也越来越成为现实,他写的文字能让你感觉到你更想变为计算机世界里的一片硅片。

今天的因特网无疑是有史以来由人类创造的、精心设计的最大系统、该系统由数以千计的计算机设备(计算机、平板电脑、智能手机)彼此相互连接构成,并且还有一批与因特网相互连接的物品比如游戏机、监控系统、汽车、医疗设备、智能眼镜、手表、运动手环等,随着5G时代的到来,万物互联也越来越称为可能,这里推荐一下 尤瓦尔·赫拉利 的《未来简史》,这个人的格局很高,他书中描述的未来也越来越成为现实,他写的文字能让你感觉到你更想变为计算机世界里的一片硅片。

但是,面对互联网如此巨大且迅速的变化,我们能做些什么?我在地铁站等车的时候经常被地铁广告洗脑,鼓吹人工智能发展的多么牛逼,鼓吹大家都成为人工智能的高端型人才,我不能否认这个操作,但是我认为人工智能并不适合每个人,而且人工智能需要的技术和知识储备是巨大的,所以,与其憧憬成为人工智能的高端型人才,不如把眼下的计算机基础知识学好,你的未来才会有更多的可能性。毕竟,一切计算力发展的源头都是计算机,也可以说现在互联网一切的衍生物都是计算机的儿子。

说到计算机基础,就不得不提计算机网络,就像人长大后是需要和外界进行交流一样,计算机网络也是计算机彼此通信的必要条件。如果计算机的创造好比新中国成立,那么计算机网络的出现就相当于是改革开放。并且计算机网络是每个软件工程师必须要学好的一门知识。扯了这么多,下面开始进入正题,一展计算机网络的宏图。

什么是因特网

首先来聊一下因特网是什么,wiki 对它的定义是:因特网是一个全球范围的互联网系统,它使用 TCP/IP 协议簇来链接全世界的设备。我们可以从两个方面来描述一下因特网

  • 我们描述因特网可以通过基本硬件和软件组件来进行描述
  • 我们能够根据为分布式应用提供服务的联网基础设施来描述因特网

我们先从第一条描述开始

因特网的描述

通过硬件和软件来描述

因特网是一个世界范围的计算机网络。说到因特网的构成,就不得不提构成因特网的组件是什么,还记得我们开头提到的因特网设备吗?智能手机、平板电脑,智能电视,智能家居,游戏机,手表,汽车,眼镜,温度调节系统,这些构件在因特网中有个专门的术语,所有的这些设备都被称为主机(host)或者端系统(end system),一提到主机你是不是想到的是计算机的主机?这两个主机的领域虽然不同,但是它们的作用是相同的,都是系统的大脑。据保守性评估,2015年已经有大约50亿台设备接入了因特网。而到了2020年这个数字将会变为250亿。

23.jpg


那么这些主机或者端系统之间是如何进行通信的呢?实际上,端系统通过通信链路(communication link)分组交换机(packet switch) 连接到一起。

通信链路:指的是因特网中两个节点之间的物理通道。通信链路的传输介质有双绞线光纤微波

分组交换机:网络交换设备,它主要包括三个基本部分:交换单元、接口单元和控制单元。

不同的链路能够以不同的速率进行传输数据,称为链路的传输速率(transmission type) ,以 比特/秒(bit/s,或 bps)进行度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络的术语称为分组(packet),这个分组的概念非常重要,以后我们会经常提到。这些分组通过网络发送到目的端系统,在那里被装配成初始数据。

分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。分组交换机的种类有很多种,最著名最常见的分组交换机就是路由器(router)链路层交换机(link-layer switch),一个分组所经历的一系列通信链路和分组交换机称为通过该网络的路径(route 或者 path)

244.jpg


上面讲述的名词肯能比较晦涩,如果你不是很理解的话,就可以把分组在交换网络中的传输比作是 运输车在高速公路上的运输,分组类似于卡车,通信链路类似于高速公路,分组交换机类似于交叉口,端系统类似于建筑物,就像卡车需要从某一建筑物的起点经过高速公路和交叉口到达另外一个建筑物的过程。就像卡车需要选取一条路进行运输一样,分组也选取计算机网络的一条路径前行。

端系统通过因特网服务提供商(Internet Service Provider,ISP) 接入因特网,包括如本地电缆或电话公司那样的住宅区 ISP、公司 ISP、大学 ISP,在机场、咖啡馆或者公共场所所提供的 WiFi 接入的 ISP,以及为智能手机或者其他设备提供移动接入的蜂窝数据。

我们国家的 ISP 主要有三大基础运营商,中国电信、中国移动和中国联通。

端系统、分组交换机和其他因特网部件都要运行一系列的 协议(protocol),这些协议控制因特网中信息的接收和发送。其中 TCPIP 协议是因特网中最重要的两个协议。IP协议定义了在路由器和端系统之间发送和接收的分组格式。因特网中的协议统称为TCP/IP,而不单单指的是TCP 和 IP 两个协议。

那么这些协议是由谁制定的呢?实际上,这些因特网协议或者称为因特网标准是由因特网工程任务组(Internet Engineering Task Force)

通过分布式应用程序来描述

上面我们描述的因特网是从硬件和软件层面进行说明的,除此之外,我们还可以通过为分布式应用提供服务的联网基础设施来描述因特网,这个概念比较抽象,我们还是举例子说明一下。除了传统应用程序就像是电子邮件和web 冲浪外,因特网应用还包括智能手机和平板应用程序,这些应用程序中又包括像是即时通讯、来自云的音乐流、电影和电视流、在线社交网络、视频会议、多人游戏和基于位置的推荐系统。因为这些应用程序涉及多个相互交换的端系统,所以这些应用被称为分布式应用程序。重要的是,因特网应用程序运行在端系统上,而不是运行在网络核心的分组交换机中。

我们来深入的探究一下,因为应用程序可能会运行在端系统上,所以你需要编写使其运行在端系统上的程序,你可能会使用 C、Java、Python 来编写。现在,因为你开发了一个分布式应用程序,这个程序运行在不同的端系统需要彼此发送消息。此时我们遇见一个核心问题,那就是一个运行在端系统的应用程序如何让其他运行在端系统的应用程序收发数据呢?

接入因特网的端系统提供了一个套接字接口(socket Interface)用于和其他端系统的应用程序收发数据。这个因特网套接字是应用程序必须要遵守的约定。

协议是什么

既然我们已经对因特网有了一点概念了,下面我们就来探讨一下因特网又一个很重要的概念那就是协议,协议就相当于是人类活动所遵守的约定。

人类活动的比喻

理解计算机网络协议最简单的方式就是把它抽象为我们的生活,因为我们人类无时无刻都在执行协议。考虑一下当你想向其他人询问当前时间的时候你会怎样做?下面是一个典型的询问方式

24.jpg


上图是一个男女双方都比较友好的对话,那么假如女方回答:"请不要烦我",或者说我不会说中文等等类似不合时宜的回答造成双方不再对话,那么此时就会造成中断。通常情况下,发问者就会放弃继续询问。那么造成上述中断的原因是什么呢?是不是男女双方没有就询问时间这个话题达成一致呢?也就是说,协议最重要的一点就是为了完成一项工作,需要两个(或多个)通信实体遵守相同的协议


网络协议

网络协议非常类似于人类协议,除了通信双方由人类变为了计算机载体,哦,协议也会不一样。以大家熟悉的一个计算机网络协议为例,考虑当你向一个 Web 服务器发送请求时(即你在 Web 浏览器中键入一个 Web 页面的 URL)所发生的情况。


25.jpg

首先,你的计算机会向 Web 服务器发送一条连接请求报文,并等待该服务器的响应,等到服务器发送响应到计算机之后,计算机会重新发送一条 GET 请求报文到服务器,最后,Web 服务器向计算机返回该 Web 页面(文件)。

根据上面两个例子你能给的出协议的定义了吗?也许下面这个定义会比较准确呢

协议(protocol)定义了在两个或多个通信实体之间交换报文的格式和顺序,以及报文发送和/或接受一条报文或其他事件所采取的动作

因特网广泛的采取了各种各样的协议,不同的协议用于完成不同的通信任务。掌握计算机网络领域知识的过程就是理解网络协议的构成、原理和工作方式的过程。


相关文章
|
数据库 开发者
Seata调用问题之全局异常捕获没法回滚如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题。
891 103
|
9月前
|
设计模式 网络协议 Java
03.开闭原则详细介绍
本文详细介绍了面向对象设计中的开闭原则(OCP),即软件实体应对扩展开放、对修改关闭。文章通过问题思考、背景分析、实现方式及案例教学,深入探讨了如何在实际开发中应用这一原则,以提高代码的可维护性和扩展性。文中还结合图形绘制和银行业务两个具体案例,展示了如何通过抽象类、接口、策略模式等技术手段实现开闭原则。最后总结了开闭原则的优缺点,并强调了其在设计模式中的重要地位。
211 14
|
10月前
|
算法 搜索推荐 UED
C 端试用期考核指标
本文详细介绍了C端产品经理试用期的考核指标,涵盖产品成功、开发效率、用户体验、市场研究、团队协作和创新能力等方面。考核方式包括自评、上级评估、同事评估、用户评估和项目评估。通过定量与定性相结合的方法,确保全面客观地评估产品经理的工作表现,并附有实际案例供参考。
|
8月前
|
存储 人工智能 云栖大会
【云栖大会】阿里云设计中心 × 教育部协同育人项目成果展,PAI ArtLab助力高校AIGC教育新路径
【云栖大会】阿里云设计中心 × 教育部协同育人项目成果展,PAI ArtLab助力高校AIGC教育新路径
|
11月前
|
项目管理
工作效率为何总跟不上?问题出在哪?
本文探讨了项目进度管理效率低下的普遍问题及其根本原因,包括任务规划不清、信息不对称、协作不畅等,并介绍了板栗看板这款工具如何通过清晰的任务视图、实时更新与协作、任务优先级设置等功能,帮助团队提升工作效率,实现高效的项目管理和任务协作。
|
存储 人工智能 供应链
光量子计算:计算速度的新突破
【9月更文挑战第17天】光量子计算利用光子的量子特性,突破传统计算瓶颈,展现强大信息处理能力。本文阐述了光量子计算原理,聚焦“九章三号”新进展:255光子高斯玻色取样,性能超越现有超级计算机亿亿倍。同时,展望其在优化问题解决、量子模拟、加密技术革新及人工智能加速上的应用前景,并讨论面临的挑战与未来技术发展的无限可能。
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
745 1
|
SQL 存储 数据管理
深入理解SQL中的触发器
【8月更文挑战第31天】
536 0
|
Java
java -jar 命令隐藏黑窗口
java -jar 命令隐藏黑窗口
561 0
|
SQL 分布式计算 安全
Spark的核心概念:RDD、DataFrame和Dataset
Spark的核心概念:RDD、DataFrame和Dataset