http://www.chinaunix.net 作者:america  发表于:2008-04-20 18:39:02
发表评论】【查看原文】【网络技术讨论区】【关闭

比如传输层协议UDP,书上说不必事先建立连接,是无连接的不可靠的协议,只是尽最大努力交付,但UDP仅是传输层协议,下面还有数据链路层协议啊,该层中有超时重传,差错重传的ARQ协议,这样,原始的数据帧就能可靠通信了,上层数据也是通过下层数据表现的,不同样也能保证可靠通信吗?为什么说UDP是不可靠的?

再有如果有数据链路层的差错重传和超时重传,还要TCP的的重传机制干嘛?

数据链路层和传输层的TCP都有滑动窗口,这不重复了吗?为什么

其它层的首部我看都有长度字段,但TCP的首部中没有长度字段,那怎么知道该报文到哪里结束?



 america 回复于:2004-11-23 22:26:34

??


 笨,拉灯 回复于:2004-11-24 14:53:13

点到点和端到端的区别。


 america 回复于:2004-11-24 19:15:13

能否详述


 ouatitj 回复于:2004-11-24 22:23:02

没有确认信息的回复

目的地收到或没有收到都不会在高层有个收到或没有收到的信息

回复给你 就跟你发EMAIL一个道理 自己没有个底 所以UDP是不可靠的


 america 回复于:2004-11-25 13:40:29

我的意思是上层即使使用UDP,由于下边数据链路层有连续ARQ协议,可以差错重传、丢失重传、滑动窗口流量控制,那不也能保证可靠通信吗?我的意思是下层就解决了错误和差失等各种问题,上层使用什么协议不都能可靠传输吗?


 redwolf 回复于:2004-11-25 15:13:05

层次概念要清楚,链路层是二层的东西,可以保证二层传送,但是真正到没有到上层,他不清楚,只能靠上层协议。而上层协议存在可靠和不可靠的问题,TCP差错重传机制是协议本身支持,而UDP本身没有。。


 america 回复于:2004-11-25 17:14:11

不好意思,我还是有些不明白,二层四层我还是能分清楚的,我在想二层的ARQ尽管不知道上层是什么协议什么数据,但它以帧为单位进行差错检查,超时重传,所有的数据包括各层的首部不都最终以帧的形式在数据链路层传输吗?既然这层有相当的可靠保障,不也相当于上层数据实现了可靠传输吗?

就象火车运一袋沙子,传递时底层工人将每一粒沙子的丢失和差错我都检查了, 重传,那高级人员最后收到的整袋沙子不都能可靠传输过去吗?

见笑,遇到我这种咋说都不明白的人您就得多费心了,呵呵


 coolgg 回复于:2004-11-25 22:50:14

数据链路层虽然可以解决错帧问题,但是不能解决网络拥塞时转发设备主动进行丢包。最简单的情况是路由器或者交换机的端口buffer溢出了,那么这个丢失的包就被丢弃了,根本不可能被数据链路层找回来,只能依靠上层来解决。


 america 回复于:2004-11-26 08:15:25

我记得ARQ是在数据帧发送出去时要设置超时计时器的,一旦到达这个规定的值还没有收到该帧的确认帧(ACK),就要重传,你刚才说的这种溢出丢失的包不也能重新正确传输吗?


 coolgg 回复于:2004-11-26 10:53:35

这个帧被路由器丢掉的时候根本没有数据链路层处理,数据链路层没有任何错误,何来确认帧一说。
你的错误在于,没有理解一个ip包经过的数据链路层实际上是分成很多段的,数据链路层的纠错只能逐端纠错,而在中间点(路由器、三层交换机)上丢弃的包是不能被数据链路层发现的。
想想看传输层做的工作,再想想路由器做的工作。


 america 回复于:2004-11-26 22:52:56

你还真别说,这回我似乎有所理解了,十分感谢你的描述

因拥塞而丢弃的情况是经常发生的还是很少发生的?
如果是很少发生的,那么专门为这种情况设计复杂的TCP值得吗?


 coolgg 回复于:2004-11-27 11:11:21

因拥塞而丢弃的情况是经常发生的还是很少发生的?
这要看是在什么网络上,在企业网里面很少发生,但是在internet上是每时每刻在大量的路由器上发生丢包,特别是各个网络之间,比如中国电信的国际出口,或者是教育网的出口,可能80%的时间都存在大量的丢包.
TCP/IP就是随着互联网发展起来的,当然要适应互联网的实际情况.
我记得文档里说最早的互联网骨干在北美是通过AT&T的专线(<64K)建立的,你说丢包严重不严重.


 iamxcq 回复于:2004-11-27 15:21:23

