计算机网络引论

简介: 计算机网络引论

前言

想起我大学的《计算机网络》这门课,第一堂课,老师让我们ping网址,好像还拿了网线,但是还是觉得蛮有趣的,后面就开始按书上讲概念,也就理论,我听了又不是很理解,总是似懂非懂的,我很讨厌的这种感觉,索性后面就不听了,期末拿一个60分万岁。后面想学计算机网络的原因是因为面试网络也是高频面试题,为了彻底理解,所以才会有学计算机网络的打算。但是到今年有一些新的打算,我打算做一点网络编程相关的东西,打算做一个开源项目,再加上工作上确实遇到了网络相关的问题,所以这次打算重新学习一下计算网络,我们对事物的认知,是一个逐步清晰的过程,所以本系列的文章不会一开始每个点都讲的很细,会有一条主线贯穿,然后需要用到某一点的时候,会将这一点描述的清楚。

通信的本质-交换信息

小的时候跟着家里人去浇地,对于小小的我来说,地还是很大的,有的时候水管摆的不对,叔叔会在地的那头,朝我喊,我叔叔会在地的那头,冲我喊。如果我没听清,我就会也冲着他喊:你说的啥。然后我叔叔就会再说一遍,一般再说一遍就行了,但有的时候地确实比较大,他说的话我确实没听清的时候,他就会走到我面前说。那我要是听错了一部分呢,他说的某句话中有个字我没听到,一般他会看我的动作,做的不对就直接来找我了。

这事实上就暗含了通信过程中所面临的一个典型问题:

  • 信息在传输的过程中丢失了该怎么办?

再传一遍

  • 如何确认信息正确收到了呢?

确认

我们可以将这个过程引申到互联网上,如今的网络已经成为了我们生活的一部分,你给微信上给朋友发消息,你从来不会担心你朋友在有网的情况下会收不到这条消息,即使你在北京,你的朋友在海南,消息快速准确的传递依然是被视作理所当然的,即使中间经过了一个一个又一个的路由器、各种各样的光纤,这仍然被视作理所当然的。但这种理所当然下面是各种各样的确认、转发,所谓冰山在海里移动很庄严,这是因为它只有八分之一漏出水面。

那让我们来想想这条信息在传输过程中会经历些什么,对于不熟悉网络的人来说,在电脑上发消息这条信息是不是直接就到光纤了呢,假定那个人在电脑上也开着微信,两台电脑都直接连着光纤,所以这个通信模型是下面这样:

image.png

但是仔细想一想这个模型实在简单的过分,我们将模型变的复杂一丢丢,通信的双方命名为A、B。A和B家里各有三台电脑,另外两台他们家里人用,那么A的这条信息再去找B,面临一个问题B的电脑在哪里?如果这个问题复杂的话,我们不妨将问题再简化一些,A和自己老婆发信息,这条信息该如何送达,我们首先可以想到的问题仍然是A发送的这条信息该如何找到老婆B的电脑,由于两个人在一个房间,这让事情看起来简单了许多,我们为每台电脑登记一个地址即可,每台电脑在出厂的时候会有一个Mac(硬件地址,网卡地址)地址,但如何知道呢,我们可以从日常生活中找到一点灵感,我们每个人都会有身份证,这个是固定的,相当于一个固定地址,又假设全国人民都不爱动,一出生就待在一个地方,这样根据身份证上的地址,快递员就可以轻松的找到你。

一出生就完全待在一个地方的还是少数, 如果你出去打工,那么让快递员按照身份证上的地址去寻找你,这着实是有点难为快递员了,所以住址一般都是动态的,每换一个地方就会分配一个。然后快递员根据你填的地址,找到你的房间,然后给你送上门的时候,还会问一下是不是你。在网络的世界也是这样,一样的动态,为了实现跨区域的通信,会为计算机动态的分配一个地址,我们称之为IP地址,这个地址有别于Mac地址,所以你在北京的IP地址和在上海的IP地址可能就是不一样的。

