【网络编程】网络基础

文章目录

  • 一、网络发展
    • 1. 网络发展史
    • 2. 局域网和广域网
  • 二、网络协议
    • 1. 协议分层
    • 2. OSI七层模型
    • 3. TCP/IP五层模型
  • 三、网络传输的基本流程
    • 1. 局域网通信原理
    • 2. 不同局域网的通信原理
    • 3. IP地址与MAC地址


一、网络发展

1. 网络发展史

计算机网络 的发展经历了多个阶段,从早期的简单通信系统到现代互联网的复杂网络架构。以下是计算机网络发展史的主要里程碑:

  • 早期通信系统(1960年代):在这个阶段,计算机网络主要用于实现大型计算机之间的简单通信,如远程终端访问和文件共享。这些网络通常是专用的、点对点的连接。

  • 分组交换网络的兴起(1970年代):在这个阶段,分组交换网络的概念被引入。数据被分割成小的数据包(或称为分组),并通过网络传输。这种方式提高了网络的效率和可靠性,使得多个计算机之间可以共享网络资源。

  • ARPANET和互联网的诞生(1960-1980年代):ARPANET是美国国防部高级研究计划署(ARPA)于1969年建立的第一个广域网,它是互联网的前身。随着时间的推移,各种网络被连接到ARPANET,形成了一个跨越国家和地区的网络,最终发展成今天的互联网。

  • 标准化的网络协议(1980年代):在这个阶段,一系列的网络协议被制定和发展,如TCP/IP(传输控制协议/因特网协议),它成为互联网的核心协议。TCP/IP提供了一种可靠的、端到端的数据传输机制,它也是互联网上各种服务和应用程序的基础。

  • 商业化互联网的兴起(1990年代):随着互联网的普及和商业化,互联网开始迅速发展。互联网服务提供商(ISP)涌现出来,人们可以通过拨号连接、宽带接入等方式访问互联网。此时期也见证了万维网(World Wide Web)的发展,网页和超链接的出现为互联网的普及做出了贡献。

  • 移动互联网的崛起(2000年代):随着移动通信技术的发展,移动互联网开始崛起。无线网络技术如3G和4G逐渐普及,人们可以通过移动设备连接到互联网并进行各种在线活动,如浏览网页、社交媒体、在线购物等。

  • 物联网和5G时代(2010年代至今):物联网的概念得到了广泛应用,成千上万的设备通过互联网相互连接,实现智能化和自动化。同时,5G技术的推出提供了更快、更可靠的网络连接,为更多的人和设备提供了高速、低延迟的互联网体验。

这些阶段标志着计算机网络从最初的简单通信系统发展到复杂、全球化的互联网。随着技术的不断进步和创新,计算机网络将继续演变和发展,新时代的互联网技术对于推动数字化转型、创造新业务模式和提升用户体验具有重要意义,它们相互交织、互相促进,共同推动着互联网的进一步发展。


2. 局域网和广域网

独立模式: 计算机之间相互独立

【网络编程】网络基础_第1张图片

网络互联: 多台计算机连接在一起, 完成数据共享

【网络编程】网络基础_第2张图片

局域网和广域网:

局域网(Local Area Network,LAN) 是指在较小的地理范围内(例如家庭、办公室、学校等),连接多台计算机和设备的计算机网络。局域网通常由一组相互连接的设备组成,例如计算机、打印机、路由器等,在局域网内这些设备可以进行文件共享、打印共享和资源共享等。

局域网通常使用以太网或无线局域网(Wi-Fi)等技术进行连接。它们提供了高速的数据传输速度和低延迟,并且在局域网内通信通常具有较高的安全性和可靠性。局域网不需要连接到互联网即可独立工作,但也可以通过路由器连接到广域网实现互联网访问。

【网络编程】网络基础_第3张图片

广义网(Wide Area Network,WAN) 是指连接跨越较大地理范围的多个局域网的计算机网络。广义网可以是跨越城市、地区、甚至全球的网络系统,通过各种传输媒介(如电缆、光纤、卫星等)在不同地点之间传输数据。

广义网通常由多个局域网和广域网互连的设备和网络设施组成,包括路由器、交换机、调制解调器等。广义网的目的是为了实现远程通信和数据交换,使得不同地点的用户可以共享资源、传输数据和进行远程访问。

【网络编程】网络基础_第4张图片

