【计算机网络】网络基础

这篇具有很好参考价值的文章主要介绍了【计算机网络】网络基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、网络发展

  • 独立模式

数据在每台计算机中呈现串行的方式传递,如下图:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

  • 网络互联

多台计算机连接在一起,完成数据共享,如下图:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

  • 局域网 LAN

计算机数量更多了,通过交换机和路由器连接在一起。如下图,路由器的左右侧都是一个局域网,两个局域网用路由器连接起来,构成局域网LAN;在局域网内部,对应的主机用交换机可以互相转化消息;跨局域网经过路由器+交换机进行数据转化。数据经过交换机发现不是本网络的,直接交给路由器,路由器再在对应的子网当中,找到对应的主机。

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

  • 广域网 LAN

将远隔千里的计算机都连在一起,如下图:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

其实我们国家的广域网可以看作一个比较大的局域网。

二、认识协议

其实“协议”是一种约定。展开来说,计算机里因为数据经过长距离传输,所以“沟通”的成本会变得很高,例如信息传输的时候衰减是问题,还需要对该数据进行转化,所以经过长距离传输的时候,需要定一些协议的。

例如我们平时见到的摩斯密码、发电报,这种都是一种协议,说白了就是一种约定。也就是通过双方规定的方式,进行信息的沟通。所以通过协议,可以降低沟通信息的成本。

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

计算机之间的传输媒介是光信号和电信号,通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。

  • (1)那么我们怎么保证数据能准确到达下一个设备呢?
  • (2)又如何定位主机问题呢,也就是怎么在当前子网通过路由器找到另一个子网的主机呢?
  • (3)又如何解决长距离传输数据丢失的问题呢?
  • (4)又如何处理发来的数据呢?

其实上面的四个问题中,前三个问题是技术问题,而最后一个问题是应用问题。正是有各种各样的问题,所以主机是对称的,也就是发送方有这样的问题,接收方也有这样的问题,所以在我们双方的机器上,在每一层我们都要尝试把每一层的问题解决,所以每一层都要有对应的协议!每层的协议都是各自解决各自当前层的问题。

像(1)问题,是由数据链路层的协议解决的问题;像(2)问题,就是由网络层,也就是IP协议解决的;问题(3)是由TCP协议解决的;问题(4)由类似HTTPS协议解决的。

我们日常在寄快递的时候,通常会有一张快递单号,上面写着的信息其实都是协议,通过双方定的协议,就可以顺利将快递送到另一方中。而这有效的快递单中的信息我们称为报头。那么我们在语言层,该如何描述这些报头信息呢?结构体!所以协议是双方的约定,最终它的表现形式就是结构体对象!

那么只要通信的两台主机,约定好协议就可以了吗?计算机生产厂商有很多;计算机操作系统,也有很多;计算机网络硬件设备,还是有很多。如何让这些不同厂商之间生产的计算机能够相互顺畅的通信呢?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议

三、认识网络协议

1. 协议分层

我们上面所说的,网络传输过程中会存在各种各样的问题,而且在定义协议的时候问题也错综复杂,所以问题要一个个解决,所以我们把网络协议整体是分层的。

软件为什么要分层呢?相当于是一个很大的项目被分解成了一个个的子项目,最大的好处就是每一层之间的耦合度一定是降低了,也就是高内聚,低耦合;更重要的是可以降低维护成本。

为什么网络协议也是层状的呢?首先网络通信的时候软件项目的规模太大了,所以需要将模块和模块之间解构出来。其次,协议是要解决问题的,而我们的问题有很多,而问题刚好也是层状的,所以协议定义出来也是层状的。

