当前位置: 首页 > news >正文

计算机网络部分基础知识

网络协议的意义

        单台主机内部的设备之间需要发送和接收消息,那么和相隔很远的两台主机之间发送消息有什么区别呢?两台主机通过网络发送消息,相当于两个网卡设备之间进行通信,最大的区别在于距离变长了。而距离变长带来的结果就是:

1. 会面临数据包丢包的问题

2. 需要解决目标主机的定位问题

3. 如何保证经过无数台设备转发,数据仍能准确被接收

        为了解决这些问题,就有了协议,协议本质上就是一种约定,两套主机约定好一定的数据格式,这样能保证不同厂商生产的计算机也能顺畅地通信,并且网络通信的分层协议各层能够处理丢包、定位的问题。网络协议的范围非常广泛,从硬件到软件,能保证不同的机器都能无障碍地接入互联网:厂商要想让机器接入互联网就要遵守协议。

网络的层状结构

        在网络通信的过程中,为了保证把数据可靠地从一台主机送到另一台主机,并且另一台主机能对数据作相应的处理,我们需要:

        1. 保证把数据交给下一跳主机

        2. 进行路径选择,定位目标主机

        3. 如果报文出现错误或丢失怎么办

        4. 如何使用送达的数据

        这些问题都需要有协议来解决,所以协议是很多的,为了更好地编码实现协议,就对协议进行了分层,我们把网络看作是层状结构。

        为了方便理解协议分层的好处,我们举一个现实生活中的例子,我们在和亲人打电话的时候,并不是直接和对方沟通,而是我们电话把我们的声音发送到对方的电话,再由对方的电话发出声音让对方听到。这个事件实际上也可以分为两层:语言层和通信设备层,语言层由汉语协议保证顺利交流,通信设备层由电话协议保证能够正常通信。那和外国友人打电话呢?语言层的协议切换为英语协议,但通信设备层并不需要修改协议,这实际上把各层的协议进行了解耦合,每层只需要专注于解决一件事情,并且都能够认为是同层的协议在进行直接通信。

        我们最常用的TCP/IP五层协议模型中,数据链路层协议保证把数据送到下一跳主机,网络层协议解决转发过程中的路径选择和确认目标定位问题,传输层解决报文出现错误或丢包的问题,应用层负责对接收到的数据进行处理,而物理层则负责光电信号的传递方式。

        

网络协议与系统

        现在我们已经知道网络协议是分层的,那么各层协议与一台主机具体是什么关系呢?

        网络协议应用层就在计算机的用户层,传输层和网络层协议位于操作系统的内核中,众所周知,用户想要访问计算机的硬件通常必须调用操作系统提供的接口,操作系统调用驱动程序来使用底层硬件,而数据链路层在计算机的驱动程序层。因为如果用户想进行网络通信,就必须访问网卡,所以自顶向下过程中贯穿了网络协议栈的每一层,这保证了用户会使用协议。

        再进一步,主机A向主机B发送数据时,首先由主机B的网卡接收到数据,然后要想把数据送到主机B的用户层,就需要自底向上贯穿网络协议栈的每一层。

        计算机在进行网络通信的过程中可能会受到很多报文,为了对这些报文进行管理,就需要有对应的数据结构,把对报文的管理转化为对数据结构的增删查改

网络传输的基本流程

        大家网购的时候有没有注意过,我们收到的快递不止是买的东西,上面还有一张快递单,上面有寄件人、收件人、物品信息等等内容。这能保证快递公司在运货的过程中始终知道收件人的地址,并且由于上面写的信息双方都看得懂,收件人也能知道寄件人的地址,这实际上也是一种协议。

        类似的,数据在传输的过程中,数据报文也不止有内容,而是报头加内容,那么报头实际上是什么样的呢?

可以看到,所谓的报头其实就是结构体字段,操作系统内协议的源码相同,则双方主机都能识别结构体字段,这就相当于双方共同遵守一个约定,这就是协议。

        下图是TCP/IP数据的封装和解包流程,封装过程:在应用层把数据发送到发送缓冲区,交付到传输层后添加TCP报头,继续向下交付到网络层,添加IP报头,继续向下交付到数据链路层,添加以太网包头。解包过程:逐层读取到报头后,把剩下的有效载荷交付给上一层。