互联网实质上是一个巨大的广义网,它将全球范围内的局域网、城域网和广域网连接在一起,使得世界各地的计算机和设备能够互相通信和交换数据。局域网和广义网是互联网的基础,它们在不同的地理范围内提供了不同规模和功能的网络连接。


二、网络协议

网络协议 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外还需转换其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。

1. 协议分层

协议分层 是指将一个复杂的通信系统划分为多个层次,每个层次都有不同的功能和责任,协议在不同的层次之间进行交互和通信。协议分层的优势就是在复杂的场景下,它可以使不同层次之间的功能独立(解耦),提高了系统的可维护性、可扩展性和可靠性,同时也为不同厂家的设备之间的通信提供了标准化的接口。所以,网络协议也是被设计成了层状结构。

【网络编程】网络基础_第5张图片

在这个例子中, 我们的协议只有两层;但是实际的网络通信会更加复杂, 需要分更多的层次,分层最大的好处在于 "封装"面向对象例子

软件分层后,每一层都只关注自己同层的功能,只使用下层的接口,任何一层出现问题,都不会直接影响另一层,减少后期开发者的维护成本。高内聚,低耦合


2. OSI七层模型

OSI七层模型(Open Systems Interconnection reference model,开放式系统互联参考模型)是一个标准的网络体系结构模型,它将网络通信分为七个抽象层,每个层都有自己的功能和特定的协议,它们一起构成了一个完整的网络协议体系结构。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

【网络编程】网络基础_第6张图片

  • 物理层:包括中继器、集线器、网线、网卡等设备,主要负责传输比特流,实现比特流的传输。代表的协议包括:Ethernet、Wi-Fi、USB等。
  • 数据链路层:包括交换机、网桥、网卡等设备,主要负责将比特流组合成帧,同时对帧进行错误检测和流量控制。代表的协议包括:PPP、HDLC、MAC等。
  • 网络层:包括路由器、交换机等设备,主要负责路由寻址和转发数据包,从而实现网络通信。代表的协议包括:IP、ICMP、ARP等。
  • 传输层:主要负责建立和维护端到端的连接,确保数据的可靠传输。代表的协议包括:TCP、UDP等。
  • 会话层:包括会话控制协议,主要负责建立、管理和终止会话,同时对会话进行同步和校验。代表的协议包括:SMB、NFS等。
  • 表示层:包括各种数据转换协议,主要负责对数据进行表示和编码,确保数据的可读性和可理解性。代表的协议包括:JPEG、MPEG等。
  • 应用层:包括各种应用程序协议,主要负责向用户提供各种网络服务。代表的协议包括:HTTP、FTP、SMTP、SSH等。

3. TCP/IP五层模型

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

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

【网络编程】网络基础_第7张图片

我们学习的网络,本质就是操作系统的一部分:

【网络编程】网络基础_第8张图片


三、网络传输的基本流程

1. 局域网通信原理

同层的每一层都是一种协议,每层都要有自己的协议。同一个局域网中的两台主机是可以直接通信的,那么数据在两台通信机器中是如何流转的呢?

【网络编程】网络基础_第9张图片

报头 是包含用于控制和管理数据包的元数据信息的部分,有效载荷 是数据包中携带的实际数据内容。它是由上层应用程序负责生成和处理的,通常包括应用程序需要传输的数据信息。例如,在HTTP通信中,有效载荷通常是传输的文本、图片、视频等数据内容。

报头和有效载荷的关系是报头负责控制和管理数据包的传输和处理过程,有效载荷则携带具体的数据内容。通过组合报头和有效载荷,网络通信可以实现可靠传输、错误检测和纠正、数据分段和重组等功能。

【网络编程】网络基础_第10张图片

  • 封装:将报头从上到下贯穿
  • 解包加分用:将报头自底向上进行交付
  • 解包:将报头和有效载荷分离
  • 分用:将有效载荷交付给上层

注意:

  1. 每一层都会把上层交付给自己的数据,作为自己的有效载荷
  2. 每一层都有自己的协议报头
  3. 在逻辑上,同层协议,都认为自己在和对方的同层协议在通信!
  4. 同层协议,能够互相认识对方的报头
  5. 在未来,任何协议都要具有两个基本功能:
    1. 报头必须要能和有效载荷分离
    2. 报头必须能支持,将有效载荷交付给上层

1.同一个局域网的两台主机是可以直接通信的,是因为它们共享同一个物理网络,并且连接在同一个网络交换机或集线器上。这意味着它们可以通过直接发送数据包来相互通信,而无需经过路由器等设备进行中转。