所以A和B用微信通信的时候,会先向微信的服务器汇报一下自己的IP地址,在发送消息的时候,根据接收方的唯一标识去找接收方的IP,那B的手机上有好多通讯软件,该给哪个?答案是端口,IP地址+端口,那可能有朋友会问了,我是租的房子,一个房间住了好多人,大家可能都用一个地址,我的身份证号,也是就是上面讲的MAC地址在什么时候用呢?这个也就是ARP(Address Resolution Protocol)协议了, 此协议可以通过IP地址解析出来物理地址,这样知道了你的住址,也就是IP地址,一个地址下面有好多主机,也不担心找错人。

事实上你在百度上搜索也是一种通信,你发给百度关键词,百度返回给你搜索结果,搜索引擎和微信属于不同的应用,应用之间也需要制定通信规则。上面的讨论其实简化了通信过程中的问题,通信是一个复杂的问题,相互通信的两个计算机系统必须高度协调工作才行,我们简单列举一下可能会遇到的问题:

  • 发起通信的计算机必须查明对方计算机是否已经开机。
  • 如果在通信过程中,经过某个路由器,信息还没传递出去,这台路由器就坏了,应当有可靠的措施保证对方计算机能够正确接收到正确的文件。

等等。为了设计这样复杂的计算机网络,早在ARPNET(是美国高级研究计划署(Advanced Research Project Agency)的简称,是世界上第一个运营的封包交换网络,也是全球互联网的始祖)在设计的时候提出了分层的方法,“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。

计算机网络体系结构简介

我们上面提到的光纤中如何组织信息在计算机网络中被划入到物理层,规定了一些电气特性,作用是负责传送0和1的电信号。单纯的0和1没有任何意义,必须规定解读方式: 多少个电信号算一组?每个信号位有何意义。这也就是数据链路层的问题,除此之外数据链路层还负责局域网内的通信,MAC地址也被算在数据链路层。为了实现动态路由,也就是说计算机换一个地方,分配一个实际的住址,我们引入了网络层来解决这个问题,网络层比较为人所熟知的就是IP协议。为了明确这个信息是属于谁的,我们引入了端口,IP地址加端口就可以定位是哪个进程,这也就是传输层的由来,进程在收到传输层的报文之后就可以来解析数据了,不同的应用指定了不同的规则,这也就是应用层。

image.png

这个五层是综合OSI/RM(Open System Interconnection Reference Model  开放系统互联基本参考模型模型(由国际标准化组织ISO来制定)和TCP/IP协议的分层模型而来,TCP/IP协议的分层是事实上的标准,标准化的组织制定的没流行原因在于复杂、理想化且TCP/IP协议已经抢先占领市场了.

这里我们简单的介绍一下各层的作用:

  • 应用层

应用层的任务是通过应用集成间的交互来完成特定网络应用。应用层协议定义的应用进程间通信和交互的规则。这一层比较为人所熟知的协议是:HTTP、HTTPS、SMTP。

  • 运输层

运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务,应用层利用该服务传送应用层的报文。所谓“通用的”是指并不针对某个特定网络应用,而是多个应用可以使用同一个运输层服务。由于一台计算机可以同时运行多个进程,因此运输层有复用和分用的功能。复用就是指多个应用层进程可以同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付给上面应用层的相应进程。

这一层比较为人所熟知的协议为TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)协议. 这一协议一般驻留在操作系统,主流的高级编程语言一般都有Socket相关的类,我们通过这些类就可以间接调用操作系统使用TCP、UDP协议。

  • 网络层

网络层负责为不同局域网上的不同主机提供通行服务。这一层比较为人所熟知的协议是IP协议。

  • 数据链路层