引用:原帖由 "america"]不好意思,我还是有些不明白,二层四层我还是能分清楚的,我在想二层的ARQ尽管不知道上层是什么协议什么数据,但它以帧为单位进行差错检查,超时重传,所有的数据包括各层的首部不都最终以帧的形式在数据链路层传输?.........
 发表:



这个例子好,不过有没有想过一包沙子可能在搬运的时候就丢失了呢?


 america 回复于:2004-11-27 21:27:04

OK,Thanks for your help!


 unixyeah 回复于:2004-12-06 15:32:17

传输层是很复杂的 协议有很很多种
比如帧中继就省掉了一些协议 
把差错控制交给上层
在通信质量高的情况下 有些可以就省掉了
我希望有同学继续讨论


 unixyeah 回复于:2004-12-06 15:45:43

引用:原帖由 "coolgg" 发表:
这个帧被路由器丢掉的时候根本没有数据链路层处理,数据链路层没有任何错误,何来确认帧一说。
你的错误在于,没有理解一个ip包经过的数据链路层实际上是分成很多段的,数据链路层的纠错只能逐端纠错,而在中间点(..........


这对ip网是这样 对别的我还是不明白

我觉得这里面还有一个包递交的问题
就是2层向3层递交包 并没有保证一定会正确处理
虽然出错可能不大


 xininq 回复于:2004-12-07 11:26:29

不可靠还有另外一个意思:
TCP有三次握手的安全机制
UDP不能保证传输的不被篡改等等,如IP欺骗。


 ouatitj 回复于:2004-12-07 12:31:40

呵呵 跟着又学到了很多东西

coolgg 说的是在 包到三层的时候已经被丢弃 根本没有交给二层处理的意

思吧

偶是这样理解的 不知道对不对


 接吻猫 回复于:2004-12-07 14:15:41

d


 crystalos 回复于:2004-12-08 23:25:30

为什么说udp不可靠?
udp 协议允许应用程序对ip层的服务直接进行访问,并且其使用的通信服务(多点传送,广播传输)也不是被tcp所使用的。看下图所示:







 terminator007 回复于:2004-12-09 21:03:28

tcp 在传数据时有三次握手,而udp就没有了


 Cocal 回复于:2004-12-09 23:03:55

俺觉得应该是这样的:ARQ是链路层协议,但不是链路层必备协议,链路层有n种实现,至少802.3以太网缺省没有启动(或者不支持)ARQ,在Inet这样的复杂链路环境,只要有一段链路不支持ARQ,就会导致端到端的ARQ失效。

路由器不加回应地丢弃数据包,正应该说明这个链路不支持ARQ,如果是一条支持ARQ的链路,这种行为应该产生ACK超时错误,而导致数据包源节点的重发纠错,对不对? 理论上讲,在一个完全支持ARQ的链路上(完全支持指的是每一段链路都支持ARQ),UDP和TCP的确都是可靠的。

我们能够获得的学习资料中,理论和现实存在鸿沟,以致于很多基本概念缺乏很明确的解释,类似HUB属于哪一层,交换机应该算什么,三层交换和路由器怎么区分等等,即使有实际使用经验,也不容易和理论很准确的对应起来。理论需要进行分层,目的是便于理解网络的原理,而实际应用中,则不回理会这么多,比如OSI七层模型,现实中真正很规范实现的系统恐怕没有吧?

现实中能看到的设备,除了理论之外,还有很多要考虑,比如成本什么的。例如(随便说说,没有根据): ARQ是好不错,在小规模网络中应用没有问题,但对于流量十分大的主干设备,将极大的增加它们的负担,比如每个ARQ连接的滑动窗口缓冲池空间(如果一个连接有很多段不同的链路,在每个路由器上消耗的缓冲区可不是一个小数子哦),链路层设备运算能力的需求,甚至当链路故障时的ARQ纠错风暴等等问题,需要考虑的很多很多。一个普遍的认为是,如果本层解决不了的问题,推到上一层负担,而现实状况就是链路层的纠错无法合理实现,导致传输层出现了UDP和TCP的区别,可靠传输谁不知道好啊,不是有人故意搞个UDP出来恶心人,而之现实条件下的不得已而为止而已。

关于问题向上层推的问题,可能是因为越往上层的设备,它们的运算能力越强,单位成本越低,现实是这样,原因大概书本上是不会说的了,也许大家可以问一下,为什么奔四出来不先用在网络设备上,PC机们都用486? 这个问题估计又有的讨论了,呵呵。


 longdas 回复于:2004-12-10 14:31:22

我的理解,请大家指正:

所谓的二层三层四层只是一个模型, 是便于人们分析问题时使用的.
但实际的包传输过程中并不细分这些东西.收包就是一下了收过来的. 并不存在三层向四层递交的过程.

当一个机器收到UDP时,系统假如存在此UDP服务也就收了去,并不像TCP一个回传源地址数据包.  而如果系统没有该UDP服务,也会丢弃它.

既然系统可以收到该UDP包,同时说明该UDP包的三层功能已经完成.

通过上面分析说明:
IP的三层机制的功能就是保证包送到主机
四层则是寻找相应的服务了.


 hileon 回复于:2004-12-11 02:18:38

引用:原帖由 "longdas" 发表:
我的理解,请大家指正:

所谓的二层三层四层只是一个模型, 是便于人们分析问题时使用的.
但实际的包传输过程中并不细分这些东西.收包就是一下了收过来的. 并不存在三层向四层递交的过程.

当一个机器收到UDP时,?.........


错。分层不仅仅是概念,而且是实际存在的。你如果研究过通信协议,参加过通信软件设计就会很清楚了。


 crackpot 回复于:2004-12-16 01:13:49

longdas理解的不对,分析通讯和网络的问题,必须分层来找。各层之间是一个服务的调用关系,下层为上层提供服务。
不过有些也不是严格按照分层实现的,像x.25和ATM。不过也能对应着学习和理解。真正的OSI网络的七层标准实现比TCP/IP要复杂多了,还有表示层和会话层,有各自的协议,光表示层的ASN.1就学了我半年。


 longdas 回复于:2004-12-16 13:44:39

引用:原帖由 "hileon" 发表:

错。分层不仅仅是概念,而且是实际存在的。你如果研究过通信协议,参加过通信软件设计就会很清楚了。



以后请多多指教哈.
我本来的理解是因为TCP/IP 只有四层啦.
OSI上三层并为一层.
后两层并为一层.

虽然我在ethreal的时候分析包发现在ethreal中把几层分的很明确啦.


 prowoo 回复于:2004-12-17 12:18:50

??????????


 JohnBull 回复于:2004-12-18 12:32:02

引用:原帖由 "Cocal" 发表:
俺觉得应该是这样的:ARQ是链路层协议,但不是链路层必备协议,链路层有n种实现,至少802.3以太网缺省没有启动(或者不支持)ARQ,在Inet这样的复杂链路环境,只要有一段链路不支持ARQ,就会导致端到端的ARQ失效。

..........



就现代网络而言,丢包几乎总是因为拥塞造成的,而不是物理层的差错.


 bluebell 回复于:2004-12-19 11:20:35

引用:原帖由 "america"]比如传输层协议UDP,书上说不必事先建立连接,是无连接的不可靠的协议,只是尽最大努力交付,但UDP仅是传输层协议,下面还有数据链路层协议啊,该层中有超时重传,差错重传的ARQ协议,这样,原始的数据帧就能可靠通?..........
 发表:



