阅读导航
- 引言
- 一、计算机网络背景
- 1. 网络发展历史
- 二、认识 "协议"
- 1. 网络协议概念
- 2. 网络协议初识
- (1)协议分层
- (2)OSI参考模型(Open Systems Interconnection Reference Model)
- (3) TCP/IP协议族模型
- 三、网络传输基本流程
- 1. 同一个网段内的两台主机进行文件传输
- 2. 跨网段的主机的文件传输
- 四、数据包封装和分用
- 1. 数据包封装(Packet Encapsulation)
- 2. 数据包分用(Packet Demultiplexing)
- 五、网络中的地址管理
- 1. IP地址
- 2. MAC地址
- 温馨提示
引言
在当今互联网时代,Linux操作系统在服务器领域占据着举足轻重的地位。作为开源软件的杰出代表,Linux以其稳定性、灵活性和高度可定制性而闻名。在Linux系统中,网络编程一直是一个重要的领域,无论是开发服务器应用程序还是网络服务,对于网络基础的理解都是至关重要的。本文旨在探讨Linux网络基础知识,包括网络的简单发展历史、网络传输的基本逻辑以及网络传输基本流程,帮助读者深入了解Linux下的网络编程原理和实践应用。通过本文的学习,读者将能够更好地掌握Linux系统下网络编程的核心概念,为后续深入学习和实际应用打下坚实的基础。
一、计算机网络背景
1. 网络发展历史
🍪网络发展历史可以从以下几个关键时期展开介绍:
- 60年代到70年代初:ARPANET时期
ARPANET是美国国防部高级研究计划局(ARPA)于20世纪60年代初开展的一个计划,旨在建立一种新型的通讯方法,以便对分布在美国各地的研究机构进行互联。ARPANET采用了分组交换的方式,通过将数据分成若干个小的数据包进行传输,从而避免了传统电路交换的局限性。
- 70年代中期到80年代末:TCP/IP时期
1974年,美国国防部下属的高级研究计划局(ARPA)开始了一个新的项目,旨在开发一种新的协议套件,即TCP/IP协议套件。TCP/IP协议套件是目前互联网所采用的基本协议,它由两个协议组成:传输控制协议(TCP)和互联网协议(IP)。这两个协议的出现,使得互联网实现了规模化的发展。
- 90年代到2000年代初:万维网时期
1991年,蒂姆·伯纳斯-李(Tim Berners-Lee)在CERN(欧洲核子研究组织)创建了第一个Web服务器,开发了第一个Web浏览器,从而使得万维网(World Wide Web)开始应运而生。万维网的出现,极大地促进了互联网信息的传播和共享,成为了互联网发展的一个重要时期。
- 2000年代中期至今:移动互联网时期
随着智能手机、平板电脑等移动设备的普及,移动互联网开始成为互联网新的增长点。移动互联网技术的快速发展,使得人们可以随时随地进行信息的交流和共享,网络应用也逐渐从PC端转向移动端,其范围和应用场景不断拓展。
网络发展历程是不断演化和壮大的过程,它推动了人类社会的信息化进程,也催生了一系列新兴技术和应用。未来,随着物联网、5G等技术的不断发展,网络将进一步融入我们的生活和工作中,为我们带来更多便利。
二、认识 “协议”
1. 网络协议概念
协议是指在计算机网络中,为了实现数据通信和信息交换而制定的一系列规则和约定。这些规则和约定规定了数据传输的格式、顺序、错误检测与纠正、数据的确认方式等,确保不同设备之间能够有效地通信和协作。
计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0
和 1
这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。
2. 网络协议初识
(1)协议分层
计算机网络中的协议通常按照功能和目的分为不同的层次,这种组织结构被称为协议分层。常见的协议分层模型是OSI参考模型和TCP/IP协议族模型。
(2)OSI参考模型(Open Systems Interconnection Reference Model)
OSI(Open Systems Interconnection)参考模型是一个由国际标准化组织(ISO)制定的用于网络通信协议设计的参考框架,将计算机网络通信划分为七个层次,每个层次负责不同的功能。
-
应用层(Application Layer):应用层是最靠近用户的一层,提供用户应用程序与网络的接口。它定义了用户与网络服务之间的通信规则,包括数据格式、加密和身份验证等。
-
表示层(Presentation Layer):表示层负责处理数据的格式化、编码和加密,确保不同系统之间能够正确解释、显示和交换数据。
-
会话层(Session Layer):会话层管理不同设备之间的会话(session),包括建立、维护和终止会话连接,以及处理数据传输中出现的错误和恢复机制。
-
传输层(Transport Layer):传输层负责可靠地传输数据,提供端到端的数据传输服务,包括流量控制、错误检测和纠正,以及数据重传。
-
网络层(Network Layer):网络层处理数据在网络中的路由和转发,负责确定数据的最佳路径,并实现不同网络之间的互联互通。
-
数据链路层(Data Link Layer):数据链路层负责在相邻节点之间传输数据,通过物理地址(MAC地址)进行数据帧的传输和接收。
-
物理层(Physical Layer):物理层负责在物理媒介上传输比特流,包括电气信号、光信号等,以及定义传输媒介的接口标准和传输速率。
这种七层模型的分层设计使得不同层次的协议可以独立开发和实现,同时也提供了灵活性和可扩展性,促进了网络通信协议的发展和应用。
(3) TCP/IP协议族模型
⭕这些分层模型将网络通信划分为多个层次,每个层次负责特定的功能,且各层之间通过定义好的接口进行交互。通过分层设计,不同层次的协议可以独立地进行开发、实现和维护,提高了系统的可扩展性和灵活性,同时也方便了协议的替换和更新。
在实际的网络通信中,每个层次的协议都有其特定的作用和职责,通过协同工作,实现了复杂的网络通信需求。例如,应用层协议负责定义应用程序间的通信规则,传输层协议负责提供端到端的数据传输服务,网络层协议负责进行数据包的路由和转发,数据链路层协议负责实现数据在物理介质上的传输等。
三、网络传输基本流程
1. 同一个网段内的两台主机进行文件传输
2. 跨网段的主机的文件传输
🍔数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
-
ARP(地址解析协议)请求:当源主机要发送数据到目标主机时,首先需要确定目标主机的物理地址(MAC地址)。如果目标主机的IP地址不在同一子网内,源主机会向本地路由器发送ARP请求,以获取目标主机所在网段的网关路由器的MAC地址。
-
路由器转发:本地路由器接收到数据包后,根据目标主机的IP地址和路由表信息,确定下一跳路由器的IP地址,并将数据包转发给下一跳路由器。
-
跨网段传输:数据包经过本地路由器后,进入到连接不同网络的路由器,这些路由器负责在不同网络之间传输数据。每个路由器根据目标主机的IP地址和路由表信息,决定数据包的下一跳路由器或目标主机。
-
目标主机接收:最终数据包到达目标主机所在网络的路由器,路由器将数据包转发给目标主机。目标主机接收数据包,并进行相应的处理,将数据包重新组装为文件。
🚩总而言之,在跨网段的主机文件传输过程中,涉及到源主机和目标主机之间的IP地址解析、跨网段传输、路由器的转发等步骤,网络中的路由器起着至关重要的作用,负责在不同网络之间进行数据包的转发和路由选择,确保数据能够准确、高效地传输到目标主机。这些网络变化和数据传输过程都是在网络层(第三层)和数据链路层(第二层)上进行的。
四、数据包封装和分用
1. 数据包封装(Packet Encapsulation)
数据包封装是将要传输的数据划分为小块,并在每个数据块(称为分组或数据包)中添加必要的标识和控制信息的过程。封装发生在发送方主机上,主要涉及到从应用层到物理层的不同网络协议层。
-
应用层封装:应用层负责将要传输的数据划分为较小的数据块,通常称为消息或报文。每个消息或报文都会被添加一个应用层头部,其中包含了源和目标应用程序的端口号等信息。
-
传输层封装:传输层接收应用层的数据块,并在每个数据块的前面增加传输层头部。传输层头部包含了源和目标主机的端口号、传输协议(如TCP或UDP)以及用于错误检测的校验和等信息。
-
网络层封装:网络层接收传输层的数据块,为每个数据块添加网络层头部。网络层头部包含了源和目标主机的IP地址,以及用于路由选择和数据分片的其他信息。
-
数据链路层封装:数据链路层接收网络层的数据块,并在每个数据块的前面增加数据链路层头部。数据链路层头部包含了源和目标主机的MAC地址,以及用于错误检测和流量控制的其他信息。
最终,数据包被封装为一个完整的数据帧,该帧包含了从应用层到物理层的所有头部和数据内容。
2. 数据包分用(Packet Demultiplexing)
数据包分用是在接收方主机上将接收到的数据包按照协议层次进行解析和处理的过程。数据包分用发生在接收方主机的物理层到应用层之间。
-
物理层分用:物理层接收到数据包后,根据物理媒介(如电缆或无线信号)的特性将数据传递给数据链路层。
-
数据链路层分用:数据链路层首先解析数据链路层头部,获取目标主机的MAC地址等信息,然后将数据包传递给网络层。
-
网络层分用:网络层解析网络层头部,根据目标IP地址确定数据包的下一步处理方式,将数据包传递给传输层。
-
传输层分用:传输层解析传输层头部,根据端口号等信息将数据包传递给相应的应用程序。
-
应用层分用:最后,应用层解析应用层头部和数据内容,将数据交给目标应用程序进行处理。
通过数据包分用,接收方主机能够正确地将接收到的数据包传递给相应的应用程序进行进一步处理和响应。
五、网络中的地址管理
1. IP地址
IP地址(Internet Protocol Address)是在互联网上用于识别和定位计算机或网络设备的唯一地址。它是在TCP/IP协议中定义的一种地址,用于在网络中准确定位主机或路由器,并实现数据包的传输和路由。
IP地址通常分为IPv4地址和IPv6地址两种类型:
-
IPv4地址:IPv4地址是目前广泛采用的IP地址格式,由32位二进制数表示,通常以4组十进制数(0-255)表示,每组之间用点号分隔。例如,192.168.1.1是一个常见的IPv4地址。
-
IPv6地址:IPv6地址是为了解决IPv4地址空间不足的问题而推出的新一代IP地址格式,采用128位二进制数表示,通常以8组16进制数表示,每组之间用冒号分隔。例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334是一个IPv6地址。
IP地址被分为两部分:网络部分和主机部分。网络部分用来标识网络,主机部分用来标识该网络中的主机或设备。根据不同的IP地址类别,网络部分和主机部分的划分方式不同。
IP地址的作用包括但不限于以下几点:
- 确定主机或设备在网络中的位置和身份。
- 实现数据包的路由和转发。
- 提供网络通信中的端到端连接。
- 支持互联网上各种应用和服务的正常运作。
在网络通信中,IP地址是一个非常重要的概念,它是整个互联网中数据传输和通信的基础。不同的主机通过其唯一的IP地址可以相互识别和进行通信,从而实现信息的交换和资源共享。
2. MAC地址
MAC地址(Media Access Control Address)是网络设备(如计算机、路由器、网络打印机等)网卡上的硬件地址,用于在局域网中唯一标识网络设备。每个网络设备的网卡都有一个唯一的MAC地址,由厂商在生产过程中分配,并以十六进制数表示。
MAC地址通常由6组16进制数表示,用冒号或连字符分隔,例如:00:1A:2B:3C:4D:5E。其中,前3组数字代表了厂商识别码(Organizationally Unique Identifier,OUI),由IEEE注册管理,用来识别设备的厂商,后面3组数字是由厂商分配给设备的唯一标识。
MAC地址的作用包括但不限于以下几点:
- 在局域网中唯一标识网络设备,用于进行数据帧的寻址和传输。
- 作为数据链路层的一个重要参数,用于实现局域网中设备之间的数据通信。
在局域网中,当一个设备需要向另一个设备发送数据时,它会将数据帧封装,并在数据帧中附加目标设备的MAC地址。网络设备会根据目标MAC地址来判断是否接收该数据帧。因此,MAC地址在局域网中扮演着非常重要的角色,它是实现局域网内设备通信的关键。
🚨🚨注意:MAC地址是数据链路层的概念,它只在局域网范围内具有唯一性,而不同的局域网中可能存在相同的MAC地址。在跨网段通信时,会使用IP地址来确定目标设备的位置和身份,而不直接使用MAC地址。
温馨提示
感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!
再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!