例如我们在打电话的时候,真实的情况是我们人其实在和电话沟通;而在逻辑上,其实我们认为人和人之间在沟通,电话和电话之间在沟通。所以我们人和对方的人进行沟通,就有了语言层;电话和对方的电话进行沟通,就有了通信设备层。我们的人面临着和对方的人准确沟通的问题,电话也面临着和对方电话的沟通问题,所以我们双方都要能够在通信时,为了解决自身问题,结合自身的情况需要定制一些协议。所以当通信设备层出了问题,我们可以直接将通信设备层换成另一套设备,照样不影响上一层正常通话,这就是分层带来的好处。

2. OSI 七层模型

那么这个网络协议应该是怎么分层的呢?

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
  • 但是,它既复杂又不实用;所以我们按照 TCP/IP 四层模型来讲解。

这七层从底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

3. TCP/IP五层模型

TCP/IP五层模型 中,将 OSI 七层模型中的会话层和表示层归为了应用层这一类,所以分为五层,而我们只学除了物理层的其它四层。

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇。TCP/IP 通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 物理层:负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层;
  • 数据链路层:负责设备之间的数据帧的传送和识别,例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网, 无线LAN等标准,交换机(Switch)工作在数据链路层;
  • 网络层:负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层;
  • 传输层:负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机;
  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。

我们将上面的五层一般称为网络协议栈,由于网络层和传输层在整个网络协议栈中是最重要的,所以我们将这个网络协议栈称为 TCP/IP 协议栈。

4. OS和网络协议栈

网络协议栈和我们之前学的操作系统有什么关系呢?网络协议栈和操作系统的对应关系如下图:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

如上图,数据链路层相当于是在各种软件驱动内部实现的。传输层和网络层是在操作系统内部的,所以是要在Linux内核中实现的,也就是内核中的模块。

我们平时获取一个信息,本质上就是用户通过网卡这样的外设,将数据请求,把远端发来的数据信息拉取到本地,本质就是用户在访问硬件。所以网络通信本质上也是在访问硬件!但是我们用户不能直接访问硬件,因为操作系统是硬件的管理者!所以对于用户来说,想要访问网卡,必须要贯穿操作系统,所以操作系统需要为我们提供系统调用!

更重要的是,不仅仅只有一个操作系统是这样子的!不同的操作系统内部实现由它们自己决定,但是不管是什么操作系统,往后实现网络部分的功能时,必须遵守上面的标准!要不然这个操作系统就没办法入网!所以不同的操作系统它的系统内部大部分都不一样,但是网络协议栈必须都是一样的!

四、网络传输基本流程

1. TCP/IP 协议通讯过程

两台计算机通过 TCP/IP 协议通讯的过程如下图所示:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

在网络通信的时候,应用层是如何把数据发送给对端的呢?每一层都要解决每一层的问题,所以网络协议栈的层状结构中,每一层都有协议!

例如我们需要发送一个信息给对端,除了我们需要发送的信息之外,还需要添加每一层对应的协议信息,每一层对应的协议我们称为报头,报头和信息组合起来我们称为报文,只要对应层的报文发送给了对方,对方就能根据协议正确解析。如下图:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

如上图,我们把每一层的报文中的报头去掉后,剩下的称为有效载荷。也就是 报文 = 报头 + 有效载荷。所以通信的过程,本质就是不断的封装和解包的过程!

所以,有以下两个结论:

  1. 几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力;
  2. 几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议的能力,这就叫做报头的分用。

2. 以太网通信

(1)以太网通信原理

我们在一个局域网中会有非常多的主机,如果我们把A主机的数据发给B主机,而不是发给C主机,所以原则上每一台主机在局域网上都要有自己唯一的标识符。

在一个局域网中,我们想和某一台主机进行通信,在该局域网中的所有主机都会接收到我们所发的报文,并且对该报文进行解包分用,发现当报头信息不是自己主机时,就会将数据摒弃,只有我们想要通信的那台主机得到数据,进而和我们进行通信,这就是局域网通信,也就是以太网通信

