计算机网络

内容目录

  • 前言
  • 计算机网络 - 计算机之间的网络互通
    • 1. 物理层
    • 2. 数据链路层
    • 3. 网络层
    • 4. 传输层
    • 5. 应用层
    • 总结

前言

大物理学家费曼提出一个高效的费曼学习法,即从问题入手,试着把问题都讲出来,以教代学,一旦你能把问题都讲清楚,便学会了。所以我想尝试一下把网络/通信/协议讲清楚,借此让自己学得明白,同时也锻炼自己得表达能力。

计算机网络 - 计算机之间的网络互通

在这一章我们着重介绍在生活中两台计算机的通信过程,在此过程中我们拨开迷雾一窥计算机网络通信的神秘面纱。在全世界成千上万的计算机中,无论地点新旧的计算机是如何准确的找到对方并进行通信的呢,并把数据按需发送给对方呢。

分层:分层是计算机领域中常用的技巧 分层是为了隔离,通过分层划分职能,拆解问题,层与层之间约定接口,屏蔽实现细节,下层向上层提供能力,上层利用下层的能力提供更高的抽象。比如大家都非常熟悉的网络通信五层模型TCP/IP的四层模型,说实话分层模型的具体内容还是极其复杂的,所以很多人并不是很清楚为什么分五层,或者经常混淆分层模型负责的任务。

1. 物理层

这一层比较好理解,两台计算机之间要通信需要什么?当然是通信链路,这个通信链路在物理层表现得形式可能是光纤,铜缆,无线电,卫星,双绞线等介质把它们连接起来才能通信。

也就是说,物理层负责把计算机连接起来,然后在计算机之间通过高低电频信号来传输电信号数据

2. 数据链路层

物理层是单纯的将计算机连接起来,并在之间传输高低电频信号,如果传输毫无规则我们是无法识别并处理这些信号。因此,我们需要制定一套规则或者说是协议来进行0,1的传送。例如多少个电信号为一组啊,每一组信号应该如何标识才能让计算机读懂啊等等。因为与硬件相关,所以需要借助系统的驱动程序,链路层协议就是定义这些细节的,比如怎么把数据从网卡发送到光纤,采用什么格式编码等,它解决的数据在媒介上表示、流动的问题。
于是,就有了网络协议
1.以太网协议
以太网协议规定,一组电信号构成一个数据包,我们把这个大小一般为 64 - 1518 个字节的数据包称之为。每一个桢由表头(Head)和数据(Data)两部分组成。

如果需要传输的数据很大,则会分成多个帧传输,数据(Data)肯定是具体要传输给接收方的内容,那表头(Head)里面存放的是什么数据呢?我猜你闭着眼睛都能猜到,毫无疑问我们必须知道帧的发送和接收方,所以这里面存的是主要是说明数据,发送方和接收方的一些信息。
另外,一个因为帧的长度是不固定的,为了区分帧中表头和数据,帧的表头被固定18字节。

把一台计算机通过物理层和链路层发送出去的一帧数据如何区分,究竟是谁发给谁的,如何保证另一台计算机能准确接收呢,(一个计算机不可能只连接一个计算机),这个就需要对计算机进行区分,确定一个唯一标识。
于是,就有了MAC 地址
2. MAC 地址
接入网络的每台计算机都有网卡接口,每个网卡接口都会有一个唯一的地址,这个地址叫MAC地址,计算机之间的数据传输就是通过这个MAC地址来确定唯一的发送和接收。MAC地址是由48个字节组成,在网卡生产的时候就被唯一确定。
3. 广播与ARP协议
(1). 广播

现在假如计算机A知道了计算机B的MAC地址(获取MAC地址还需要一个过程),计算机A要向计算机B传输数据,要怎么传输呢。这时候在交换网络中计算机A不仅连接着计算机B还连接着C、D…等,A却不知道B是分布在哪条线上。
于是,就有了广播

