TCP必须使用IP吗?


108

TCP是TCP / IP的缩写,这是真的吗?

是否有可能为TCP上除了其他协议的基础上建立的IP


31
为什么不?我可能曾经看到过莫尔斯电码的TCP。
soandos

2
一个示例是ICMP隧道,该隧道使用基于ICMP的TCP。但是,在非IP之上构建TCP并不常见。通常是网络访问层,它使用更广泛的协议和通道(例如bongo鼓)。
史密斯先生

1
@TomWijsman尝试失败了吗?据我了解,他们与解决问题和互操作性有关的任何麻烦,而不是使TCP正常工作的麻烦。
tylerl

2
@harper使用常规的摩尔斯电码,对于熟练的操作员来说确实不是闻所未闻的200个字符/分钟,并且大多数有足够实践经验的人绝对可以达到100 c / min(20 wpm)。当然,以这些速度,您不会真正听到每个字符,而是听到许多单词的声音。(据说,熟练的操作员的特点是他们记得对话,但不记住所用的单词。)但是我可以想象,如果使用100 c / min的字符,总速度为50-60 c / min,则可以做到可以忽略的字符错误率。
CVn 2012年

2
@harper这取决于您要求的准确性级别。对于大部分闲聊(在业余无线电广播中为咀嚼),在一个地方到另一个地方弄错单词并不是真正的问题,因为上下文比使用的确切单词更重要。对于电报业务,紧急情况/遇险通信等,尤其是在对文本进行加密的情况下,必须正确地(且清晰地)复制每个单词,甚至每个字符(不仅是收到的,而且还应该是正确的)。请注意,我说200 c / min是“闻所未闻”的。不常见。但是100 c / min在业余无线电频段上相当普遍。
CVn 2012年

Answers:


16

TCP和IP(v4和v6)绝对是可分离的,并且一个并不暗示另一个,正如通过IPX的TCP(RFC 1791)所证明的那样。

但是,TCP不能仅通过任何网络协议来构建。两个原因:

  1. TCP头中没有段大小字段(只有“数据偏移”,它给出了TCP头的大小)。因此,TCP将仅与包含足够信息以计算TCP段大小(即,较低层协议的有效负载大小)的较低层协议一起工作。对于IPv4(RFC 791),IPv6(RFC 2460)和IPX(RFC 1791),该假设是正确的。但是通常情况并非如此,例如,禽类运输工具(RFC 1149)并不适用(请参阅注释a)。
  2. TCP仅设计为在无连接网络协议上工作。TCP不能有效地在某些面向连接的网络协议(例如ATM恒定比特率服务)上工作,因为这两个争用速率控制功能会导致非常差的或不可预测的性能。另一个退化的示例是TCP隧道上的TCP。

TCP规范RFC 793并不是决定此问题的好方法,因为它承认它与较低层的接口在很大程度上未指定。

注意a)为了使TCP重组打印在小纸片上的数据报(无论是鸽子携带的还是更智能的corvid网络),有效载荷的大小必须写在标准位置。替代地,适配层可以启发式地确定段大小。在实施禽鸟规范(RFC 1149)的主机堆栈中使用的光学扫描仪包括这样的启发式适配层,但仍未记录。


2
技术上准确(据我所知),透彻,有参考文献支持,清晰,轻松。我会给我一些投票。
斯科特

2
禽类的例子很清醒又搞笑!
约翰

88

我还没有阅读完整的RFC,但是1.4节中的语言似乎暗示可以使用任何“较低级别”的协议。

除了假定存在一种机制,TCP和较低层协议之间的接口可以使两个层之间彼此异步传递信息外,该接口基本上未指定。通常,人们期望较低级别的协议来指定此接口。TCP被设计为在非常通用的互连网络环境中工作。在本文档中始终采用的较低层协议是Internet协议。


101
IP本身已经在许多网络技术上实现,甚至是信鸽。这些鸟实际上是用来演示ICMP Ping数据包的传递的,丢包率为55%(显然是由于操作员的错误造成的),延迟时间为一到两个小时。这将有可能在此之上运行TCP,但连接设置将需要大量的鸟类....
RBerteig

21
关于RBerteig的评论;考虑携带迷你SDHC卡的信鸽。延迟和吞吐量之间存在差异。:-)
CVn 2012年

16
@MichaelKjörling这不能与RFC 1149互操作:“将IP数据报打印在很小的纸卷上”。
kmkaplan 2012年