因此在进行封装时,一定要考虑之后对方解包的过程,每一层的协议都需要解决以下两个问题:

1. 如何将报文中的报头和有效载荷进行分离

2. 如何将自己的有效载荷交付给上层的协议

网络中的地址管理

        局域网中的主机能够直接进行通信,每个网卡都有独一无二的mac地址,当局域网中的一台主机向另一台主机发送信息时,实际上是给所有主机发送广播信息,但只有目标主机的mac地址与信息匹配,其他主机则会将信息丢弃。而IP地址分为公网IP和内网IP,当我们提到IP地址可以用来表示互联网中唯一的一台主机时,指的是公网IP,内网IP是可以出现重复的,具体情况我们在后面的文章进行说明。

        为了更好地理解IP地址与mac地址之间的关系,举一个例子,唐僧师徒前往西天取经,到了女儿国后,女儿国国王问他从哪儿来到哪儿去,唐僧说贫僧自东土大唐而来,前往西天取经,国王接着问,那你上一站是哪儿,下一站要去哪儿,唐僧说上一站是火焰山,但是只知道最终目的地是西天,而不知道下一站是哪,需要国王告知,国王告知唐僧,下一站是黑风岭,最后唐僧师徒离开女儿国,前往下一站。这个过程中,他们的最终目的地是不变的,但是每到一个站点,他们的下一站都会改变,这个最终目的地就相当于是目的IP地址,而每次到的下一站就相当于mac地址,国王实际上就相当于路由器。所以IP地址的意义是什么呢?有了IP地址,我们就能根据路由表进行路径选择。mac地址的意义呢?有了mac地址,数据就能在局域网中正确传输。

总结

        通过本文的学习,我们了解了网络协议分层,知道了每层协议都需要能够分离报头和有效载荷、将有效载荷交付给上层协议;并对mac地址和IP地址有了一定的概念。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安全无忧!Windows7全补丁旗舰版:集成所有补丁!
  • 【HBZ分享】MYSQL的联合索引 与 覆盖索引
  • 【二叉树进阶】--- 根据二叉树创建字符串
  • LabVIEW光纤水听器闭环系统
  • 数据库服务器运维最佳实践
  • record 关键字
  • 内核源码定制修改模块化技术总结
  • 线程的概念
  • 基于inotif的文件同步备份
  • 服务器是什么?怎么选择适合自己的服务器?
  • 设计模式 - 组合模式
  • 百问网全志系列开发板音频ALSA配置步骤详解
  • 找到财富杠杆然后再行动中精进 -《纳瓦尔宝典》读后感
  • 苍穹外卖(四):swagger导入接口文档
  • 《Advanced RAG》-12-增进RAG的全局理解(二)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【个人向】《HTTP图解》阅后小结
  • 2017前端实习生面试总结
  • 4个实用的微服务测试策略
  • IDEA常用插件整理
  • js
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Otto开发初探——微服务依赖管理新利器
  • PHP的Ev教程三(Periodic watcher)
  • Rancher-k8s加速安装文档
  • vue-cli3搭建项目
  • windows下如何用phpstorm同步测试服务器
  • Xmanager 远程桌面 CentOS 7
  • 阿里云Kubernetes容器服务上体验Knative
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 搞机器学习要哪些技能
  • 两列自适应布局方案整理
  • 通过npm或yarn自动生成vue组件
  • 小程序开发中的那些坑
  • 正则表达式小结
  • 中文输入法与React文本输入框的问题与解决方案
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • hi-nginx-1.3.4编译安装
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (6)STL算法之转换
  • (Oracle)SQL优化技巧(一):分页查询
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转载)Linux 多线程条件变量同步
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET命令行(CLI)常用命令
  • .NET中两种OCR方式对比
  • .py文件应该怎样打开?
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
  • [Algorithm][综合训练][kotori和气球][体操队形][二叉树中的最大路径和]详细讲解