用图表解释 TCP/IP 协议基础知识

举报
Tiamo_T 发表于 2022/05/21 08:24:08 2022/05/21
【摘要】 您有没有想过您的计算机如何与本地 LAN 上的其他计算机或 Internet 上的其他系统通信? 了解计算机如何交互的复杂性是网络的重要组成部分,对于系统管理员和开发人员来说都同样重要。在本文中,我们将尝试从每个人都需要理解的最基本的层面来讨论通信的概念。

您有没有想过您的计算机如何与本地 LAN 上的其他计算机或 Internet 上的其他系统通信?

了解计算机如何交互的复杂性是网络的重要组成部分,对于系统管理员和开发人员来说都同样重要。在本文中,我们将尝试从每个人都需要理解的最基本的层面来讨论通信的概念。

TCP/IP 协议套件

网络上计算机之间的通信是通过协议套装完成的。最广泛使用和最广泛可用的协议套件是 TCP/IP 协议套件。协议套装由分层架构组成,其中每一层都描述了可以由协议执行的一些功能。每一层通常有多个协议选项来执行该层所遵守的职责。TCP/IP 通常被认为是一个 4 层系统。4层如下:

  1. 应用层
  2. 传输层
  3. 网络层
  4. 数据链路层

1.应用层

这是 TCP/IP 协议套件的顶层。该层包括使用传输层协议将数据传送到目标计算机的应用程序或进程。

在每一层都有特定的协议选项来执行指定给该特定层的任务。因此,应用层也有各种应用程序用来与第二层传输层通信的协议。一些流行的应用层协议是:

  • HTTP(超文本传输​​协议)
  • FTP(文件传输协议)
  • SMTP(简单邮件传输协议)
  • SNMP(简单网络管理协议)等

2.传输层

该层为两台主机之间的数据流提供骨干。该层从其上方的应用层接收数据。在这一层工作的协议有很多,但传输层最常用的两种协议是 TCP 和 UDP。

TCP 用于需要可靠连接的情况,而 UDP 用于不可靠连接的情况。


TCP将数据(来自应用层)分成适当大小的块,然后将这些块传递到网络上。它确认收到的数据包,等待它发送的数据包的确认,如果没有及时收到确认,则设置超时重新发送数据包。术语“可靠连接”用于不希望丢失通过此连接在网络上传输的任何信息的情况。因此,用于这种类型连接的协议必须提供实现这种期望特性的机制。例如,在下载文件时,不希望丢失任何信息(字节),因为这可能会导致下载内容的损坏。

UDP通过将数据包从一台主机发送到另一台主机,提供了一种相对简单但不可靠的服务。UDP不采取任何额外的措施来保证发送的数据是否被目标主机接收。术语“不可靠的连接”用于某些信息的丢失不会妨碍通过该连接完成的任务。例如,在流式传输视频时,由于某种原因丢失几个字节的信息是可以接受的,因为这不会对用户体验造成太大损害。

3.网络层

该层也称为 Internet 层。该层的主要目的是组织或处理网络上数据的移动。通过数据的移动,我们通常是指通过网络路由数据。这一层使用的主要协议是IP。而 ICMP(由流行的“ping”命令使用)和 IGMP 也用于这一层。

4. 数据链路层

该层也称为网络接口层。该层通常由操作系统中的设备驱动程序和连接到系统的网络接口卡组成。设备驱动程序和网络接口卡都负责与用于通过网络传输数据的媒体的通信细节。在大多数情况下,这种媒体是电缆的形式。在这一层使用的一些著名协议包括 ARP(地址解析协议)、PPP(点对点协议)等。

TCP/IP 概念示例

值得注意的一点是,两台计算机之间通过 TCP/IP 协议套件在网络上的交互是以客户端服务器架构的形式进行的。

客户端请求服务,而服务器处理客户端请求。

