【网络编程】网络基础概念

  • (꒪ꇴ꒪ ),Hello我是祐言QAQ
  • 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP
  • 快上,一起学习,让我们成为一个强大的攻城狮!
  • 送给自己和读者的一句鸡汤:集中起来的意志可以击穿顽石!
  • 作者水平很有限,如果发现错误,请在评论区指正,感谢


接上文

【网络编程】TCP/IP协议(互联网的基石)_祐言QAQ的博客-CSDN博客

第四部分:网络模型

4.1 探讨OSI模型和TCP/IP模型,比较它们之间的异同

OSI模型

        OSI模型(Open Systems Interconnection)是一种七层网络模型,用于描述计算机网络中的通信协议。它是一种理论上的模型,旨在标准化计算机网络的通信过程。以下是OSI模型的七个层次,自下而上排列:

  1. 物理层:负责传输原始比特流,处理硬件传输和电信信号。
  2. 数据链路层:处理数据帧的传输,提供数据的可靠传输和错误检测。
  3. 网络层:负责数据包的路由和寻址,实现不同网络之间的通信。
  4. 传输层:管理端到端通信,提供数据的可靠性和流量控制。
  5. 会话层:处理会话管理和同步,确保数据的正确顺序传输。
  6. 表示层:负责数据的编码和加密,以确保不同系统间的数据格式兼容。
  7. 应用层:提供应用程序接口,使应用程序能够访问网络服务。

TCP/IP模型

        TCP/IP模型是因特网使用的网络模型,也被称为互联网模型。它通常被划分为四个层次,如下所示:

  1. 物理层:与OSI模型的物理层类似,负责传输原始比特流。
  2. 数据链路层:与OSI的数据链路层相似,负责数据帧的传输和错误检测。
  3. 网络层:与OSI的网络层类似,负责数据包的路由和寻址。
  4. 传输层:与OSI的传输层类似,提供端到端通信和可靠性。

        在TCP/IP模型中,高层的功能通常包括在应用层,而OSI模型中这些功能分布在会话层、表示层和应用层中。因此,TCP/IP模型更加精简,适用于互联网通信。

4.2 说明每个模型的不同层次和功能

OSI模型

  1. 物理层:处理硬件传输和电信信号。
  2. 数据链路层:提供数据的可靠传输和错误检测。
  3. 网络层:负责数据包的路由和寻址,实现不同网络之间的通信。
  4. 传输层:管理端到端通信,提供数据的可靠性和流量控制。
  5. 会话层:处理会话管理和同步,确保数据的正确顺序传输。
  6. 表示层:负责数据的编码和加密,以确保不同系统间的数据格式兼容。
  7. 应用层:提供应用程序接口,使应用程序能够访问网络服务。

TCP/IP模型

  1. 物理层:负责传输原始比特流。
  2. 数据链路层:处理数据帧的传输和错误检测。
  3. 网络层:负责数据包的路由和寻址。
  4. 传输层:提供端到端通信和可靠性。

        TCP/IP模型将会话层、表示层和应用层的功能整合到了应用层中。这使得模型更加紧凑,适用于因特网通信。

        通过对比这两个模型,我们可以看出它们在层次划分和功能分布上的异同。在实际网络工程中,TCP/IP模型更常用,但了解OSI模型有助于深入理解网络协议的设计和原理。

第五部分:IP

5.1 基本概念

        IP(Internet Protocol,互联网协议)是计算机网络通信的基础协议之一。它负责将数据包从一个计算机传输到另一个计算机,无论它们在世界的哪个地方。以下是IP的一些基本概念:

  • 数据包寻址: IP协议使用IP地址来唯一标识网络中的每个设备。这些地址充当数据包的目标地址,确保数据包到达正确的目标。

  • 路由: IP协议还负责决定数据包如何从发送方传输到接收方。这包括选择正确的路径和中转节点以确保数据包的有效传递。

  • 无连接协议: IP是无连接协议,这意味着它在发送数据包之前不建立持久连接。每个数据包被独立处理,不需要维护连接状态。

  • 全球性: IP允许跨全球范围的通信。无论计算机位于世界的哪个地方,只要它们连接到因特网,就可以通过IP协议进行通信。