老大,你这么理解,我觉得是有问题的。
这几天我在看<<Computer Networks A Systems Approach>;>;,你看看这本书吧。

大致讲一下,我觉得你是没有理解layer的概念。因为要在一个层实现服务,既不科学,也不实际,所以才出现抽象,才出现分层,分层的东西,就要在同一个层上讲。你讲到的重传,那不是translate layer的总是,那是下面一层的问题,所以你才会混在一起。

那是下层向上层提供的差错控制等东西,但是UDP协议本身来讲是没有链接的传输。

有时间看看<<Computer Networks A Systems Approach>;>;,之后会豁然的:)


 bluebell 回复于:2004-12-19 11:23:00

引用:原帖由 "america"]我的意思是上层即使使用UDP,由于下边数据链路层有连续ARQ协议,可以差错重传、丢失重传、滑动窗口流量控制,那不也能保证可靠通信吗?我的意思是下层就解决了错误和差失等各种问题,上层使用什么协议不都能可靠传输..........
 发表:



你这儿说的还是不对,差错控制只是说要传,并不代表就能完全没有问题:)

下层只是尽量好的给上层提供服务,但是并不是说提供的服务没有一点儿总是,所以在上层协议中还是要补充下层没有提供好的东西。我刚说的那本书,就是一种用系统的方法看网络,你如果站在系统的角度,这个问题就太好理解了。