在同一个子网中,计算机A要向计算机B发送一个数据包,这个数据包中包含接收方的MAC地址。当发送时,A通过广播的方式向在同一个子网中的所有网络设备发送数据,这时在同一个子网中的C和D也会收到数据包。这时收到数据包的计算机会把数据包中接收方的MAC地址取出和自身MAC地址对比,如果两者相同则接收,反之则丢弃。这个过程我们称之为广播。好比校长通过学校广播呼叫操场上的某个同学一样,叫到自己的名字就去德育处喝茶,叫到别人的就吃瓜。

(2). ARP 协议
那么我们又是怎么知道计算机A的MAC地址呢?这时候 ARP 协议就闪亮登场了,不过 ARP 协议涉及到IP地址的相关内容。我们就当有这么个 ARP 协议的东西,它可以通过它获取到子网中其他计算机的MAC地址。

3. 网络层

上面我们有提到子网这么一个概念,实际上我们所处的网络是由无数个交换节点构成的交换网络,在这个网络中如果随意一台计算机发送数据所有计算机都能收到,那这个网络还不得崩溃吗?因此就需要子网这么个东西。

那么问题来了,我们如何区分哪些 MAC 地址是属于同一个子网的呢?假如是同一个子网,那我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发,也就是发送给子网外的MAC地址。
于是,就有了IP协议

1. IP协议

IP协议:它所定义的地址,就是我们通常说的IP地址。IP协议有两种版本,一种是 IPv4,另一种是 IPv6。现在大部分用的是IPv4。这里我们只讨论IPv4。这个IPV4通常由32位构成,通常我们以4段十进制表示,地址范围为0.0.0.0~255.255.255.255

每一台想要联网的计算机都有一个IP地址,这个地址分为两部分,前面一部分是网络部分后面一部分是主机部分,并且网络部分和主机部分所占用的二进制位数是不固定的

假如有两台计算机的网络部分是一模一样的,我们就说这两台计算机所处同一子网中,例如有这两个IP地址:192.168.52.1和192.168.52.2。假如这两个IP的网络部分为24位主机部分为8位,那么他们网络部分为:192.168.52。所以他们所处同一子网中。

那么问题又来了。我们怎么知道网络和主机部分各占多少位呢,也就是说单从两台计算机的IP地址,我们是无法得知它们是否同处一个子网中
于是,就有了子网掩码

子网掩码和IP地址一样由32位二进制数组成,不过规定它们的网络部分位1,主机部分位0来区分。也就是假如192.168.52.1的网络部分是24位,主机部分为8位。则子网掩码为:11111111.11111111.11111111.00000000,十进制表示为:255.255.255.0

有了子网掩码我们就知道了当前IP的网络和主机部分。这时只需要把自己的IP地址和子网掩码作(and)比较,然后把各自的结果对比,相同则处于同一子网中。,否则不是同一个子网。

2. ARP协议
这下我们了解了IP协议,我们再来理解ARP协议。其实ARP协议和IP协议工作原理相似。现在我们有了两台计算机IP地址和子网掩码就能判断出这两台电脑是否处于同一子网中。

假如他们呢处于同一子网中,我们就可以通过ARP协议来获取对方的MAC地址。获取过程依然通过广播形式向同一子网中的每台电脑广播一个数据包,这个数据包中有目标计算机的IP地址,对方收到这个数据包后会取出数据包中的IP地址和自己的地址比较,如果相同则把自己的MAC地址回复给对方,否则则丢弃。这样计算机A就获得了计算机B的MAC地址了。

另外:传送数据也是通过广播,获取MAC地址也是通过广播。那接收方怎么区别发送方是要发送数据还是询问MAC地址呢?其实在询问MAC地址的数据包中,在对方的MAC地址中一栏中填的是一个特殊的MAC地址,用以区分。

假如两台主机的IP不在同一子网中呢?这个时候我们就会把数据包发送给网关,让网关为我们转发。