4
@kmkaplan除非数据报印在SDHC卡的标签上。就像几部电影中的陈词滥调一样-“哦,它实际上在硬盘上!”
乔恩·汉纳

40
防火墙上必须有一些严重的大漏洞,以允许禽类携带者通过。
squillman 2012年

76

互联网协议套件

TCP不是TCP / IP的缩写。

TCP / IP通常用作“ Internet协议套件 ” 的简写方式,并且通常包括其他标准协议。当人们说TCP / IP时,它们通常包括基于IP的UDP(使用UDP代替TCP)和许多其他协议,例如ARP,ICMP,DNS,SNMP和其他应用程序层协议。

应用层

应用程序使用诸如SMTP(用于电子邮件)之类的应用程序层协议。它们位于两个传输层协议之一-TCP和UDP上。少数应用程序层协议将使用UDP和TCP之一或全部使用,但大多数仅与一个传输层协议一起使用。

传输层

TCP和UDP是Internet协议套件中使用的两个传输层协议。如果还有其他我不认识的人,那么其他任何人都将只占很少的专家使用。 还定义了其他传输层协议-它们的使用可能只占全球IP流量的一小部分

网络层

尽管从理论上说有可能在IP以外的其他地方使用TCP,但实际上TCP总是在IP(Internet协议)上使用。IP在网络之间移动数据包(将IP视为将多个LAN连接在一起)

网络接口层

以太网只是承载TCP / IP的最流行的低级链路层协议系列,但是TCP / IP也广泛用于ATM和其他协议。

来自bootdiscs.net的IP层图


附录1-有关传输层协议的说明

在使用Internet协议套件的网络上,重要使用的唯一传输层协议是TCP和UDP。

†仅出于娱乐目的,我测量了(非常)小型LAN上的流量,其中包括NetBIOS(通过TCP),SSH,Rsync,电子邮件,软件更新,DNS,常规Windows-box chatter和其他几种流量。Wirshark协议层次结构统计

还请注意Google 常见问题中关于QUIC协议的这一声明

为什么不建立一个全新的协议,而不是使用UDP?如今,Internet上的中间盒通常会阻止流量,除非它是TCP或UDP流量

(我的重点)


1
一直带我回到1996年和OSI模型en.wikipedia.org/wiki/OSI_model
Rudi


@StuartBlackler:有趣的一点,谢谢。是否有除TCP和UDP之外的任何类别(我称之为“消失的小型专家用途”类别)和通过IP使用的类别?如果我测量了Internet交换点处的IP流量,那么除了TCP或UDP以外,传输层协议中还有什么比例是什么?
RedGrittyBrick

以DCCP为例,它仍然是一个新协议,但是我想在接下来的几年中,您会看到更多的应用程序使用该协议。我不认为它是主流的原因是因为我不相信Windows支持它。将其视为具有拥塞控制的UDP。对于许多应用程序(例如Skype和游戏)可能非常方便:)。要回答您的问题,目前可能数量很少
Stuart Blackler 2012年

@Rudi err,您应该意识到这不是OSI参考模型,如果您确实意识到了这一点,请不要误导人们以为它是。这是TCP / IP模型/体系结构...有时,使用OSI参考模型OSI的术语来描述TCP / IP体系结构。但是显示的4层以及这些名称,很大程度上是TCP / IP而不是OSI。red的帖子没有问题,但您的评论充其量只能是误导。
barlop 2015年

34

TCP / IP之所以如此通用的缩写(相对于UDP / IP或SCTP / IP),是因为这两个协议是一起设计的,在Vint Cerf和Bob Kahn的原始论文中,这两个概念是合并成一个协议。此后不久,它们被分为IP提供路由选择和TCP提供流控制,多路复用,错误检测等。直到六年后,UDP才被引入以提供“轻量”多路复用层,而没有其余的TCP涉及的开销。

TCP和IP仍然是两个独立的事物,完全有意地独立。TCP不需要IP的事实随即可见,TCP可以在未经修改的IPv4和IPv6上运行,这是两个完全不同的协议。

只需做一些工作,就可以创建一个竞争性的IP协议,该协议可以达到相同的目的,但是它可能必须包含大多数(如果不是全部)相同的功能,并且最终看起来很像IP。您可能会争辩说,IP扩展(例如IPSec)实际上是备用的第3层协议,因此您可以使用。


