【计算机网络】初识网络

目录·

网络基础概念

计算机网络的背景

我们都知道,单台计算机是为了帮助我们进行计算任务的,比如写文档、听音乐、打游戏等等,这些其实都是使用操作系统和计算机进行协同为我们完成数据存储、cpu计算等任务,也就是说计算机是为了完成我们交付给它的任务,计算机是服务于人类的

但随着计算机技术的发展,一台计算机除了要完成我交给它的任务,人与人之间就需要互相协作,所以计算机之间也一定要完成协作,最初我们要实现计算机数据的交互是通过软盘、硬盘、U盘等方式,但这样的效率并不是很高,为了提高协作的效率,我们就需要一个媒介帮助我们进行数据交换,于是计算机网络应运而生

世界上产生的第一个互联网叫作阿帕网,其产生的目的是为了五角大楼之间进行交流合作的,后来美国开始进行网络基础设施建设,大力推广阿帕网;1994年中国开始接入国际互联网,但在1992年马云就听说了美国的阿帕网,于是就前往美国进行参观,马云回国之后于1999年创办了具有传奇色彩的阿里巴巴,阿里巴巴也成为了中国最早的一批互联网企业,但其实中国最早创建的互联网公司叫作瀛海威,它是中科大应用化学系毕业的张树新在1995年创办的,被称为中国信息行业的开拓者,中科大也被称为中国信息技术的摇篮

后来随着时代的发展阿帕网开始叫作互联网,也就是英特网,慢慢地网络设施建设也在各个国家开始兴起,虽然说中国是1994年才开始接入互联网,但实际上中国在50年代就开始互联网地研究,但是中间由于许多不可抗力的元素而终止,后来中国的互联网技术开始如火如荼的发展,比如网易的丁磊、百度的李彦宏、腾讯的马化腾、搜狐的张朝阳、小米的雷军等等,他们都被成为第一代互联网人

初识协议

什么是协议呢?

  • 协议就是一种约定,没有约定即使两台计算机能够互相连通,对方也理解不了

那么为什么要有协议呢?

答案是网络通信实际上是主机通过网络进行通信,设备之间的距离变得很长,为了解决这些新的问题,我们需要有一个统一的标准,于是OSI七层网络协议就应运而生

那么协议的本质是什么?

网络协议的本质是一种长距离传输的解决方案

网络协议与操作系统之间的关系

我们知道,OSI定标准还有实现标准一般不是同一批人做的,标准的落地是靠每一个公司通过代码具体去实现的,所有的公司都需要遵循OSI定的标准,而操作系统只是集成了OSI七层网络协议中的传输层和网络层,物理层是由网卡等硬件设备厂商实现的,数据链路层也是计算机的各种硬件需要实现的,而最上面的应用层协议是需要结合各种应用场景,所以应用层一般在应用程序内部实现

所以就形成了,操作系统是不同的,但是他们所遵守的网络协议栈是相同的,所以不同的操作系统之间就可以互相通信了,而操作系统是与用户直接交互的,里面集成了传输层和网络层协议,因此传输层和网络层是网络协议中最重要的,传输层最核心的协议叫TCP协议,网络层最重要的协议是IP协议,他们共同称之为TCP/IP协议栈

再谈协议

通过上面的讨论我们可以得到下面的认知:

  • 协议本质是一种约定,但我们现在并不知道操作系统内部如何实现这个约定
  • 操作系统一般是由C语言写的,协议是有许多的,操作系统需要管理这些协议,因此就需要遵循先描述再组织的原则,而协议的组织方式最终会体现在报文的形式,协议的本质是结构体,而这个结构体的定义是在协议栈内部的,所以不同的操作系统对协议的解释是相同的,所以他们就做好了约定

那么协议的约定是如何做到的?答案是他们遵循相同的标准、

网络传输的基本流程

认识mac地址

  • mac地址是用来识别数据链路层中相连的节点的唯一性的一种解决方法,它是被设定在网卡中的
  • 在网卡被设计出来的时候,mac地址就已经内置进去了,它的长度为48比特位,即6个字节,一般用十六进制数字加上冒号的形式来表示,我们可以使用ifconfig指令获得mac地址

局域网传输的基本流程

两台电脑可以在局域网当中实现通信的,局域网通信是在数据链路层进行的,这个原理类似于上课,当主机A和E进行通信的时候,局域网当中的所有主机都能收到A发送的消息,只不过其他主机丢弃掉了,只有E接收了,那么其他主机是如何知道数据不是发送给自己的呢?这就要求所有的主机都需要有名字,这个名字就叫作mac地址

假设主机A给主机E发送消息,主机B同时在给主机C发送消息,那么在局域网通信当中就很容易造成碰撞,整个以太网就叫做碰撞域,一旦发生了碰撞,发送的机器就需要过一会才能发送,这个过程就叫作碰撞检测和碰撞避免,所以局域网通信是基于碰撞检测和碰撞避免的通信方式,这也是在局域网领域里面应用最广泛的局域网通信协议