现在,由于我们已经讨论了帮助数据通过网络从主机流向目标的底层。让我们举一个非常简单的例子来使这个概念更清楚。

考虑打开网站时的数据流。

如上图所示,信息通过主机上的每一层向下流动。在第一层,由于使用的是http协议,所以形成了一个http请求并发送到传输层。

在这里,TCP 协议为来自上层的数据分配了更多信息(如序列号、源端口号、目标端口号等),以便通信保持可靠,即可以保持对发送数据和接收数据的跟踪。

在下一个较低层,IP 在来自传输层的数据上添加自己的信息。此信息将有助于数据包通过网络传输。最后,数据链路层确保与物理介质之间的数据传输正确完成。同样,在数据链路层完成的通信可以是可靠的或不可靠的。

此信息在物理介质(如以太网)上传播并到达目标机器。

现在,在目标机器(在我们的例子中是托管网站的机器)上发生了相同的一系列交互,但顺序相反。

数据包首先在数据链路层接收。在这一层,信息(由主机的数据链路层协议填充)被读取,其余数据被传递到上层。

同样在网络层,主机的网络层协议设置的信息被读取,其余信息被传递到下一层。传输层也是如此,最终主机应用程序(您的浏览器)发送的 HTTP 请求被目标应用程序(网站服务器)接收。

有人会想知道,当目标机器上的相应协议读取每一层的特定信息时会发生什么,或者为什么需要它?好吧,让我们通过传输层存在的 TCP 协议示例来理解这一点。在主机上,该协议将诸如序列号之类的信息添加到该层发送的每个数据包中。

在目标机器上,当数据包到达这一层时,这一层的 TCP 会记下数据包的序列号并发送确认(接收到的序列号 + 1)。

现在,如果主机 TCP 在某个指定时间内没有收到确认,它会重新发送相同的数据包。所以这种方式 TCP 确保没有数据包丢失。所以我们看到,每一层的协议都读取其对应层设置的信息,以实现它所代表的层的功能。

端口、服务器和标准

在特定机器上,与机器的 IP 地址相结合的端口号称为套接字。客户端和服务器上的 IP 和端口的组合称为四元组。这四个元组唯一地标识了一个连接。在本节中,我们将讨论如何选择端口号。

您已经知道一些非常常见的服务,如 FTP、telnet 等,在众所周知的端口号上运行。FTP 服务器运行在端口 21 上,而 Telent 服务器运行在端口 23 上。因此,我们看到由任何 TCP/IP 实现提供的一些标准服务都有一些运行它们的标准端口。这些标准端口号通常从 1 到 1023 中选择。众所周知的端口由 Internet 编号分配机构 (IANA) 管理。

虽然大多数标准服务器(由 TCP/IP 套件的实现提供)在标准端口号上运行,但客户端不需要在任何标准端口上运行。

客户端端口号称为临时端口。短暂的意思是短暂的。这是因为客户端可能会连接到服务器,完成其工作,然后断开连接。所以我们使用了“短命”一词,因此它们不需要标准端口。

此外,由于客户端需要知道服务器的端口号才能连接到它们,所以大多数标准服务器都在标准端口号上运行。

为客户端保留的端口一般在 1024 到 5000 之间。大于 5000 的端口号是为那些不标准或不知名的服务器保留的。

如果我们查看文件“/etc/services”,您会发现大多数标准服务器以及它们运行的​​端口。

$ cat /etc/services
systat		11/tcp		users
daytime		13/udp
netstat		15/tcp
qotd		17/tcp		quote
msp		18/udp
chargen		19/udp		ttytst source
ftp-data	20/tcp
ftp		21/tcp
ssh		22/tcp
ssh		22/udp
telnet		23/tcp
...
...
...

正如您从 /etc/services 文件中看到的,FTP 的端口号为 21,telent 的端口号为 23 等。您可以在此文件上使用“grep”命令来查找任何服务器及其关联的端口。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。