1
正确-TCP的第一个版本包含IP功能。人们说“ TCP / IP”的另一个原因可能是,在大多数情况下,当您通过IP发送数据时,您要保证所有数据都以正确的顺序交付,因此您使用TCP。例如,所有HTTP和FTP流量都使用TCP。一类例外是实时数据。例如,Skype使用UDP,因为您希望在会话中获取最新的数据包,而不是停止所有操作以获取丢失的数据包。
内森·朗

21

您可以用其他东西代替IP。实际上,这正是使用基于IPv6的TCP时所要做的。TCP仍然是TCP,但是IP是v6而不是v4。

AFAIK,没有人创建任何其他第3层协议以在它们之上使用TCP,但是没有理由您不能这样做。


9

TCP和IP就像面包上的黄油。

您可以配对其他任何与任一协议的工作原理,但是这两个是如此互补的,这只是一个美味可靠的方式传输数据,并与互联网数据填满肚子。它给管子上油,以允许其他干食品和数据握手一样支持这种配对。但这绝不是排他的。

问: 但是,TCP是否不能建立在IP之外的其他协议之上?

:可以。我喜欢没有IP的TCP的摩尔斯电码和Pigeon示例。


5

我一直听说TCP是TCP / IP的缩写

实际上,它代表基于Internet协议的传输控制协议

他们是同一回事。

那是不对的。

首先,以太网是控制实际硬件各部分功能的底层硬件系统。

接下来,将IP视为电话系统或交通标志。它提供了将系统两点连接在一起的基本控制。

另一方面,TCP更像是一个消息传递系统或流量控制人员,它将消息/汽车定向到正确的位置。

总而言之,TCP / IP提供了一个可靠的与任何两个连接的设备之间来回传输数据的系统。

在Internet上,当您要发送或接收数据时,系统的IP部分是控制通过电线(或无线波)进行实际硬件连接的部分。系统的TCP部分是负责获取数据并将其分解,发送,重组接收到的数据,检查数据并在必要时重新发送的软件。

无数类比的解释和可用的技术细节,尤其是视频形式。DifferenceBetween.net对此主题特别擅长。

但是,TCP是否不能建立在IP以外的其他协议之上?

是的,您确实可以为使用IP的TCP创建备用系统。看一下Internet Protocol Suite,了解一些详细信息。


13
说IP提供了将两个点“连接”在一起的说法有点误导。IP提供了一种将离散的单个数据包从一台机器发送到另一台机器的方法。每个数据包都独立于其他所有数据包。TCP提供了连续连接的错觉,它实际上是通过IP发送的一系列数据包。
Wyzard

4
IP也与硬件或物理信令无关。这是由较低级别的技术(例如以太网)处理的。
Wyzard

9
这个答案有很多错误,并且完全遗漏了这个问题。首先,以太网只是一种用于承载IP的链路层协议。还有很多其他的东西,而IP并不了解或关心它们中的任何一个。IP与硬件无关。它是网络之间的路由层,位于用于连接网络的硬件之上。问题的关键在于,是否可以在IP以外的其他东西上使用TCP,而不是是否可以在使用IP的TCP之外使用其他东西(请参阅UDP的示例)。
psusi

3
@synetech,问题不是 “可以在IP上使用其他东西”。那是“可以在其他地方使用TCP”,即没有 IP。
Wyzard

2
> the fact that !TCP can go over IP does not necessarily mean TCP can go over !IP Huh?psusi试图通过使用“!”来变得聪明。作为“非运算符”。他的评论应理解为:“非TCP的东西可以通过IP传输的事实并不一定意味着TCP可以通过非IP的东西传输”。它是参考您的答案的最后一句做出的,该句表明存在“ TCP的备用系统”。但是,表明存在TCP替代方案并不一定意味着也不暗示IP替代方案存在。
Lie Ryan

5

TCP是第4层协议。它以有序流的形式保证从计算机上的一个进程到同一台计算机上的另一个进程的数据传输。

IP是第3层协议。它提供从一个主机到另一主机的传输。

只要存在可以在主机之间进行数据传输的协议,TCP就会起作用。

因此,TCP可以通过任何协议来实现,但是,我们仅制造了IP。IP很简单并且可以工作。

无需其他第3层协议。


1
IPv6呢?
curiousguy 2012年

1
IPv6呢?这只是IP。发送和接收数据包的接口保持不变。因此,TCP可以使用相同的功能。操作系统只能替换IPv4和IPv6中的功能指针,并且仍然可以使用。我不确定您在这里说什么?
SurenNihalani

3
IPv6和IPv4 相似,上层具有相似的接口,但是肯定不是相同的协议,并且在功能上也不严格相同。
curiousguy 2012年

