我无法理解 TCP/IP 模型,其中第 4 层说假设使用 TCP 意味着连接是定向的并且数据包将遵循特定的路径,但在第 3 层说 IP 是无连接的并且数据包可以采取任何独立路径,这是什么意思?
编辑:根据我的研究,我理解在第 5 层 TCP 连接已完成,而在第 4 层数据被封装为段,这意味着段将遵循特定的路径,并且在第 4 层它被封装为数据包,然后可以使用独立路径进行传输。但是当我们下到第 2 层时数据被封装,然后全部使用第 1 层进行传输,那么这种路径遵循在哪里发生?
这是我的看法
1)这是否意味着从上到下的数据传输将遵循路径到达下一层?如果使用面向连接,则将 ACK 发送到上一层。
2)或者这是否意味着接收方的并行层将在接收到数据时发送 ACK?
3)或者这是否意味着在接收端接收到数据后,直到第 3 层它将是无连接的,并且从第 3 层到第 4 层它将遵循一定的路径?
答案1
不应根据 OSI 模型来讨论 TCP/IP,因为它将 OSI 的七层合并为自己的四层,如下所示:
这里应用层是协议(HTTP、FTP 等),传输层是 TCP/UDP,互联网是 IP,网络访问是连接和传送。
每一层都有自己的机制,因此报头会累积起来。只有 TCP 需要 ACK 机制,因为它是唯一需要三次握手的协议。
对于您的问题:
1)这是否意味着从上到下的数据传输将遵循路径到达下一层?如果使用面向连接,则将 ACK 发送到上一层。
不,只有 TCP 需要 ACK。
2)或者这是否意味着接收方的并行层将在接收到数据时发送 ACK?
TCP 在数据到达时会发送 ACK,但是数据和 ACK 之间并不一一对应。
3)或者这是否意味着在接收端接收到数据后,直到第 3 层它将是无连接的,并且从第 3 层到第 4 层它将遵循一定的路径?
我承认我不明白这个问题,可能是因为您使用的是 OSI 层而不是 TCP/IP 层。您应该从后者的角度来思考。
答案2
TCP 是面向连接的。这意味着
TCP 连接中有两方(不多也不少),即客户端和服务器。
这些方期望发送的内容能够按照发送的顺序到达另一端。
连接已打开,并且可以发送/接收数据,直到一方关闭它。
IP 不提供任何保证。IP 不保证
数据包将采用给定的路径
数据包将在给定的时间内到达
数据包将到达
那么这条路径跟随发生在哪里?
操作系统维护一个表套接字- 一个套接字是一个 IP 地址 + 一个端口。
对于每个套接字,都会维护各种状态,例如序列号、窗口大小和尚未确认的段(标有序列号)。
在套接字和 TCP 段序列号之间,它知道如何在将流片段传递给应用程序之前以正确的顺序重新组装事物。
段已通过 ACK 确认发送。
如果由于 IP 未传送数据包而导致 TCP 未收到 ACK,则它会重新发送该段(相同的序列号)并缩短窗口大小。窗口大小是指在收到 ACK 之前它将发送多少个段。
如果另一端在一定时间内没有响应(超时),TCP 将关闭它并告知应用程序另一端已超时。
直到第 3 层它都是无连接的,并且从第 3 层到第 4 层它将遵循特定的路径?
连接是第 4 层概念,因此,第 3 层及以下的所有内容都是“无连接的”。
TCP 只关心段号,而不关心路径。只要是相同的 IP + 端口,路径可以来自任何地方。这样,TCP 就可以完成其工作,而不必担心任何高于或低于的事项。
答案3
TCP 连接仅确保排序和交付,但它们根本不建立固定路径。您可能会将其与其他基于电路的技术(如 ATM 或 X.25)混淆(其中路径是在呼叫建立期间配置并且所有数据包都遵循它)。
每个 TCP 段都作为 IP 数据包发送,IP 会针对每个数据包分别做出路由决策,如此反复。当然,端点地址保持不变,但路径甚至可能在连接过程中发生变化,而 TCP 甚至不会注意到正在发生的变化。