2.逻辑上讲,自己的应用层和对方的应用层在直接通信,物理上讲,自己的数据是无法从应用层发送到对方的应用层的,必须自顶向下将报文交付,然后再自底向上地将报文交给对方的应用层

3.每一层都会有自己的协议定制方案,都要有自己的协议抱团,自顶向下交付数据时,需要添加报头,自顶向下递交数据时,需要去掉报头。

【网络编程】网络基础_第11张图片


2. 不同局域网的通信原理

位于两个不同的局域网的主机要进行通信时,需要经过路由器的转发,当源主机发送数据时,数据会被封装成数据包并在数据包的首部中携带有目标主机的IP地址,由于源主机和慕白哦主机不在同一个局域网中,因此数据包必须经过路由器进行转发。

当路由器接收到数据包时,它会检查目标IP地址并根据自己的路由表确定下一跳的路由器或者目标主机所在的网络。如果目标主机所在的网络不是当前路由器直连的网络,那么路由器就需要将数据包转发给下一个路由器。这个过程会一直持续,直到数据包到达目标主机所在的网络。

【网络编程】网络基础_第12张图片

因此,位于两个不同局域网的主机进行通信的原理是通过路由器进行转发的,将数据包从源主机转发到目标主机所在的网络。这个过程需要路由器之间进行协同工作,按照最佳路线进行数据包的传输


3. IP地址与MAC地址

MAC地址 是一个物理地址,也称为硬件地址或以太网地址。它是一个由12个十六进制数字组成的唯一标识符,通常以冒号或短划线分隔。每个网络适配器(例如,以太网卡或Wi-Fi适配器)都有一个唯一的MAC地址,由其制造商在生产时分配。这意味着每个设备的MAC地址都应该是唯一的。MAC地址在局域网(LAN)级别上用于识别和寻址设备。在局域网内发送数据包时,路由器或交换机使用MAC地址来确定数据包应该传递给哪个设备。

IP地址 是一个逻辑地址,用于在全球互联网上唯一标识和定位设备。它是一个由四个八位字节组成的数字,通常以点分十进制表示,例如,192.168.1.1。IP地址分为两个主要版本:IPv4和IPv6。IPv4使用32位地址,而IPv6使用128位地址,以支持更多的设备和更多的IP地址。IP地址用于在互联网上路由数据包,确保它们能够从一个地方传输到另一个地方。IP地址由互联网服务提供商(ISP)或网络管理员分配,并且可以动态分配(通过DHCP)或静态配置。

MAC地址和IP地址的关系:

MAC地址是用于在局域网内唯一标识设备的物理地址,而IP地址是用于在全球互联网上唯一标识设备的逻辑地址。在数据通信中,MAC地址通常在局域网内使用,而IP地址用于在更广泛的互联网上路由数据。这两种地址在不同层次的网络通信中扮演不同的角色。

路由器的作用:

下面我们来看一下路由器的作用:路由器 工作在网路层、链路层和物理层,路由器也是一台主机,路由器至少要级联两个子网,也就是说路由器至少要有两个网络接口。

【网络编程】网络基础_第13张图片

路由器当中的协议栈是下面这样的:

【网络编程】网络基础_第14张图片

路由器工作在网络层,因为只有IP有路由表以及IP地址,所以报文在路由器中要做一次向上交付。先将报文交付给路由器下层的链路层。在去掉报头,将报文交付给路由器,然后路由器将对应的报文向下交付,在链路层当中将该数据添加上令牌环对应的报头信息,然后再将该数据发送到局域网2当中,此时数据就能在令牌环网当中传输了。

一个路由器可能会级联多个局域网,当路由器需要将一个局域网的数据转发到另一个局域网时,路由器如何知道该数据应该转发到哪一个局域网的呢?

路由器其实是通过IP地址来确定数据的转发方向的,因特网上的每台计算机都有一个唯一的IP地址,而在数据向下进行封装时,在网络层封装的报头当中就会包含两个字段,分别是源IP地址和目的IP地址。

当路由器需要将一个局域网的数据转发到另一个局域网时,在路由器的链路层会先将数据的在当前局域网对应的底层报头去掉,然后将剩下的数据向上交付给网络层,此时在网络层就可以获取到该数据对应的目的IP地址,然后路由器就可以根据该IP地址在路由表当中进行查找,最终就能够确认该数据应该发送到哪一个局域网。

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。

你可能感兴趣的:(网络编程,网络,计算机网络,tcp/ip)