计算机网络入门(问题导向式)
本文参考b站up主free-coder的视频:【网络】半小时看懂<计算机网络>
计算机网络入门
如果现在有两台计算机,要实现两台计算机之间的相互通信,你会怎么设计?
最简单的办法,在两台计算机之间拉一条线,计算机之间的通信就通过这条线来进行。通信的方式就是将数据转换成0101这样的二进制高低电平信号通过这条线来传播
如果现在不止两台计算机,比如有五台计算机,要设计一个能够使每台计算机之间能够两两通信的网络,怎么设计?
很显然,如果用直接拉线的方法,每两台计算机之间拉一条线,那么随着计算机数量的增加,拉线的数量会越来越多,越来越复杂,成本也会越来越高
这时,我们就想到利用一个“中介”,所有计算机都拉一条线到这个“中介”上,再通过“中介”来转发,这样就能大大减少拉线的数量,节省成本。这里就提出了计算机网络设计中一个非常重要的思想——转发的思想
既然有了“中介”,我们就可以通过中介来进行通信,那么问题又来了,中介收到了你发给他的消息后,他怎么知道要转发给谁呢?
我们可以给网络中的每台计算机一个标识,相当于计算机的“身份证号”。这里就提出了计算机网络设计中另一个非常重要的思想——标识的思想
比如1要发送消息给3,1首先要把消息发给中介,并且在消息中写上收件人是3,中介拿到消息后把这条消息无条件地转发给网络中的所有计算机,其他计算机拿到消息一看,这不是发给我的,就直接丢弃了,只有3这台计算机拿到一看,哦是给我的消息,于是就接收下来,这样就建立了通信
这种无脑群发的通信方式称为广播
这种无脑转发的“中介”是一个叫做集线器的设备,所使用的”线“是双绞线,它是早期所使用的技术
如果网络中同时有两台计算机发出消息,那么集线器会同时收到两束信号,这两束信号可能会杂糅在一起,造成冲突,怎么处理这个问题呢?
针对这个问题,提出了一种协议——CSMA/CD协议。这个协议可以让这些计算机在发送前先进行载波侦听,就是先检测一下这个链路上有没有其他人正在发送数据,如果没有的话我再发送
很明显,集线器设备的这种”无脑转发“的方式虽然简单粗暴,但是有很多缺点——效率低下、通信资源利用率低、不安全。怎么解决这个问题?
在转发时可以采取另一种方式,中介拿到消息不是无脑散播出去,而是拿起来看一看收件人是谁,哦是给3的消息,于是就将消息转发给3,这样的方式明显效率更高,而且更加安全
这种方式也是现在所采用的技术,这里的”中介“叫做交换机或二层交换机或网桥
交换机就比集线器聪明吗?它在转发的时候怎么知道哪根线是3的?
那么,如果下一次有消息要发给2号呢?交换机在表中一查,诶?没查到!那就和之前一样,无脑群发,看谁接收了,再记录到表中。这样循环往复,发给谁走哪条线,对于交换机来说就一清二楚了
使用交换机会不会产生冲突的问题呢?又是如何解决这个问题的呢?
交换机不会产生冲突的问题。集线器采用的是双绞线,而交换机采用的是我们现在的网线,网线中是有八根线的,正常情况下至少有四根线在工作,这种方式可以实现某台计算机同时在发消息也同时在收消息(走不同的线即可)
这种能够同时在发消息也同时在收消息的通信称为全双工通信
而集线器这种可以发消息也可以收消息但不能同时进行的通信称为半双工通信
当然还有一种,一方只能发消息,另一方只能收消息的通信称为单工通信
交换机可以连接交换机吗?如果可以连接,那又是怎样建立表的呢?
那么对于交换机1来说,MAC1,MAC2,MAC3之间相互发送消息就会使交换机1记录下MAC地址与端口的映射关系,即{MAC1:1, MAC2:2, MAC3:3}
发送数据的时候,MAC地址记录在哪里呢?
MAC地址记录在数据的头部,就像寄信的时候把地址写在信封上一样
其实,计算机网络是分层的,不同的层分管不同的任务,完成不同的功能,提供不同的服务
计算机在发送数据的时候需要先在数据头部加上MAC地址再发送,负责加MAC地址的就是数据链路层,而负责将数据转换成0101这样的电信号的就属于物理层。同时,交换机需要收到电信号要将其解析成数据,这个工作也是属于物理层的。交换机还需要从解析得到的数据的头部提取MAC地址,这个工作是属于数据链路层的
因此,物理层负责的是搞电信号和数据之间的转换的,数据链路层是搞MAC地址的
集线器无脑转发,不搞MAC地址,交换机要处理MAC地址,所以集线器工作在物理层,交换机工作在数据链路层
之前提出了CSMA/CD协议是处理冲突的协议,他是工作在数据链路层的
一般来说MAC地址表能存的数量是几千,虽然已经比直接拉线效率高很多了,但对于实现全球互联网还是有很大的距离。那么我们还能够怎样进行改进呢?
显然,交换机只能适用于小范围内的网络,对于大范围内的网络需要采取其他的措施
计算机1与同属于一个网络下的计算机2进行通信时,直接走交换机即可;如果计算机1要与其他网络下的计算机3进行通信,就必须通过交换机转到路由器接入到其他网络,再从其他网络的交换机转到计算机3上建立通信
路由器又是如何怎么知道他要转发给谁呢?
在交换机那里我们提出了MAC地址,用于标识连接进网络的各台设备(我们之前举得例子都是计算机,实际上手表、手机、甚至音响等等都可以作为网络设备联网)。在这里,我们需要一个新的标识,来标识各网络,因为路由器是各网络的中介,这里所引进的标识就是IP协议下的IP地址
而与网络设备不同的是,网络是一个抽象的概念,并没有规定大小有多大,也没有划定地理范围在哪里,因此这个标识网络的地址也必须是由网络设备在发送消息时顺带发送出去的。
IP地址不仅仅标识网络,同时也标识了设备。与MAC地址的处理方法一样,IP地址也是加在所要发送的数据的头部。路由器接收到发送来的数据时,也需要从中提取出IP地址。同样的,路由器也采用了交换机的策略,建立了映射表,这个表称为路由表,但不同的是,这个路由表的建立并不是像交换机那么简单,查不到就广播,而是有更加复杂的路由算法得到,这一点我们了解即可,这里就不再深究
我们发现这里又多出了一层,这一层是专门搞IP地址的,称为网络层
因此,路由器是工作在网络层的,IP协议是网络层下的一个协议
IP地址是怎么做到既标识网络,又标识设备的呢?
IP地址由4位0-255的十进制数组成,对应32位二进制数,比如192.168.0.1就是一个IP地址。
同时,在IP地址中又分为网络位和主机位,网络位标识了网络,主机位标识了在该网络下的设备。
网络位和主机位的划分通过子网掩码来完成,子网掩码与IP地址一样,也是32位二进制数,子网掩码取1的部分为网络位,子网掩码取0的部分为主机位
从属于同一网络下的各设备拥有相同的网络位,从属于不同网络下的各设备就有不同的网络位。这样就用IP地址+子网掩码做到了既标识网络,又标识设备
既然IP地址又标识网络又标识设备,那还需要MAC地址吗?
这里我们要注意,IP地址是网络层的提出的标识概念,实际的数据传输过程仍然走的是MAC地址
路由器也是有MAC地址的,在数据链路层范畴内,路由器与其他参与网络的设备没有任何区别,交换机一样会把路由器当作一个有MAC地址的网络设备进行数据传输
既然数据传输过程仍然走的是MAC地址,那么IP地址是怎么转换成MAC地址的呢?基于网络层的通信过程又是什么样的呢?
计算机网络入门(问题导向式)相关推荐
- 基于探究式教学法的计算机网络原理课程的教学改革与实践,《计算机网络原理》探究式教学研与实践.doc...
第 PAGE 页 <计算机网络原理>剖析式教学研究与实践 1 前言 剖析式教学是结合素质教育要求实行一种注重培养学生开拓创新,主动学习与动手能力等综合素质开放.系统教学过程.倡导学生主动参 ...
- 7.1 pdo 宝塔面板php_小白入门基础傻瓜式操作PHP面板安装使用_Bt宝塔面板
小白入门基础傻瓜式操作PHP面板安装使用--Bt宝塔面板 从购买服务器到安装面板在到搭建网站(最基础的教程,以后会延伸到部署项目) 不用写代码谁都可以做到搭建自己的网站(PHP类)还有小程序,只要 ...
- 计算机网络入门指南之计算机网络体系结构
一.计算机网络入门指南之计算机网络体系结构 1.1 计算机网络体系结构形成的原因: 计算机网络是个复杂的系统,现举一个最简单的计算机网络应用例子:两个连接在网络上的计算机要传送文件,首先要在两个计算机 ...
- PID:智能小车入门(位置式和增量式)
PID:智能小车入门(位置式和增量式) 今年大二,以一个新人的角度来说一下PID及其用法,新人第一次写,有不对的请各位指正.手动狗头 大佬们走过路过可否评论一手 PS:开环:无反馈控制 闭环:有反馈控 ...
- 计算机网络入门之TCP/IP模型
计算机网络入门:computer internet 一.基础概念 1.计算机网络:实现资源共享.信息传递 2.www:万维网 world wide web 3.web:网页.网站 4.协议:proto ...
- 职业生涯点评(一):体验式还是目标导向式
程序员跨越鸿沟之二 彷徨与微笑 编者按: 同样有许多人,觉得定位人生目标,不是个问题.在家吃饭,父母会谆谆教导:你要学会赚钱,而出去在餐厅点菜,服务员脸色随着价位高低阴晴变化,也在暗示:你最好是有钱人 ...
- 【计算机网络入门】一、计算机网络和因特网 | 科大公开课
文章目录 目标 提纲 1 什么是Internet? 1.1 什么是网络? 1.2 什么是计算机网络? 1.3 什么是互联网?从具体构成角度 1.4 协议 1.5 什么是互联网?从服务角度 2 网络边缘 ...
- 入门大爆炸式发展的深度学习,你先要了解这6个著名框架
导读:近几年,深度学习技术的大爆炸式发展,除了理论方面的突破外,还有基础架构的突破,这些都奠定了深度学习繁荣发展的基础.本文将对其中涌现出的几个著名的深度学习平台进行简要介绍. 作者:魏溪含 涂铭 张 ...
- 计算机网络入门基础篇——数据链路层(上)
参考视频教程:计算机网络微课堂 文章目录 一.数据链路层概述 1.数据链路层的地位 2.数据链路层三个基本问题 a.封装成帧 b.差错检测 c.可靠传输 3.使用广播信道的数据链路层 4.小结 二.封 ...
最新文章
- Java中 EvenQueue.invokeLater用法
- 无限循环的ViewPager
- STL vector的erase操作问题
- Qt连接Myql的那些事,关于QT连接报错driverNoLoad问题
- python计算在月球的体重程序_# Python程序语言设计基础(第二版)程序练习题
- js监听地址栏变化_vue中本地储存也可以实时监听
- django中的FBV和CBV
- FreeRTOS信号量---二值信号量
- mysql主从同步面试题_面试被问MySQL 主从复制,怎么破?
- python 灰色系统预测GM
- catia怎么将特征参数化_浅谈Catia VBA与参数化建模的结合
- python获取linux本机IP
- Redis集群环境下分布式锁方案-RedLock算法
- android studio更改代码字体,Android Studio怎么改变代码字体大小?
- Introduction to 3D Game Programming with Directx12系列小结
- 深度学习名词(中英文对照)
- Python在WRF模型自动化运行及前后处理中的应用
- MySQL系列之STRAIGHT JOIN用法简介
- 2022江西省职业院校技能大赛春季赛网络安全赛项样题
- FPGA学习-9-ip核之ARM