TCP是TCP / IP的缩写,是真的意思吗?

TCP是否可以建立在IP以外的其他协议之上?

评论

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

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

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

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

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

#1 楼

TCP和IP(v4和v6)绝对是可分离的,并且一个并不暗示另一个,正如通过IPX的TCP(RFC 1791)的例子所证明的那样。任何网络协议。原因有两个:


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

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

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

评论


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

–斯科特
15年10月22日在18:35

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

–约翰
18年11月11日,0:49

#2 楼

我还没有阅读完整的RFC,但1.4节中的语言似乎暗示可以使用任何“较低级”协议。
未指定,除了假定存在一种机制,使两个级别可以彼此异步传递信息。
通常,人们希望较低级别的协议指定此
接口。 TCP被设计为在互连网络非常普通的环境中工作。本文档中假定的较低级别协议是Internet协议。


评论


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

–RBerteig
2012年7月17日在1:36

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

–用户
2012年7月17日下午6:33

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

– kmkaplan
2012年7月17日在9:43

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

–琼·汉娜(Jon Hanna)
2012年7月17日在11:12

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

–squillman
2012年7月17日在15:01



#3 楼

Internet协议套件
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流量的一小部分†
Internet网络层始终通过IP使用-Internet协议。 IP在网络之间移动数据包(将IP视为将多个LAN连接在一起)。 TCP / IP也广泛用于ATM和其他服务器上。 Internet协议套件是TCP和UDP。
†仅出于娱乐目的,我测量了(很小)小型LAN上的流量,其中包括NetBIOS(通过TCP),SSH,Rsync,电子邮件,软件更新,DNS,常规Windows -box聊天和其他几种类型的流量。
请注意Google常见问题解答中有关QUIC协议的声明

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

(我的重点)

评论


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

–鲁迪
2012年7月17日在15:06

有两种以上的传输层协议:en.wikipedia.org/wiki/Transport_layer#Protocols

– Stuart Blackler
2012年7月19日在11:53

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

– RedGrittyBrick
2012年7月19日在15:23



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

– Stuart Blackler
2012年7月20日15:37

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

– barlop
2015年8月3日在1:22



#4 楼

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层协议,因此就可以了。

评论


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

–内森·朗(Nathan Long)
2012年7月21日在15:42



#5 楼

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

#6 楼

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

您可以将任何与该协议兼容的其他任何东西配对,但这两个协议是如此互补,这只是一种传输数据并将互联网数据填充到肚子的可靠方式。它给管子上油,以允许其他干食品和数据握手一样支持这种配对。但这绝不是排他的。

Q但是,除了IP以外,TCP是否不可能建立在另一个协议之上?

A是的。我喜欢没有IP的TCP的摩尔斯电码和Pigeon示例。

#7 楼


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


实际上,它代表基于Internet协议的传输控制协议。它们的含义相同。

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

TCP更像是一个消息传递系统或交通控制员,它将消息/汽车定向到正确的点。 br /> TCP / IP在一起提供了一个可靠的系统,可以在任何两个连接的设备之间可靠地传输数据。系统是控制与电线(或无线波)进行实际硬件连接的部分。系统的TCP部分是负责获取数据并将其分解,发送,重组接收到的数据,检查数据并在必要时重新发送的软件。

有提供了无数的类推和技术细节的说明,尤其是视频形式。


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


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

评论


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

–蜥蜴
2012年7月17日,0:50

IP与硬件或物理信令都不相关。这是由较低级别的技术处理的,例如以太网。

–蜥蜴
2012年7月17日下午0:58

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

–psusi
2012年7月17日在4:28

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

–蜥蜴
2012年7月17日在22:40

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

– Lie Ryan
2012年7月21日在16:32



#8 楼

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

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

只要有一种协议可以进行主机到主机之间的数据传输,TCP就会起作用。仅取得了IP。 IP很简单,可以完成工作。

不需要其他第3层协议。

评论


IPv6呢?

–好奇
2012年7月18日在1:40

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

– SurenNihalani
2012年7月18日在3:59

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

–好奇
2012年7月18日在4:10

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

–好奇
2012年7月18日在4:16

#9 楼

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

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

TCP和IP是用于两个独立层的协议,它们是一起创建的并且可以一起使用;但可以很好地与其他协议一起使用。这种情况经常发生:您可以将IP与非TCP协议一起使用,也可以将TCP与非IP协议一起使用。协议共同构成了Internet的基础,并且是Internet成功的关键。

(TCP和IP确实具有专门设计用于它们一起工作的某些功能,这是纯粹主义者经常抱怨的事情。 ,但它们并不能真正阻止您与其他协议进行交互)

#10 楼

我想,如果要复古,可以通过IPX传输运行TCP。

评论


您可能正在考虑IPX是何时通过TCP / IP隧道传输的。毫不奇怪,这种情况不会持续很长时间。

– andygavin
2012年7月17日在17:25

tools.ietf.org/html/rfc1791

–GDR
2012年7月18日在16:04

#11 楼


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


除了经典的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地址的服务器的方法。


请参阅:TCP在单播UDP上,甚至TCP在广播或多播UDP上!

评论


是的,但这是基于IP的UDP。我知道你在那里做什么...

–塔玛拉·维斯曼(Tamara Wijsman)
2012年7月18日在2:53

@TomWijsman是的,它是TCP / UDP / IP。

–好奇
2012年7月18日,下午3:07

#12 楼

答案是不!例如,有一个旧的RFC描述了IPX上的TCP:http://tools.ietf.org/html/rfc1791 zh.wikipedia.org/wiki/Internetwork_Packet_Exchange

评论


我知道答案很旧,但是如果可能的话,请进一步详细说明您的答案,并避免将链接发布为简单答案/来源。如果链接不见了,您的答案也将如此。

–洛伦佐·冯·马特宏峰
13年2月22日在1:51



#13 楼

在支持基本数据报传输的各种协议之上的TCP实现已经存在。实际上,甚至不需要指定路由信息(TCP甚至不需要IP,只需一个带有隐式接收者的serila链接就足够了。)因此,您已经有了TCP在UDP之上实现的(优点:您可以在“服务器”端使用单个端口,也可以将其嵌入现有的连接上,以传输各种多路复用通道)。仅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。

#14 楼

军中有一些使用TCP而不是IP的通信系统示例,因为comm路径是串行类型的连接,不会通过路由器进行路由等。如果您的“路由”协议不同,似乎很可能不使用IP。