实际上,我们每一台主机都有自己的 Mac地址,什么是 Mac地址呢?我们所使用的电脑上,都有网卡,每一张网卡在出厂时都会有一个48比特位长度的序列号,这个序列号在全球内都是唯一的,这个序列号信息我们就称为 Mac地址

在我们局域网进行实际通信的时候,当我们发送信息的时候,数据链路层的报头中一定要包含原 Mac地址和目标Mac地址,这个报文信息我们称为数据帧,整个局域网都会收到这个数据帧,每个主机会对该数据帧进行分离,如果发现报头中的目标Mac地址不是自己当前主机的Mac地址,就会直接丢弃,一旦丢弃了,上层就不会知道曾经收到过这个报文。而如果发现该数据帧的目标 Mac地址 是自己当前主机的地址时,就会将整个报文解析之后,继续交给上一层进行数据处理。

(2)数据碰撞

在一个局域网中,如果一台主机正在发消息,周围也有主机正在发消息,此时就会发生数据碰撞问题,一旦发生数据碰撞,所有人的消息也就全部都失效了。所以一旦发生数据碰撞,参与发送数据的主机,都要执行它所对应的碰撞避免的算法。

3. 数据跨网络传输

跨网段的主机的文件传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。如果数据从A主机跨网络送到B主机,那么A主机和 B主机中间必须得有路由器这样的设备。

那么数据在跨网路传输的时候,它怎么知道要将数据跨网络到目标主机呢?我们需要引入一个新的地址,叫做 IP 地址,IP 地址能够标识特定一台主机在全网当中的唯一性,那么 Mac地址 不也可以吗?理论上也可以,但是Mac地址 只能应用于局域网,也就是只在局域网中保证它的唯一性,而 IP 地址是要保证在全网内的唯一性的。

那么 IP地址Mac地址 有什么区别呢?我们从用户发信息开始谈起,假设用户需要跨网发一条信息 hello world,像 TCP/IP 协议的通讯过程,在每一层都会添加上对应的报头字段,其中在网络层的报头中,有两个比较重要的信息,就是 srcipdstip,分别表示出发的主机 ip 地址和目的主机 ip 地址。到了数据链路层,如果判断到目的 ip 的地址不在当前子网时,就会将该数据帧交给路由器,而在一个子网内把数据交给路由器,本质就是局域网通信。两个局域网需要通信,就必须要横跨同一个路由器,所以就需要知道路由器的 Mac地址,所以在需要跨网通信的时候,到了数据链路层,就会在对应的报头上的目标 Mac地址 中填上路由器的 Mac地址,说明该数据帧是要交给路由器进行跨网通信的。接下来路由器接收到该数据帧,将报头和有效载荷进行了分离,当路由器识别到该数据帧的目标 IP地址,它就能查到自己的路由表,将该数据帧直接送到对应子网的数据链路层,添加对方子网数据链路层的报头,也就是更新了新的 Mac地址!这次的 Mac地址 是从路由器到新的子网,而原来的 Mac地址 则是从原来的子网到路由器!当该数据帧到对方子网后,就可以继续交给上层的网络层继续读取数据了!可以结合下图理解:

【计算机网络】网络基础,计算机网络,linux,服务器,网络,c++,c语言

如上图,路由器这个设备可以级联左侧和右侧的两个子网,也就是左右侧都是一个局域网,它们之间互相独立。

所以,IP 协议屏蔽了底层网络的差异化,靠的就是工作在 IP 层的路由器!IP 实现了全球主机的软件虚拟层,一切皆是 IP 报文!

所以得出结论,IP地址 尤其是目的 IP地址,一般都是不会改变的,用来协助我们进行路径选择。而 Mac地址 出局域网后,原 Mac地址 和目的 Mac地址 都要被丢弃,让路由器重新封装!

下面我们重新认识一下数据包在不同层的名字,在应用层一般叫做请求与响应;在传输层一般叫做数据段;在网络层一般叫做数据报;在数据链路层叫做数据帧。文章来源地址https://www.toymoban.com/news/detail-830804.html