有时间快看那本书吧,不要只看协议。协议只是网络学习中一部分知识,甚至说不是最重要的东西。


 bluebell 回复于:2004-12-19 11:25:17

引用:原帖由 "coolgg"]数据链路层虽然可以解决错帧问题,但是不能解决网络拥塞时转发设备主动进行丢包。最简单的情况是路由器或者交换机的端口buffer溢出了,那么这个丢失的包就被丢弃了,根本不可能被数据链路层找回来,只能依靠上层来解..........
 发表:



对,下层是不可能完成上层的工作的。

分层还是抽象。

像Internet的问题,本身分的不太明确,所以可能会出现一些理解上的问题。所以只在本层理解或是简单的分层理解,容易弄糊涂。


 bluebell 回复于:2004-12-19 11:28:05

引用:原帖由 "Cocal" 发表:
俺觉得应该是这样的:ARQ是链路层协议,但不是链路层必备协议,链路层有n种实现,至少802.3以太网缺省没有启动(或者不支持)ARQ,在Inet这样的复杂链路环境,只要有一段链路不支持ARQ,就会导致端到端的ARQ失效。

..........



你讲的真有意思,但是事实上现在的网络设计者,考虑的东西和你考虑的不一样。


 bluebell 回复于:2004-12-19 11:29:54

引用:原帖由 "longdas" 发表:
我的理解,请大家指正:

所谓的二层三层四层只是一个模型, 是便于人们分析问题时使用的.
但实际的包传输过程中并不细分这些东西.收包就是一下了收过来的. 并不存在三层向四层递交的过程.

当一个机器收到UDP时,?..........



四层就寻找相应的服务?
不会吧,还得向上层交呢,呵呵:)
应该说四层是向上层或服务交。


 cherywangyi 回复于:2004-12-20 20:21:56

其实大家讨论来讨论去,我觉得还应该补充一个问题!就是大家还要考虑3层的问题即IP协议层(internet protocol 互联网络层).TCP/IP不光是解决相同网络(2层以内)的互联还要解决异构网络的互联.比如一个以太网络的数据帧能传输的数据包的大小能和X.25或者其他的传输网络的数据帧一样大吗?
这样,出在第3.4层的网络协议必将有个进行拆包组包的过程...或者一些对应用流量控制的机制.如果没有机制保障这种传输的可靠性,那数据链路层就是一直传下去对应用来说也是垃圾数据..因为在传输的过程中,特别到了不同网络接口转换处,协议转换时不能保障IP包在拆包组包时的准确不丢失(为什么路由器数据传输率一般是安装xx包/s算的而第二层设备可以使用xxx/bps)如果路由器
.打个比方就像"america    圣骑士"比喻那样,比方运输沙子一样.可以这样比喻搬运工只是解决了他的本质任务在他的搬运范围不丢一粒沙子.但是我没办法控制他搬运到某个中转站不丢沙子因为在中转站不是搬运工能控制的范围(及点到点的传输).而中转站靠什么来控制他的时间和效率以及不丢失沙子呢?那就要对中转站施加控制机制保障他在重新包装后不丢沙子以及按照我的要求时间到达不行重新要求搬运工重搬(传输层协议).UDP就是中转站因为忙或者其他原因可以随便丢失某包沙子,然而运输工是没办法丢失一粒沙子的了...
为了解释清楚还有一个实际的例子就是比如一个用户的一个数据大小是1MB在传输过程中(从中国某公司到英国某公司)如果使用TCP协议他会把1MB的数据拆成N份编0-(N-1)的序号根据IP地址(IP协议)在网络中发送可能一部分从北京的出口-to-美国-to--瑞典--to--英国某公司,另外有一部分从广州--to-美国--荷兰--英国.当然这是比方两部分数据的如何走由IP层和支撑其传输的一些路由协议关心.如果数据都顺利到达了英国某公司TCP协议务必将这些顺序有可能在不同类型网络中传输过后以及序号打乱的IP包按0-(N-1)的序列编排,再组织进行TCP层的校验.完成1MB数据的传输.数据链路层只是解决一段一段路程之间的可靠传输他不能保障在北京或这在广州因为路由器忙或者其他原因导致其中的一个或者某个数据包丢失;同时也不能保证所有的数据包到达后的重新编排组合问题;也不能保证如果其中某些数据包丢失以后如何通知发送方重新发送等一系列问题.   UDP协议是这样如果丢失了一个数据包这1MB的数据就作废.也不会通知发生方重新发送这就是有时E-mail不能收到其中可能的原因我想.     
  专业一点的讲就楼上某位高手说的:数据链路层是解决:  点到点的传输问题    传输层是解决:端到端的传输问题   