那么此时我们就可以通过无限制的发送数据到局域网,那么不就可以黑掉这个网络了吗,但是原则上是无法做到的,因为当我们的主机发生碰撞之后,自身主机就会开始碰撞避免和碰撞检测,此时就能够保证局域网正常通信;那么自己的主机可以向局域网中发送数据,那么其他处于局域网当中的主机都可以向局域网中发送数据,此时的局域网不就成为了共享资源了吗,那么碰撞检测和碰撞避免就是任何时刻只允许一台主机使用以太网,向目标主机发送数据,这就变相的完成了锁的功能

那么以太网为什么要叫作以太网呢?这就要回到上个世纪,物理学家在讨论光的传播需不需要介质这个问题上来,一部分物理学家认为光的传播是需要介质的,他们把这个介质叫作以太,后来科学家证明了以太并不存在,后来计算机网络的发展,两态主机借助局域网开始了通信,所以计算机科学家把这个叫作以太网

那么为什么会出现诸如以太网、无线LAN、令牌环网这些技术呢?在计算机网络发展的过程当中是先产生局域网,后来再产生广域网的,而刚开始的时候为了实现局域网通信产生了许多技术,后来为了实现广域网通信,这些通信方式都需要被连接起来,而这些已经存在的局域网技术并不能全部停止使用,所以就保留了诸如以太网、令牌环网、无线LAN等局域网通信技术

当我们在进行网络通信的过程当中,我们思考一下,链路层发送的数据从哪里来?答案是用户从上层发送过来的,用户通过应用层发送数据,然后交给传输层,再到网络层最后到达数据链路层;而对端的链路层收到消息后,需要向上交付,其经历的过程包括网络层、传输层、再到应用层,最后由应用层交付给用户,所以两个主机进行通信是由双方用户引起的

而我们的每一层都存在协议,所以我们在进行上面的传输流程的时候,就都需要进行封装和解包,也就是我们需要把协议的报头与报文进行封装,然后对端进行解包,所谓的报头就是一个结构体对象,我们把从上到下添加协议报头的过程叫作协议的过程叫作封装,而在链路层我们把报文叫作数据帧,网络层我们叫作数据包,传输层我们叫作数据段,应用层我们叫作请求与应答

  • 细节1:我们把封装和解包的过程抽象成栈,封包的过程叫作入栈,解包的过程叫作出栈,所以叫TCP/IP协议栈
  • 细节2:任何协议都要解决报头和有效载荷分离以及如何把数据交付给上层的问题

跨网络传输流程

两台主机跨网络传输是通过路由器进行的,所以路由器至少需要两张网卡,而我们在跨网络传输的过程之中是如何标识两台主机的呢?

认识IP

IP协议有两个版本,IPV4和IPV6,IP地址是在IP协议中用来标识网络中不同主机的地址,对于IPV4来说,IP地址是一个四字节,三十二位的整数表示,通常是点分十进制的字符串表示

IPV4与IPV6不兼容,IPV4是32位,IPV6是128位,那么为什么要使用IPV6呢?答案是ip地址不足,但IPV6的推广受阻,其原因在于IP地址不足在IPV4的环境下面有解决方案

mac与ip地址的区别与联系:

  • 源IP和目的IP一直不变,源Mac和目的Mac地址会变化
  • 目的IP地址决定目的Mac地址,根据目的IP选择要经历的Mac地址
相关推荐
晚霞的不甘2 小时前
Flutter for OpenHarmony 打造沉浸式呼吸引导应用:用动画疗愈身心
服务器·网络·flutter·架构·区块链
CHENKONG_CK2 小时前
化工危化品桶装追溯:RFID 全流程可视化解决方案
网络
临水逸3 小时前
一次路径穿越漏洞引发的NAS安全危机:飞牛fnOS漏洞深度剖析与用户自救指南
网络·安全·web安全
强风7943 小时前
Linux-传输层协议TCP
linux·网络·tcp/ip
狮驼岭的小钻风3 小时前
汽车V模型开发流程、ASPICE、汽车功能安全的基石是国际标准 ISO 26262
网络·安全·汽车
崎岖Qiu3 小时前
【计算机网络 | 第十篇】以太网的 MAC 层
网络·笔记·计算机网络·mac地址
looking_for__3 小时前
【Linux】应用层自定义协议与序列化
linux·服务器·网络
科技块儿3 小时前
如何选择合适的IP查询工具?精准度与更新频率全面分析
网络·tcp/ip·安全
devmoon3 小时前
Polkadot SDK 自定义 Pallet Benchmark 指南:生成并接入 Weight
开发语言·网络·数据库·web3·区块链·波卡