为什么我们说TCP/IP协议套件中的IP协议是无连接的?

17
为什么IP被称为无连接协议?那么,有连接的协议是什么呢?
谢谢。
更新-1-20:21 2010/12/26
我认为,为了更好地回答我的问题,最好解释一下"连接"实际上意味着什么,包括物理上和逻辑上的连接。
更新-2-9:59 AM 2/1/2013
根据下面所有的答案,我得出的感觉是这里提到的“连接”应该被认为是一组动作/安排/纪律。因此,它更多的是一个抽象概念,而不是一个具体的对象。
更新-3-11:35 AM 6/18/2015
以下是更详细的解释:
IP 协议是无连接的,这意味着 IP 网络中的所有数据包都是独立路由的,它们可能不一定经过相同的路线。而在虚电路网络中,它是面向连接的,所有数据包都经过相同的路线。这条单一的路线就是“虚电路”的意思。
由于存在连接,因此所有的数据包将按照发送顺序到达。
没有连接,则不能保证所有的数据包会按照发送顺序到达。
更新-4-9:55 AM 2016/1/20/Wed
“面向连接”的特点之一是包顺序得到保留。TCP使用序列号来实现这一点,但IP没有这样的功能。因此,TCP是面向连接的,而IP是无连接的。

在虚拟电路中,没有真正的数据包排序或传递保证。您仍然需要序列号。 - user207421
7个回答

18
基本思路相当简单:使用IP(仅IP本身,不包括TCP、UDP等)只需发送一个数据包。您只需将一些数据发送到具有目标地址的网络上,然后就可以了。但是光凭IP本身并不能保证:
  1. 数据包能够被成功发送
  2. 数据包是否被接收
  3. 没有任何方式让接收方知道要期望收到一个数据包
  4. 其他任何有用的信息
它仅规定了一个最小的数据包格式以使您可以从一个点传输数据到另一个点(例如,路由器了解数据包格式,因此可以查看目的地并将数据包发送到其下一跳)。
TCP是面向连接的。建立连接意味着在TCP会话开始时进行"三次握手",因此(特别是)目的地知道已经与源建立了连接。它在内部跟踪该地址,因此可以/将/需要期望来自该地址的更多数据包,并且能够发送回复以确认接收到的每个数据包。源和目的地还合作对所有数据包进行序列号以进行确认方案,因此每个端点都知道它发送的数据包是否已在另一端接收。这并不涉及太多物理内容,但在逻辑上涉及在两端分配一些存储器。这包括用于元数据的存储器(例如,下一个要使用的数据包序列号),以及用于可能的重传负载数据,直到另一端确认接收到该数据包。

谢谢。正如您所说,建立连接涉及分配一些内存和在两端发生的其他一些事情。那么连接就是这样吗?在两端之间还有其他的东西吗?例如,所有中间节点(如路由器)?因为我倾向于认为应该有一些物理上连接两端的东西。所有连接到互联网的计算机都可以被认为是物理上连接的,但当两个主机明确建立连接时,应该不止于此。 - smwikipedia
@smwikipedia:一般来说,路由器配置主要是通过RIP(例如RFC 2453)进行的,而不是基于单个数据包。显而易见的例外是NAT盒子,它会存储你发送数据的位置,以便可以接受从那里返回的回复并忽略其他传入的数据包。这与TCP连接基本上是独立的,所以(例如)对UDP数据包的回复会被正确路由。 - Jerry Coffin

14

TCP/IP表示“TCP over IP”。

TCP
--
IP
TCP提供“面向连接”的逻辑、排序和控制。IP以无连接的方式将数据包从A传输到B,但UDP同样是无连接的协议,与TCP处于相同的层级。其他协议(如ping使用的ICMP)可以在IP上运行,但与TCP无关。
编辑: "面向连接" 意味着建立端到端的连接。例如,你拿起电话,打电话给某人 = 你建立了一条连接。"无连接" 意味着 "发送,看看会发生什么"。例如,通过邮寄信件发送信件。因此,IP以任意顺序、不总是最终成功地将数据包从A传输到B。TCP对它们进行排序、确认、请求重新发送,并提供“连接”。

谢谢。我从未将TCP和IP之间的斜杠解释为“over”。请查看我在帖子中的更新。 - smwikipedia
1
@smwikipedia 然而这就是它的意思。同样地,你可以说UDP/IP、HTTP/TCP、HTTPS/TLS/TCP等。 - user207421

3
无连接意味着没有努力建立专用的端到端连接,而面向连接则意味着在设备通信时,它们执行握手以建立端到端连接。
IP是无连接协议的一个例子,在这种协议中,您通常会将信息单向发送,从源到目的地,而不检查目的地是否仍然存在或准备好接收信息。
无连接协议(如IP和UDP)例如用于视频会议中,当不关心一些数据包是否丢失时,而必须使用面向连接的协议(如TCP)来发送文件,因为要确保所有数据包都能成功发送(实际上我们使用FTP传输文件)。
编辑:在电信和计算机领域,“连接”是完成必要安排的成功,以便两个或多个方(例如人或程序)可以在远距离通信。在此用法中,术语具有强烈的物理(硬件)内涵,虽然通常还涉及逻辑(软件)元素。
物理连接是OSI模型的第1层,是数据传输的介质。即电缆。
逻辑连接是OSI模型的第3层,是网络部分。使用Internet协议(IP),每个主机被分配32位IP地址。例如,192.168.1.1。