在下这样理解的请各位网友批评补充.


 Cocal 回复于:2004-12-20 22:58:40

引用:原帖由 "bluebell" 发表:

你讲的真有意思,但是事实上现在的网络设计者,考虑的东西和你考虑的不一样。



嗯,不管答案是什么,有上面这句话就已经够了。
计算机比其他东西简单之处就在于,它是完全由人创造出来的,而我们有幸处在相对非常接近的时空,非常容易理解它们的创始人到底是怎么思考的,甚至假设和他们来一次对话来看看事情到底是怎样的(而不是过了无数百年之后,人们很迷茫:“哦!上帝到底为什么要创造这个世界” 。:P )。 
象个作者一样的思考是学习的一把钥匙,IT领域有其如此。

Good Luck :)


 cherywangyi 回复于:2004-12-22 16:10:43

完全同意楼上的观点.....应该向你学习包括IT领域以外的东西,来充实自己!!

我个格言是说错或不恰当没关系!关键是敢说!


 ginzu 回复于:2004-12-22 16:26:37

呵呵我理解的话,这两个确认管理的长度不同啊。
如果二层是汽车,长度为目的地到车站
三层是火车。你这袋沙子从北京运到上海,
北京以内如果做为两个二层设备间的通讯的话,
你能在二层确认你的沙子到北京火车站是没丢的,但是中间丢了(比如从上海火车站到最终目地的,)的话,你收不到二层的错误信息了,只能靠上层的信息来确认,而udp是没有这个回执的。


 ge126 回复于:2004-12-24 14:35:00

无论是经常发生还是偶尔发生的都是不可靠的,因为他会发生,这点很重要!


 jiadingjun 回复于:2004-12-26 11:16:37

前面有人提到点到点与端到端的区别,想请教一下,怎么理解和区分点和端,多谢!


 linuxren 回复于:2005-01-03 21:45:01

引用:原帖由 "ginzu" 发表:
呵呵我理解的话,这两个确认管理的长度不同啊。
如果二层是汽车,长度为目的地到车站
三层是火车。你这袋沙子从北京运到上海,
北京以内如果做为两个二层设备间的通讯的话,
你能在二层确认你的沙子到北京火车站..........



qinzu的言论我认为有道理,想听大家的驳斥。谢谢^_^


 flowingboy 回复于:2005-01-11 10:52:41

这个问题我还是不太明白!


 mcseccna 回复于:2005-01-14 12:28:12

就象你要发一个货出去,货运部门(二层)负责把货发到目的地,要分成一个一个车皮,走,那么发送一个车皮,到了目的地的车站发个确认回来,说到了,等整个货物到了,那么所有的车皮的货物都得到确认了。
然后货运的部门把货物交给了目的方用户,交接完了,货运部门完成了使命,二层到三层的重组完成了。二层不管了。
但是这时候接到货的用户因为某种原因把货弄丢了,这时候二层(货运部门还负责吗),那怎么保证到这时候货物不丢呢,那只有三层的接货的用户和发货的用户建立联系才可以,让发货的用户重新发个货过来。


 bhpang2 回复于:2005-01-19 14:24:50

物理层技术的发展和应用环境导致了链路层协议的发展.

在链路层简单就是美.因而倾向于不解决数据包的到达顺序问题.


 sptsgjw 回复于:2005-01-19 21:02:04

大致这样,在传输层的报文分成段,1个报文可能有多个段,段在网络层是被分解成包的,包在链路层是被分解成帧的。UDP是传输层协议,是不可靠的,只管发,不管报文是否到达对方,TCP必须验证报文是否到达了对方。数据链路层只保证帧的正确传送。


 touoWang 回复于:2005-01-24 12:00:16

我的理解,
链路层负责点到点的传输,即相邻主机结点的传输。
比如三个主机A, B, C 。
  A------------B-------------------C