您可能还假装UDP与IP是相同的协议,因为它们提供了与上层极为相似的接口:设置本地和远程端点地址,发送和接收数据包...
curiousguy 2012年

3

在设计网络时,必须为每个“层”(您可以想象为不同的抽象级别)选择一组协议(基本上是机器之间的通信规则集),网络设计师喜欢创建和组合协议时请牢记)。

更简单的版本:协议就像我们在其中放入消息的盒子。这些盒子的大小不同,您可以将消息放入最小的盒子中,然后再将最小的盒子放到更大的盒子中,依此类推。选择一组协议就是针对每种“信息”。

TCP和IP是用于两个独立层的协议,它们是一起创建的并且可以一起使用。但可以很好地与其他协议一起使用。这种情况经常发生:您可以将IP与非TCP协议一起使用,也可以将TCP与非IP协议一起使用

TCP / IP之所以如此通用的缩写,是因为这两个协议共同构成了Internet的基础,并且是Internet成功的关键

(TCP和IP确实具有专门为它们一起工作而设计的一些功能,这是纯粹主义者经常抱怨的事情,但是它们并不能真正阻止您将它们与其他协议接口)



2

但是,TCP是否不能建立在IP以外的其他协议之上?

除了经典的TCP / IPv4和TCP / IPv6,还设计了一些实验协议,例如:

UDP上几乎TCP(atou)

作为Net100和Probe努力改善高速,高延迟网络上的批量传输的一部分,我们已经开发了可在UDP上运行的可调试TCP版本。UDP类似TCP的传输充当测试线束,用于在类似于TReno的应用程序级别上尝试类似TCP的控件。

iproxy:运行在UDP TCP服务,这是更有趣:

iproxy包括一个客户端代理和一个服务器端代理,它允许任意TCP / IP服务在广播,多播或单播UDP上运行。最初,它被认为是一种使用基于Web的界面配置在LAN上未获得IP地址的服务器的方法。

因此,您将看到:单播UDP上的TCP,甚至广播或多播UDP上的TCP

AFAIK仅TCP / IPv4和TCP / IPv6享有大型部署。


是的,但这是基于IP的UDP。我知道您在那儿做了什么...
Tamara Wijsman 2012年

@TomWijsman是的,它是TCP / UDP / IP。
curiousguy 2012年


2

在支持基本数据报传输的各种协议之上的TCP实现已经存在。实际上,甚至不需要指定路由信息(TCP甚至不需要IP,仅具有隐式接收者的serila链接就足够了)。

因此,您已经在UDP之上实现了TCP(优势:您可以在“服务器”端使用单个端口,也可以将其嵌入现有的连接上,以传输各种多路复用通道)。仅IP级别提供路由,但TCP不需要路由。重要的是,MTU的概念是由较低层提供的。

这允许协议绕过NAT遍历的限制,而无需为特定主机注册UPnP转换端口。它允许对MTU和MSS进行独立调整,并针对每个客户端而不是每个中间共享路由器进行了优化。其他路由协议也是可能的(包括通过多播和广播网络的传递)。您可以选择安全机制。

一个使用示例是Gogo6.net(它使用TCP over UDP v4的重新实现在TCP会话上实现其IPv6传输通道(它可在大多数仍具有IPv4地址且并不总是支持UPnP方法的家庭接入路由器上工作) ;即使用户未运行,也无需用户使用特定于应用程序的恒定端口号对其进行配置)

其他示例是使用本机的“流式”扩展来封装基于HTTP(或HTTPS)1.1版的TCP。大多数允许通过Internet桥接网络的VPN都将执行相同的操作。网桥甚至可以封装多种协议:以太网,PPP,IPv4和IPv6(仅扩展本地LAN或以太网网段),NetBEUI / LanMan,路由器发现(在桥接网络内),包括原始模式(允许DHCPv4或DHCPv6)桥接网络。之所以使用HTTPS,是因为HTTPS上的封装还允许加密以及用于建立和保护网桥的身份验证,但是不需要通过桥接网络对客户端和服务器进行端到端的身份验证/加密,并且因为路由器针对HTTP进行了高度优化和HTTPS。


1

军中有一些使用TCP而不是IP的通信系统示例,因为comm路径是串行类型的连接,不会通过路由器进行路由等。如果在TCP数据包带有IP字段标头之前查看它,如果您的“路由”协议不同,似乎很可能不使用IP。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.