5.2 IP地址分类

        IP地址是IPv4和IPv6两种版本的核心。它们用于标识设备在网络中的位置。以下是有关IP地址分类的信息:

IPv4地址

        IPv4采用32位地址,通常以四个十进制数表示(例如,192.168.0.1)。IPv4地址分为以下几个类别:

  • A类地址: 用于大型网络,其第一个字节范围为1-126。
  • B类地址: 用于中型网络,其第一个字节范围为128-191。
  • C类地址: 用于小型网络,其第一个字节范围为192-223。
  • D类地址: 用于多播(multicast)通信,范围为224-239。
  • E类地址: 保留用途,范围为240-255。

IPv6地址

        IPv6采用128位地址,通常以八组16进制数表示(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。IPv6地址的数量远远超过IPv4,以应对不断增长的网络需求。

5.3 子网掩码

        子网掩码用于划分IP地址空间,允许在一个网络中创建多个子网络(子网)。它决定了IP地址中哪些位用于网络标识,哪些位用于主机标识。子网掩码与IP地址结合使用,以确定一个设备是否在同一子网内。以下是子网掩码的一些关键概念:

  • 网络标识: 子网掩码中设定为1的位用于标识网络,剩余位用于主机。
  • 子网数量: 子网掩码的长度决定了网络中可以创建的子网数量。更长的子网掩码创建更多的子网,但每个子网的主机数量较少。
  • CIDR表示法: 为了简化子网掩码的表示,使用CIDR表示法(Classless Inter-Domain Routing)。例如,/24表示子网掩码中有24位设置为1,用于网络标识。

        子网掩码的使用允许网络管理员更好地组织和管理IP地址,以适应复杂的网络拓扑和需求。

第六部分:端口号

6.1 解释端口号的概念和作用

        端口号是计算机网络中的重要概念,用于标识计算机上运行的不同服务或应用程序。每个计算机都有数千个端口可用于网络通信。端口号的作用是确保数据包在源和目标计算机之间正确地路由到特定的应用程序或服务。

        在TCP/IP协议中,端口号是一个16位的整数,范围从0到65535。这个范围被分成三个主要部分:

  • 0到1023: 这些端口号被称为「知名端口」或「系统端口」。它们通常由标准化的网络协议使用,如HTTP(端口80)、FTP(端口21)和SSH(端口22)。

  • 1024到49151: 这些端口号被称为「注册端口」。它们可以被应用程序或服务动态分配,但通常与特定的服务相关。

  • 49152到65535: 这些端口号是「动态端口」或「私有端口」。它们通常被客户端应用程序使用,用于临时通信。

6.2 说明不同端口号的用途

        不同的端口号用于不同类型的网络服务。以下是一些常见的端口号及其用途的示例:

  • 端口80(HTTP): 用于提供Web服务。当你在浏览器中访问网站时,通常会使用HTTP协议通过端口80来传输网页数据。

  • 端口21(FTP): 用于文件传输协议(FTP)。FTP允许文件在客户端和服务器之间进行传输。

  • 端口22(SSH): 用于安全外壳协议(SSH)。SSH提供了加密的远程访问,通常用于安全地登录远程服务器。

  • 端口25(SMTP): 用于简单邮件传输协议(SMTP)。SMTP用于发送电子邮件。

  • 端口53(DNS): 用于域名系统(DNS)。DNS将域名转换为IP地址,以便在网络上查找主机。

  • 端口443(HTTPS): 用于超文本传输安全协议(HTTPS)。HTTPS是加密的HTTP协议,用于安全的Web通信,如在线银行和电子商务网站。

  • 端口3306(MySQL): 用于MySQL数据库服务器。MySQL是一种常用的数据库管理系统。

  • 端口8080: 通常用于代理服务器或Web应用程序的备用HTTP端口。

        这些只是一些示例,不同的应用程序和服务可能使用不同的端口号。端口号的正确使用确保了网络上各种应用程序的正常通信,并允许多个应用程序在同一台计算机上同时运行而不发生冲突。

第七部分:字节序

7.1 介绍字节序(Endianness)的概念

        字节序(Endianness)是指多字节数据在内存中存储的顺序。它是由计算机体系结构决定的,用于确定在内存中存储多字节数据时,字节的排列顺序是从高位到低位(大端序)还是从低位到高位(小端序)。了解字节序对于在不同计算机之间正确地解释二进制数据非常重要。

7.2 解释大端序和小端序

大端序(Big Endian)

        在大端序中,最高有效字节(Most Significant Byte,MSB)存储在最低内存地址,而最低有效字节(Least Significant Byte,LSB)存储在最高内存地址。这意味着多字节数据的高位字节存储在低地址处,低位字节存储在高地址处。

小端序(Little Endian)

        在小端序中,最低有效字节(LSB)存储在最低内存地址,而最高有效字节(MSB)存储在最高内存地址。这意味着多字节数据的低位字节存储在低地址处,高位字节存储在高地址处。

        字节序的区别在网络通信和数据存储中具有重要性

  • 网络通信: 在网络通信中,不同计算机可能使用不同的字节序。如果发送方和接收方的字节序不匹配,解释数据时可能会产生错误。因此,在网络通信中,通常需要进行字节序的转换,以确保数据正确解释。

  • 数据存储: 计算机在存储多字节数据时通常采用其本地字节序。这意味着如果将数据存储在一个计算机上,然后将其传输到具有不同字节序的计算机,数据可能会被错误解释。因此,在存储和传输数据时,需要考虑字节序并进行适当的转换。

        综上所述,了解字节序的概念以及在网络通信和数据存储中的影响至关重要,特别是在跨不同计算机体系结构之间传输和处理数据时。确保数据在不同计算机之间正确解释是实现互操作性的关键因素。

第八部分:套接字socket

8.1 进程间的通信接口,特殊的文件描述符

        套接字(Socket)是一种用于实现进程间通信的接口,它允许不同计算机上的应用程序进行数据交换套接字允许应用程序通过网络或本地计算机上的进程进行通信,这种通信可以是双向的,可以传输数据、文件或者其他形式的信息。

        套接字的工作方式类似于文件描述符。它们可以被用于打开、读取、写入和关闭,使应用程序能够通过套接字与其他进程进行数据交换。套接字还允许应用程序实现各种不同的通信模式,包括面向连接的通信(如TCP套接字)和无连接的通信(如UDP套接字)。

8.2 套接字分类

        有不同类型的套接字,每种类型适用于不同的通信需求和场景。以下是两种常见的套接字类型:

TCP套接字

        TCP(Transmission Control Protocol)套接字是一种可靠的套接字类型,它提供面向连接的通信。以下是TCP套接字的一些特点:

  • 可靠性: TCP确保数据的可靠传输,它使用确认机制来确保数据的完整性和顺序传递。

  • 有序性: TCP保持数据的有序性,确保接收方按照发送顺序接收数据。

  • 面向连接: TCP在通信前需要建立连接,然后再进行数据传输,之后关闭连接。

  • 适用于可靠性要求高的应用: 由于其可靠性,TCP常用于需要确保数据完整性和顺序的应用,如Web浏览器、电子邮件等。

UDP套接字

        UDP(User Datagram Protocol)套接字是一种无连接的套接字类型,它提供低延迟的通信。以下是UDP套接字的一些特点:

  • 无连接: UDP不需要在通信前建立连接,数据包可以立即传输。

  • 低延迟: 由于无连接性质,UDP通常具有较低的延迟,适用于实时通信。

  • 不可靠性: UDP不提供数据的可靠性传输,数据包可能会丢失或乱序。

  • 适用于实时应用: 由于其低延迟特性,UDP常用于音频、视频流传输以及在线游戏等需要快速传输的应用。

        选择TCP或UDP套接字取决于应用程序的需求。如果应用程序需要可靠性和有序性,TCP是更好的选择。如果应用程序更关注低延迟和快速传输,UDP可能更适合。因此,了解套接字类型的特点和适用场景对于有效地设计和开发网络应用程序至关重要。

        更多C/C++语言Linux系统数据结构ARM板实战相关文章,关注专栏:

   手撕C语言

            玩转linux

                    脚踢数据结构

                            系统、网络编程

                                     探索C++

                                             6818(ARM)开发板实战

写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 感谢关注

你可能感兴趣的:(网络编程,系统编程,网络,网络协议,服务器)