到了这里,关于【计算机网络】网络基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络】网络基础知识

    独立模式(单机模式) :计算机之间相互独立,各自拥有独立的数据。 网络互连 :将多台计算机连接在一起,完成数据共享。 随着时代的发展,越来越需要计算机之间进行互相通信,共享软件和数据,即让多个计算机协同工作来完成业务,因此网络互连随即诞生。 数据共

    2024年02月22日
    浏览(48)
  • 408计算机网络--基础概论

    学习计算机网络走以前需要首先明白一个大的概念,计算机网络通常分为 通信子网(实现数据通信) 和 资源子网(实现资源共享/数据处理) == 七层妖塔 计算机网络: 是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源

    2024年02月20日
    浏览(49)
  • 网络安全与计算机网络基础知识

    首先网络实现通信和资源共享、分布处理,包括软件和硬件。其次iso网络7层和TCP/ip4层(没有物理层和数据链路层)协议,然而教学中用的五层,要了解每一层的协议、功能和是否可靠传输。再次IP地址的学习IPv4 32位 IPv6128位,A类B类C类网络地址,子网划分,路由算法,地址解

    2023年04月11日
    浏览(47)
  • 【计算机网络】网络基础--协议/网络协议/网络传输流程/地址管理

    网络的发展分为一下几个阶段: 独立模式: 计算机之间相互独立: 此时计算机之间是相互独立的,每个人在执行任务的时候是独立的,需要等待前一个将任务完成之后,自己才能进行执行任务,是串行执行的,效率很低。 网络互联: 多台计算机连接在一起, 完成数据共享:

    2024年02月03日
    浏览(47)
  • 【计算机网络】socket编程基础

    因特网上的每台计算机都有一个唯一的IP地址,如果一台主机上的数据要传输到另一台主机,那么对端主机的IP地址就应该作为该数据传输时的目的IP地址。但仅仅知道目的IP地址是不够的,当对端主机收到数据后,对端还需要对该主机作出相应,因此对端主机也需要发送数据

    2024年02月15日
    浏览(47)
  • 计算机网络-数据通信基础

      目录 前言 一、数据通信基本概念 二、数据通信相关知识1 总结 正在学习计算机网络体系,把每日所学的知识梳理出来,既能够当作读书笔记,又能分享出来和大家一同学习讨论。 基本概念:信源、信道、信宿;数字信号、模拟信号;模拟通信、数字通信(信道中传送)。

    2024年02月19日
    浏览(40)
  • 计算机网络的故事——了解Web及网络基础

    根据Web浏览器指定的URL,从对应的服务器中获取文件资源,从而显示出Web页面 Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程。 1.2.1为知识共享而规划 Web WWW 这一名称,是 Web 浏览器当年用来浏览超

    2024年02月09日
    浏览(38)
  • 计算机网络 基础面试第二弹

    TCP三次握手的过程如下: 第一步(SYN):客户端向服务器发送一个带有SYN(同步)标志的TCP包,指示客户端希望建立连接。这个包包含一个随机的初始序列号(ISN)。 第二步(SYN-ACK):服务器收到客户端的SYN包后,会发送一个带有SYN和ACK(确认)标志的TCP包作为回应。服务

    2024年02月08日
    浏览(53)
  • 计算机网络基础知识(非常详细)

    文末有惊喜哦 👇👇👇 七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联,是网络通信的 标准模型 。一般称为 OSI 参考模型或七层模型。 它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。 物理层:负责传输原

    2024年02月09日
    浏览(45)
  • 计算机网络——基础知识汇总(八)

    个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755@qq.com 🦉个人WeChat:Vir2021GKBS 🐼 本文由妄北y原创,首发CSDN 🎊🎊🎊 🐨座右铭:大多数人想要改造这个世界,但却罕有人想改造自己。 专栏导航

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包