3. DNS服务器
我们如何知道一台主机的IP地址呢?我们在上网的时候,一般会在浏览器输入网址而不是IP地址,例如:www.baidu.com 这个域名。其实当我们输入这个域名时,会有一个叫做DNS服务器域名系统(DNS)来帮我们解析这个域名,然后返回这个域名对应的IP。域名系统(DNS)提供主机名字和IP地址之间的转换,比如www.baidu.com是一个域名,应用程序可以通过一个标准库函数(gethostbyname)来获得给定名字主机的IP地址,标准库函数(gethostbyaddr)实现逆操作。

IP地址是一串数字,含义不清、也不便于记忆,主机名含义更清晰,www.baidu.com你就很容易记住,这也是为什么存在IP地址还需要主机名的原因。

因此,网络层的功能就是让我们能够找到另一台计算机在哪里,是否属于同一个子网等。

4. 传输层

在这里我们的数据跋山涉水已经经过物理层、数据链路层、网络层成功的从计算机A到计算机B了。数据就在眼前。可是计算机里有各种各样的程序运行着,计算机该如何知道这些数据是给谁的呢。
于是,就有了端口(Port)

也就是说我们在发送数据的时候还要指定一个端口号,让指定的应用来接收和处理数据。

也就是说IP所在的网络层是提供 端到端主机之间的通信,而传输层则是提供 端口到端口的应用间的通信

有人会说,我们输入网址和大多数时候我们也没有指定端口啊,其实呢,对于有些传输协议,已经有设定了一些默认端口了。例如http的传输默认端口是80,这些端口信息也会包含在数据包里的。

传输层最常见的两大协议是TCP 协议UDP 协议,其中 TCP 协议UDP协议最大的不同就是 TCP 提供可靠的连接传输,而 UDP 提供的是不可靠无连接传输。

5. 应用层

这一层是离我们最近的,用户最直接的操作。纷繁负责的数据和数据格式经过应用内部各司其职。我们能把数据按照各个规则进行处理才是得到有用的效果

总结

本次属于公司内训方式讲解了地址、域名、端口、TCP/IP分层模型、封装、分用等概念。五层模型的介绍大概这么多,按照数据如何从A到B的主线以最通俗易懂的方式讲解。确实需要记住的东西不少,当然计算机网络是一门高深的学问,本文讲解中可能存在错误。本人也想用以教代学的方式检验和让自己学得更明白。

