接上文
【网络编程】TCP/IP协议(互联网的基石)_祐言QAQ的博客-CSDN博客
OSI模型(Open Systems Interconnection)是一种七层网络模型,用于描述计算机网络中的通信协议。它是一种理论上的模型,旨在标准化计算机网络的通信过程。以下是OSI模型的七个层次,自下而上排列:
TCP/IP模型是因特网使用的网络模型,也被称为互联网模型。它通常被划分为四个层次,如下所示:
在TCP/IP模型中,高层的功能通常包括在应用层,而OSI模型中这些功能分布在会话层、表示层和应用层中。因此,TCP/IP模型更加精简,适用于互联网通信。
TCP/IP模型将会话层、表示层和应用层的功能整合到了应用层中。这使得模型更加紧凑,适用于因特网通信。
通过对比这两个模型,我们可以看出它们在层次划分和功能分布上的异同。在实际网络工程中,TCP/IP模型更常用,但了解OSI模型有助于深入理解网络协议的设计和原理。
IP(Internet Protocol,互联网协议)是计算机网络通信的基础协议之一。它负责将数据包从一个计算机传输到另一个计算机,无论它们在世界的哪个地方。以下是IP的一些基本概念:
数据包寻址: IP协议使用IP地址来唯一标识网络中的每个设备。这些地址充当数据包的目标地址,确保数据包到达正确的目标。
路由: IP协议还负责决定数据包如何从发送方传输到接收方。这包括选择正确的路径和中转节点以确保数据包的有效传递。
无连接协议: IP是无连接协议,这意味着它在发送数据包之前不建立持久连接。每个数据包被独立处理,不需要维护连接状态。
全球性: IP允许跨全球范围的通信。无论计算机位于世界的哪个地方,只要它们连接到因特网,就可以通过IP协议进行通信。
IP地址是IPv4和IPv6两种版本的核心。它们用于标识设备在网络中的位置。以下是有关IP地址分类的信息:
IPv4采用32位地址,通常以四个十进制数表示(例如,192.168.0.1)。IPv4地址分为以下几个类别:
IPv6采用128位地址,通常以八组16进制数表示(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。IPv6地址的数量远远超过IPv4,以应对不断增长的网络需求。
子网掩码用于划分IP地址空间,允许在一个网络中创建多个子网络(子网)。它决定了IP地址中哪些位用于网络标识,哪些位用于主机标识。子网掩码与IP地址结合使用,以确定一个设备是否在同一子网内。以下是子网掩码的一些关键概念:
子网掩码的使用允许网络管理员更好地组织和管理IP地址,以适应复杂的网络拓扑和需求。
端口号是计算机网络中的重要概念,用于标识计算机上运行的不同服务或应用程序。每个计算机都有数千个端口可用于网络通信。端口号的作用是确保数据包在源和目标计算机之间正确地路由到特定的应用程序或服务。
在TCP/IP协议中,端口号是一个16位的整数,范围从0到65535。这个范围被分成三个主要部分:
0到1023: 这些端口号被称为「知名端口」或「系统端口」。它们通常由标准化的网络协议使用,如HTTP(端口80)、FTP(端口21)和SSH(端口22)。
1024到49151: 这些端口号被称为「注册端口」。它们可以被应用程序或服务动态分配,但通常与特定的服务相关。
49152到65535: 这些端口号是「动态端口」或「私有端口」。它们通常被客户端应用程序使用,用于临时通信。
不同的端口号用于不同类型的网络服务。以下是一些常见的端口号及其用途的示例:
端口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端口。
这些只是一些示例,不同的应用程序和服务可能使用不同的端口号。端口号的正确使用确保了网络上各种应用程序的正常通信,并允许多个应用程序在同一台计算机上同时运行而不发生冲突。
字节序(Endianness)是指多字节数据在内存中存储的顺序。它是由计算机体系结构决定的,用于确定在内存中存储多字节数据时,字节的排列顺序是从高位到低位(大端序)还是从低位到高位(小端序)。了解字节序对于在不同计算机之间正确地解释二进制数据非常重要。
在大端序中,最高有效字节(Most Significant Byte,MSB)存储在最低内存地址,而最低有效字节(Least Significant Byte,LSB)存储在最高内存地址。这意味着多字节数据的高位字节存储在低地址处,低位字节存储在高地址处。
在小端序中,最低有效字节(LSB)存储在最低内存地址,而最高有效字节(MSB)存储在最高内存地址。这意味着多字节数据的低位字节存储在低地址处,高位字节存储在高地址处。
字节序的区别在网络通信和数据存储中具有重要性:
网络通信: 在网络通信中,不同计算机可能使用不同的字节序。如果发送方和接收方的字节序不匹配,解释数据时可能会产生错误。因此,在网络通信中,通常需要进行字节序的转换,以确保数据正确解释。
数据存储: 计算机在存储多字节数据时通常采用其本地字节序。这意味着如果将数据存储在一个计算机上,然后将其传输到具有不同字节序的计算机,数据可能会被错误解释。因此,在存储和传输数据时,需要考虑字节序并进行适当的转换。
综上所述,了解字节序的概念以及在网络通信和数据存储中的影响至关重要,特别是在跨不同计算机体系结构之间传输和处理数据时。确保数据在不同计算机之间正确解释是实现互操作性的关键因素。
套接字(Socket)是一种用于实现进程间通信的接口,它允许不同计算机上的应用程序进行数据交换。套接字允许应用程序通过网络或本地计算机上的进程进行通信,这种通信可以是双向的,可以传输数据、文件或者其他形式的信息。
套接字的工作方式类似于文件描述符。它们可以被用于打开、读取、写入和关闭,使应用程序能够通过套接字与其他进程进行数据交换。套接字还允许应用程序实现各种不同的通信模式,包括面向连接的通信(如TCP套接字)和无连接的通信(如UDP套接字)。
有不同类型的套接字,每种类型适用于不同的通信需求和场景。以下是两种常见的套接字类型:
TCP(Transmission Control Protocol)套接字是一种可靠的套接字类型,它提供面向连接的通信。以下是TCP套接字的一些特点:
可靠性: TCP确保数据的可靠传输,它使用确认机制来确保数据的完整性和顺序传递。
有序性: TCP保持数据的有序性,确保接收方按照发送顺序接收数据。
面向连接: TCP在通信前需要建立连接,然后再进行数据传输,之后关闭连接。
适用于可靠性要求高的应用: 由于其可靠性,TCP常用于需要确保数据完整性和顺序的应用,如Web浏览器、电子邮件等。
UDP(User Datagram Protocol)套接字是一种无连接的套接字类型,它提供低延迟的通信。以下是UDP套接字的一些特点:
无连接: UDP不需要在通信前建立连接,数据包可以立即传输。
低延迟: 由于无连接性质,UDP通常具有较低的延迟,适用于实时通信。
不可靠性: UDP不提供数据的可靠性传输,数据包可能会丢失或乱序。
适用于实时应用: 由于其低延迟特性,UDP常用于音频、视频流传输以及在线游戏等需要快速传输的应用。
选择TCP或UDP套接字取决于应用程序的需求。如果应用程序需要可靠性和有序性,TCP是更好的选择。如果应用程序更关注低延迟和快速传输,UDP可能更适合。因此,了解套接字类型的特点和适用场景对于有效地设计和开发网络应用程序至关重要。
更多C/C++语言、Linux系统、数据结构和ARM板实战相关文章,关注专栏:
手撕C语言
玩转linux
脚踢数据结构
系统、网络编程
探索C++
6818(ARM)开发板实战
一键三连喔
~