主机A要发数据给C,它的IP层将IP包交给链路层,A的链路层只能将数据传到主机B,因为主机A和C之间没有直接的通道。然后B的IP层发现包的目的IP地址不是自己,而是C,就把包交给链路层,由链路层交给C。
也就是说链路层只能将数据由A传到B(或B倒A),或由B传倒C(C->;B)。即点到点。
而IP 及其以上的层是看不到主机B的,在A的IP层看来,它可以将数据直接传到C。即跨越相邻结点的,也就是端到端的。


 mqk 回复于:2005-01-24 23:47:32

引用:原帖由 "cherywangyi"]其实大家讨论来讨论去,我觉得还应该补充一个问题!就是大家还要考虑3层的问题即IP协议层(internet protocol 互联网络层).TCP/IP不光是解决相同网络(2层以内)的互联还要解决异构网络的互联.比如一个以太网络的数据帧能..........
 发表:



由于冲击波的泛滥,现在大部分网络都是交换路由网,意思就是在网络应用中,能让他跑IP层,绝对不让他走DLC。并且就是一个大学的校园网,基本上现在都跑动态的路由协议,不跑静态路由。并且ip层最大的特点就是介质无关性,我不考虑底层协议是什么,所以研究udp就研究到ip层就ok了。研究dlc,没有很大的必要。数据链路层具体是什么东西,咱实在是猜不出来。


非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接。[color=red]当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包。[/color]标准的专业术语用“不可靠”来描述UDP。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的。  

你在A省升级B省的交换机,你就知道选择用ftp,而不是用tftp了.


 lifeixiao 回复于:2005-01-26 13:11:43

学习


 changxuelian 回复于:2005-01-31 13:07:41

同意cherywangyi的说法


 YYz 回复于:2005-02-03 17:52:06

说的这么复杂。Cocal说的不错。

1.简单的说就是数据链路层的可靠传输没有被大部分实现支持。TCP/IP面对的是所有链路层,所以需要自己实现可靠性。而且有理论证明在高层实现可靠性比较好。

2.现实和理论要求把所有复杂性都交给端系统,网络设备简单快速可靠就行(事实上已经偏离了)。

3.很多标准在现在看来都是愚蠢至极,***子放屁,但也在进化。

4.数据有可能在网络设备内部损坏,想想REG内存。从in口进时crc ok,在剥离crc后的处理过程data损坏,在out口给损坏的data打上相对正确的crc。

5.还有,暂时没想到。

有node ABC,link AB,link BC之间都是不可靠数据链路层。A->;B ok,B->;C fail。udp:A不知道到底ok没有。TCP:BC link fail,B icmp。C fail,A time out。
有node ABC,link AB,link BC之间都是可靠数据链路层,不可靠网络层,无传输层。A->;B ok,B->;C fail,B知道fail,A怎么知道?如果BA之间还有别的node呢?还是需要网络层ICMP来通告,这样的话链路层的可靠性还有意义吗?每个设备变得更复杂昂贵。一个简单的模型,仔细分析还有好多缺点,关键还是链路层可靠只有本地意义,最好有全局可靠的网络层或者传输层,所以链路层可靠性不重要,甚至是多余的。


 zdl333 回复于:2005-02-16 12:37:25

引用:原帖由 "cherywangyi"]其实大家讨论来讨论去,我觉得还应该补充一个问题!就是大家还要考虑3层的问题即IP协议层(internet protocol 互联网络层).TCP/IP不光是解决相同网络(2层以内)的互联还要解决异构网络的互联.比如一个以太网络的数据帧能..........
 发表:

比较同意这个说法,说不定从网络层传到数据链路层的数据都是错误的。


 huangjian198309 回复于:2005-08-16 02:40:57

呵呵,我的理解是说:IP层下是数据链路层,如果这个包在IP层就丢了,数据链路层就不可能发现是吧?由于路由器是工作在IP层的,就有可能出现这种情况,是吗?学习中.....


 很平凡的Man 回复于:2008-04-18 15:14:47

UDP  用户数据报文协议


 shenbo7 回复于:2008-04-20 18:39:02

如果中间路由器由于太忙,而丢弃了某些UDP包,也是可以原谅的。
但那时候链路层没有出差错,所以不会重传。
而tcp由于每个包都有确认,所以,就算中间的路由器丢包了,还是会重传的。




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=449635