计算机网络 - (一)计算机之间的网络互通相关推荐

  1. 计算机网络原理实践报告--跨国公司,通过运营商网络如何实现总部公司与各分公司之间的网络互通

    一.实践的实验内容 本次实践的内容为:模拟跨国公司,通过运营商网络如何实现总部公司与各分公司之间的网络互通. 实验目标: 1.运营商网络可以全网互通,并且发生故障点后,可以自动切换路由路径. 2.公司 ...

  2. 1、计算机网络之计算机之间的连接方式

    计算机之间的连接方式 一.网线直连 二.同轴电缆 三.集线器(Hub) 四.网桥 五.交换机(Switch) 六.路由器(Router) 总结 计算机之间的通信基础: ①首先需要得知对方的IP地址,最 ...

  3. 计算机网络vtp,计算机软考网络工程:配置交换机VTP协议

    首先我们来认识一下什么是VTP VLAN可以使用Trunk技术跨交换机实现,也就是将交换机A与B之间的链路配置成Trunk,这样,连接在交换机A与交换机B上的相同VLAN号的主机就可以通信. 在一台或 ...

  4. 共享计算机没有响应,网络共享打印机出现联机无反应的处理方法

    网络共享打印机出现联机无反应.打印乱码及无法连接共享打印机的故障处理方法 1.共享打印出现乱码 倘若从局域网中某一台工作站中执行共享打印操作时,网络打印机能够正常工作:而从另外一台工作站中执行共享打印 ...

  5. 为确保网络中不同计算机,在计算机网络中,为确保网络中不同计算机之间能正确地传送和接收数据,它们必须遵循一组共同的规则和约定。这些规则、约定或标准通常被称为____。...

    答案 查看答案 解析: [解析题]计算机基础课程包含以下哪些内容( ? ) [解析题]普通电子点火系的点火提前角由发动机控制单元(计算机)根据发动机转速.负荷.冷却液温度以及可燃混合气的燃烧情况等进行 ...

  6. 计算机网络协议是网民们签订的合同,关于网络协议,下列__________选项是正确的。A.是网民们签订的合同B.是计算机之间的相互通信需...

    关于网络协议,下列__________选项是正确的.A.是网民们签订的合同B.是计算机之间的相互通信需 更多相关问题 Many think soccer has important advantage ...

  7. 计算机网络第三章知识网络,计算机基础教案第三章计算机网络基础知识教案

    计算机 基础 教案 一.网络基础知识 1.计算机网络的概念 计算机网络是指将分布在不同地理位置的具有独立功能的多台计算机用通信设备连接起来,并配以相应的网络软件,以实现信息传递和资源共享. 计算机网络 ...

  8. 网络上各台计算机语言,人类使用语言来交流,同样,网络上的各台计算机之间也用某种语言交换信息,这样的语言通常指()。...

    相关题目与解析 计算机语言是一种人与计算机之间交换信息的工具. 案例2:计算机网络漫谈所谓计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信 计算机语言是用来解决人和计算机交换信息的. ...

  9. 计算机网络对口题目,2011-2015计算机对口升学网络试题汇总.doc

    2011-2015计算机对口升学网络试题汇总 2011-2015对口升学 计算机网络试题及答案汇总 2017年9月30日整理 (2011年河北省普通高等学校对口招生考试计算机网络试题及答案:) 一.选 ...

最新文章

  1. “诺奖摇篮”贝尔实验室:从辉煌到衰败的百年沉浮
  2. Windows 10使用PowerShell创建系统还原点的技巧
  3. 激光SLAM学习--移动机器人技术系列课(智东西)
  4. linux拷贝文件夹怎么删除,linux文件及文件夹拷贝移动删除
  5. Linux常用命令下,以及再CentOS7下搭建apache网站服务,以及同一服务器上搭建第二个网站
  6. 如何关闭SAP CRM中间件的delta download方式
  7. 【线性代数】基础理论归纳
  8. python-socket2
  9. SDL附着window窗口的方法
  10. java day43【Filter:过滤器 、Listener:监听器】
  11. visual studio 2019 代码历史记录 本地版本控制 AnkhSvn Local History 教程
  12. 移动H5前端性能优化指南
  13. linux中文本保存的快捷键,liunx中vi快捷键编辑
  14. laravel seeder 填充数据
  15. 没有服务器认证消息,关于《跑跑卡丁车》没有服务器认证消息的问题,怎么解决?...
  16. 拥抱趋势,蓄能跃迁——2018慧点科技企业协同及治理创新论坛圆满举行
  17. 区块链软件公司:区块链技术三大主要特性的优势
  18. 微PE安装系统 不显示U盘中镜像文件 的解决方法
  19. html 纯css设置转圈,CSS3 转圈彩色文字动画实例及animation-play-state属性规则
  20. uni-app开发的微信小程序隐藏返回首页按钮

热门文章

  1. Ubuntu udev rules
  2. 训练自己的ChatGPT-OpenAI 微调模型
  3. java代码实现龙卷风_Java-使用二叉树实现快速排序-遁地龙卷风
  4. css背景图片自适应
  5. linux查看cpu占用率的方法:
  6. JS教程之 ElectronJS 自定义标题栏
  7. 【1】Talking-Heads Attention
  8. android json格式解析,android之解析json数据格式详解
  9. 金蝶云星空报错信息及解决办法
  10. 解决使用Dockerfile更新centos镜像Failed to download metadata for repo‘AppStream’「CentOS」问题