粗略的说就是将网络层交下来的数据包组装成帧,每一帧包含数据和必要的控制信息。在接收数据的时,控制信息使接收端能够知道一个帧从哪个比特开始和哪个结束。

  • 物理层

粗略的说就是规定多大的电压代表“1” 或“0”。

本系列的文章会将着重笔墨与应用层、运输层、网络层。本篇也是重学系列的第二个系列: 重学计算机网络。统一收拢自己对计算机网络的认知。

相关文章
|
安全 算法 网络协议
计算机网络安全引论
计算机网络安全引论
计算机网络安全引论
|
11天前
|
存储 安全 算法
网络安全与信息安全:构建安全数字生活的基石
【10月更文挑战第5天】 在数字化时代,网络安全与信息安全已成为维护个人隐私、企业机密和国家安全的重要防线。本文旨在探讨网络安全漏洞的形成与防范、加密技术的应用及其重要性,以及提升公众安全意识的必要性。通过深入浅出的方式,帮助读者理解网络安全的核心要素,并强调每个人都是网络安全生态中不可或缺的一环。
37 1
|
12天前
|
SQL 安全 算法
网络安全与信息安全的前沿探索
【10月更文挑战第5天】 在当今信息化社会,网络安全和信息安全已成为至关重要的话题。本文将深入探讨网络安全漏洞、加密技术及安全意识的重要性,旨在为读者提供技术性的见解和实用的建议。通过分析常见的网络攻击手段和防御策略,我们将揭示如何保护个人和企业的数据免受威胁,同时强调每个人都应具备的基本安全意识和最佳实践。
26 1
|
12天前
|
存储 安全 程序员
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第5天】 本文旨在探讨网络安全和信息安全领域的重要方面,包括网络漏洞、加密技术及安全意识。通过深入分析这些关键概念,我们希望提高读者对这些重要领域的理解,并强调在当今数字化世界中保护个人和组织数据的重要性。我们将从网络漏洞的定义及其成因开始,接着介绍常见的加密技术及其应用,最后讨论提升安全意识的方法,以帮助读者更好地保护自己的信息安全。
|
11天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第6天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术和安全意识等方面的内容,以帮助读者更好地了解这些主题,并采取适当的措施保护自己的信息安全。我们将通过代码示例来演示一些常见的安全漏洞,并提供解决方案。最后,我们将强调培养良好的安全意识对于维护个人和组织的信息安全的重要性。
|
8天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:守护数字世界的坚盾
在数字化浪潮中,网络安全已成为维系现代社会正常运转的关键。本文旨在探讨网络安全漏洞的成因、加密技术的应用及安全意识的提升,以期为广大用户和技术人员提供实用的知识分享。通过对这些方面的深入剖析,我们期望能够共同构建一个更加安全可靠的数字环境。
|
9天前
|
存储 SQL 安全
网络安全与信息安全的守护之盾
本文将深入探讨网络安全漏洞、加密技术及安全意识的重要性,旨在帮助读者建立全面的网络安全知识体系。
|
10天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第7天】随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术、安全意识等方面进行探讨,旨在帮助读者更好地了解网络安全的重要性,提高自身的网络安全防护能力。
|
8天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第9天】在数字化时代,网络安全和信息安全已经成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术和安全意识等方面的内容,并分享一些实用的知识和技巧。通过阅读本文,您将了解到如何保护个人信息和数据的安全,以及如何应对网络攻击和威胁。
|
8天前
|
存储 SQL 安全
网络安全与信息安全:保护数字世界的钥匙
【10月更文挑战第9天】 在数字化飞速发展的今天,网络安全与信息安全已成为个人、企业乃至国家安全的重要组成部分。本文将深入探讨网络安全漏洞的形成原因、常见类型及其危害,同时详细介绍加密技术的原理和应用案例,并强调提高安全意识的重要性。通过分析实际案例和提供实用建议,本文旨在帮助读者构建更加坚固的数字防线,共同守护我们的网络空间。
20 1