30

据我所知,如果必须设计互联网应用程序,我们应该使用面向连接的服务或无连接服务,但不能同时使用两者。

Internet的面向连接的服务是TCP,无连接的服务是UDP,两者都驻留在Internet协议栈的传输层。

Internet 的唯一网络层是 IP,它是一种无连接服务。所以这意味着我们设计的任何应用程序最终都会使用 IP 来传输数据包。

面向连接的服务使用相同的路径来传输所有的数据包,而无连接的服务则不然。

因此我的问题是

如果设计了面向连接的应用程序,它应该使用相同的路径传输数据包。但是IP通过使用不同的路由打破了这个规则。那么从这个意义上说,TCP和IP是如何协同工作的呢?这完全让我感到困惑。

4

5 回答 5

44

我的朋友,您混淆了两个不同层的功能。

TCP是面向连接的,因为在两端之间建立了连接,它们可以协商不同的事情,例如拥塞控制机制等。
传输层协议的一般目的是提供进程到进程的传递,这意味着它对路由一无所知;您的数据包如何到达终端系统超出了他们的范围,他们只关心数据包是如何在两个终端进程之间传输的。

另一方面,IP 是 Internet 的网络层协议,它关注的是终端系统之间的数据传递,但它是无连接的,它不维护任何连接,因此每个数据包都独立于其他数据包进行处理。
离开您的系统后,每个路由器都会选择它认为适合每个数据包的路径,并且该路径可能会根据可用性/拥塞情况而改变。

这如何回答你的问题?
TCP 将确保数据包到达另一个进程,它不会关心它们是如何到达那里的。
另一方面,IP 根本不会关心它们是否到达另一端,它只会根据它认为最适合特定数据包的内容转发每个不同的数据包。

注意:
假设 IP 是面向连接的,这是否意味着数据包将遵循相同的路径?不一定,这取决于这一层的“连接”一词的含义,如果它意味着协商与安全相关的某些选项,例如,您可能仍然让所有数据包通过 Internet 上的不同路由转发。

编辑:
不过,不要让您感到困惑,网络层及以下的大多数面向连接的服务意味着连接在建立时也会建立所有“数据包”必须遵循的虚拟路径,以获取更多信息,请阅读:
虚拟电路帧中继网络

于 2013-03-24T17:40:35.937 回答
7

这个链接很好地回答了你的问题http://www.tcpipguide.com/free/t_ConnectionOrientedandConnectionlessProtocols-3.htm

有些人认为这(TCP)就像在更高网络层的电路交换的“模拟”;这可能是一个有点可疑的类比。尽管可以使用 TCP 连接在设备之间来回发送数据,但所有这些数据确实仍以数据包的形式发送;设备之间没有真正的电路。这意味着 TCP 必须处理分组交换通信的所有潜在缺陷,例如数据丢失或以错误顺序接收数据片段的可能性。

TCP 协议处理 IP 数据包无序到达或丢失的问题,让您感觉它们是通过单个 FIFO 通道到达的。是的,TCP 足够聪明地做到这一点,不需要专用的底层通道。

于 2014-11-13T12:41:45.207 回答
2

TCP协议由发送/接收机器实现,一旦数据包离开发送机器,它们所经过的路由器对TCP一无所知,它们只是使用IP将数据包从源端获取到目的地。然后,目标机器的工作就是使用 TCP 确保所有数据包都到达并且它们以正确的顺序到达。互联网本身对 TCP 一无所知,它只是一个层(通常是软件),用于连接到无连接介质(互联网)。

因此,一旦数据包离开目的地,它可以沿着任何路径(大部分)只要到达目的地,而不管更高级别的协议(例如 TCP 或 UDP)。

我的意思是,它有点复杂,但据我所知,这是一般的想法。

于 2013-03-24T17:23:51.763 回答
1

正确参考我的短点,

1)面向连接的意思是==>保留资源(缓冲区,cpu,带宽等)..但是“在哪里??”。(在哪里保留资源??这是您困惑的原因,所以以下是答案。)。

2)面向传输层的连接意味着==>在两端进程/端口上保留资源。(由于TCP是传输层,那么它的职责是只保留两端进程的资源,而不管中间发生了什么小路。)

3)面向网络层的连接意味着==>在网络层保留资源。(现在,在数据包从源到目的地的整个过程中,网络层也存在于所有中间路由器(但不是传输层)。因此,如果网络层的任何协议都是面向连接的,它的职责是在所有中间路由器上预留资源,即所有数据包都必须遵循相同的中间路径,但 IP 连接较少,因此不会预留中间资源。数据包可能遵循不同的路径等)

#结论: ==> 中间路径由网络层决定,因此如果 IP 则路径可能不同。(IP 可能包含 TCP),但 TCP 负责两个 End 进程的资源预留,与数据包的中间路径无关。

于 2019-10-07T10:51:42.780 回答
0

路由器仅在三层(物理层、数据链路层和网络层)上工作,因此路由器将仅根据信息做出决定。网络层(IP 协议),因此在路由器上没有关于其 TCP 或 UDP 的信息

于 2016-12-02T10:59:39.907 回答