注:用手机看,版面会跑掉哦,不好意思,已经尽量缩小了。
各位神人,大家早:
填鸭式教育,造就今天的结果,我的疑问,就是在反抗填鸭。
老师是这样教的:
Layer 2:
切成 frame
Point to Point
Error Check
Congestion Control
Layer 4:
切成 segment
End to End
Error Check
Flow Control using Sliding Window,有用 ARQ 没明讲
所以刻板印象中,Sliding Window 就是在 Layer 4,ARQ 也在
Layer 4。
昨天在读 Layer 2 时,看到三组 ARQ 是归类在第二层,起初怀
疑自己笔记有错,去查圣经,它也是归在 Layer 2 (我的笔记是
读圣经本的心得整理)。
于是,疑问就来了:
Layer 2 有用到 ARQ?
sliding window 第二层也有囉?
顺便带出第三个问题,Layer 4 Sliding window 中指的“封包”
到底原文是什么? packet 还是 segment
以上是解释为什么我会这样问。
================== 分隔线 ==================
底下,统整神人们的知识 + 自己查证。
sliding window 第二层也有囉?
答:有。
sliding window 事实上就是程式中的动态长度阵列区块罢了,就像
Queue、Stack 通常在程式中,也是用阵列来实作。
我的大学专题是在 Linux 底下用 SCTP/IPv6 写通讯程式,socket
programming 就那几个步骤,错不了。
专业的说法,底层的东西不会讲“socket programming”,通常以
“stack、驱动程式”去称呼它。
透过 sliding window 的缓冲机制,让原本 TCP 的 segment 虽然
“不是依序到达 Receiver”,经过 sliding window 的帮忙,可以
“等到完整连续 segment 都收到后,往上层送”,造成依序到达
的效果。
没有人规定 Layer 4 才能有 buffer,就像烧录机,烧录程式也有
用到 buffer,整个电脑世界到处都可见到 buffer 的踪迹。
所以 Layer 2 也有使用。
Layer 2 有用到 ARQ?
答:有,且 Layer 4 应该也有。
Sliding Window 没办法处理掉包,通知 Sender 我没有收到、遗失
所以必须靠 ARQ
Sliding Window 与 ARQ 就像手机与电池,各有各的功能,但通常
合在一起使用。
更精确的说:
ARJ、ARQ 是送、收二端侦测到错误后,协调重传的协定。
Automatic Request reJect (ARJ)
Receiver 没看到封包,告诉 Sender 我没收到。
如果线路是断的,会造成 Receiver、Sender 不停的在传资料
,浪费系统资源。(很大的缺失)
Automatic Request reQuest (ARQ)
Receiver 收到封包,告诉 Sender 请传下一个封包。
线路是断的,不会像 ARJ 那般有缺失。
由于 ARJ 有缺失,所以通常我们只常看到 ARQ
塔配上 Sliding Window 后,就衍生出三种 ARQ
stop and wait ARQ
go back N ARQ
selective repeat ARQ
老生常谈,不讲这三种里面运作。
另外,我所说的“Layer 4 不敢明讲有用到”
stop and wait ARQ
go back N ARQ
selective repeat ARQ
可能是我的书是这样,读电资系的大神,就别生气了。
但我读的不止一本,至少三本有了吧。
真的遇到不敢明讲。
Layer 4 Sliding window 中指的“封包”到底原文是什么? packet 还是 segment
答:segment
根据 nobunagaoda 大神的说法,起初我不太相信,不过别急着争,查查
http://www.rhyshaden.com/tcp.htm
At the Transport Layer (equivalent to Layer 4 in the OSI model), two
protocols exist:
TCP (Transfer Control Protocol) -
breaks information into datagrams and sends them, carrying out resends,
if required, and reassembles received datagrams, it gives 'reliable'
delivery,
a connection-oriented service between applications.
UDP (User Datagram Protocol) -
does the same as TCP but it does not carry out any
checking or resending of datagrams, so it is described as 'unreliable', a
connectionless service (See UDP).
IP Datagrams are 'connectionless', however the TCP segment is
'connection-oriented'.
这里只是要顺便讲我口中“不敢明讲”的意思
“TCP:breaks information into datagrams”
所以他的 datagram 想指谁? Packet? Segment? 这篇看不出来。
再查
http://repo.hackerzvoice.net/depot_madchat/ebooks/TCP-IP_Illustrated/
tcp_bulk.htm
里面就清清楚楚讲“segment”。
nobunagaoda 大,跌破眼镜,我有好长一段时间以为 Layer 4 Sliding window
是切 packet
附带一提:
Sliding Window 有沾到流量控制一点点的边,比较主要是由 slow start 那段
机制在处理
注:
通常英文中会以 datagram 统称 frame、packet、segment,不过,当你遇到
UDP 的 datagram 与 统称的 datagram 时,就要靠前后文去解决,不然会搞
混。
中文常以“封包”来做统称,一样会有搞混的问题。
注:
我可以自己弄懂就好,默不作声。
也可以丢句谢谢就好,走人。
但我花了三个小时,打这篇,统整一下,想用这种方式,谢谢神人。
顺便帮助路过的同学,做做功德,打趴一个算一个,增加上榜机会,这心态
不可取。
注:
我做笔记方法:一本书主义,疑问时,辅以多本书、查网络、问人
注:
弓大、malowda,我一直以为 window size = 1 是“stop and wait ARQ”耶
window size = 1 也可以 go back N ARQ 还没弄懂,想办法中。
注:
上榜者经验说,我们在考试,不是在做研究。
我还记得那个人比喻:把国考当研究所在读,年年考不上。
分寸很难拿捏,不过我想应该差不多了吧,我不会再拿 RFC 出来啃,也不
会再去翻 OSI 原文 ....
老话一句:
祝大家都上榜。祝上榜的工作顺利,年终拿甲。谢谢。