你修改后的答案也很好。不幸的是,我只能选择一个作为答案。 - smwikipedia

2
TCP是TCP/IP协议中的连接部分,而IP则是寻址部分。可以类比地理解,IP就像信封上写的地址,而TCP则是邮递系统,使用地址来确保信封从A点到B点的传递。

2
IP确实是寻址的手段,但从技术上讲,并没有什么阻止我们将IP作为传输协议。如果你不需要端口号的额外好处,可以直接使用IP传输数据。 - Eli Iser
谢谢您的回复。因此,IP是TCP无连接的对应物。但是UDP不是TCP的对应物吗? - smwikipedia
1
TCP和UDP会嵌入在IP数据包中。IP本身没有端口号的概念,它仅关注主机级别的传输。 - Marc B
2
我同意IP有寻址的责任。但我不认为TCP是邮政系统。在端到端传输场景中,TCP仅存在于两端,而不是中间节点。中间节点(如路由器)只需要实现协议栈的IP层。IP层不仅负责寻址,还负责传递。 - smwikipedia

1
在我的了解中,每一层都会愚弄它上面的层。TCP从应用层接收HTTP消息并将其分成数据包,我们称之为数据包。IP逐个从TCP获取这些数据包,并将其发送到目标位置;同时,它也会收集传入的数据包并将其传递给TCP。现在,TCP在发送完一个数据包后,等待来自另一端的确认数据包。如果确认数据包到达,它会告诉上面的层,“嘿,我已经建立了连接,现在我们可以通信了!”整个通信过程在TCP层之间进行,双方发送和接收各种类型的数据包(例如数据包、确认数据包、同步数据包等等)。它使用其他技巧(所有数据包的发送)来确保实际的数据包按照它们被分解和组装的顺序传递。在组装完成后,它将它们传输到上面的应用层。那个“傻瓜”认为它已经在建立的连接中收到了HTTP消息,但实际上只是在传输数据包。

1
让我们称TCP所做的为“段”,UDP所做的为“数据报”,IP所做的为“数据包”,以太网所做的为“帧”。用正确的名称称呼事物。 - user207421

1
当两个主机想要使用面向连接的协议进行通信时,其中一个必须首先发起连接,而另一个必须接受它。逻辑上,在一个主机的端口和另一个主机的端口之间建立连接。一个主机中的软件必须执行连接套接字操作,而另一个主机必须执行接受套接字操作。物理上,发起连接的主机发送一个 SYN 数据包,其中包含所有四个连接标识号(源 IP、源端口、目标 IP、目标端口)。另一个主机接收到它并发送 SYN-ACK,发起者发送 ACK,然后连接就建立了。连接建立后,数据可以在两个方向上传输。
另一方面,无连接协议意味着我们不需要建立连接来发送数据。这意味着从一个主机发送到另一个主机的第一个数据包可以包含数据负载。当然,对于像 UDP 这样的上层协议,接收方必须先准备好(例如),它必须执行监听 udp 套接字操作。
  • 无连接的IP成为了上层TCP的基础
  • TCP需要至少2倍的往返时间才能发送一个数据包。即:a->b发送SYN,b->a发送SYN-ACK,a->b发送带有数据的ACK,b->a发送ACK。为了流量控制,在这里应用了Nagle算法。
  • 在UDP中,只需要0.5个往返时间:a->b发送数据。但要准备好一些数据包可能会被默默地丢失,并且没有进行流量控制。数据包可以以大于接收系统能力的速率发送。

-2

我今天刚遇到这个问题。它在我的脑海里反复跳动了一整天,却毫无意义。IP不处理传输,为什么会有人认为IP是无连接或面向连接的呢?从技术上讲,它是无连接的,因为它不提供可靠性和保证交付。但是我的烤面包机也是如此。我的烤面包机也不能保证交付,那为什么不把它称为无连接呢?

最后,我发现这只是某个人在某个地方给IP加上了一个愚蠢的标题,然后它就粘住了,现在每个人都称IP为无连接,并且没有好的理由。

称IP为无连接意味着还有另一个面向连接的第3层协议,但据我所知,实际上并没有,说明IP是无连接的纯粹是愚蠢的。 MAC是无连接的。LLC是无连接的。但这些是无用的、技术上正确的信息。


它并不是无用的。从技术上讲,它是正确的。面向连接的协议可以在ISO和TCP/IP第4层找到。一个毫无意义的帖子。 - user207421
如果你懂印地语:Kehna kya chahte ho? 如果不懂,请谷歌并翻译成英语!! - Praveen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接