Chinaunix
标题:
tcp 分成segment后,请问收方需要应答几次?
[打印本页]
作者:
chouxiaoya8100
时间:
2016-02-16 16:53
标题:
tcp 分成segment后,请问收方需要应答几次?
比如,某个报文过大,所以发方分成多个segment,然后发给收方,收方手打后,需要应答几次给发方?
问题2 : 如果中间有个segment发送在网络中出错,但是其 前驱 和 后继 都对,那么协议栈如何处理?
只是单纯的发送 出错的? 如果只发送出错的,其后继的segment不发的话,收方收到后,岂不是粘包了!!!!!(协议栈就出现吧粘包)
作者:
chouxiaoya8100
时间:
2016-02-17 08:58
作者:
Godbach
时间:
2016-02-17 11:24
回复
1#
chouxiaoya8100
你指的是分片吗?
作者:
Godbach
时间:
2016-02-17 11:35
回复
1#
chouxiaoya8100
TCP 协议栈是按照 seq 进行 ACK 的。
对于 tcp segment,肯定可以逐一 ACK,或者合并 ACK。
对于 ip fragment,那应该是需要等报文凑齐才能 ACK 的。
作者:
chouxiaoya8100
时间:
2016-02-17 15:44
回复
4#
Godbach
TCP 协议栈是按照 seq 进行 ACK 的。
对于 tcp segment,肯定可以逐一 ACK,或者合并 ACK。
逐一我理解,但合并ack,
能否举例?
为什么问这个问题,因为我有次抓包,遇到个操蛋问题, 服务器再应用层分片(因为数据太多),结果,客户端少了给服务器1次ack。
所以我才来问,是不是每个段,都有ack应答该段?
对于 ip fragment,那应该是需要等报文凑齐才能 ACK 的。
请问什么是ip 分片? 应用层数据过大的时候,在tcp层就已经分段了,一个包1460个字节,
无法超过160字节,你说的ip segment, 到底是什么意思?
作者:
chouxiaoya8100
时间:
2016-02-17 15:46
回复
4#
Godbach
对于 tcp segment,肯定可以逐一 ACK,或者合并 ACK。
什么叫合并ack ?
"对于 ip fragment,那应该是需要等报文凑齐才能 ACK 的。" 应用层进入传输层的时候,已经分段了,1460个字节。
为什么传输层到 ip 层,还要分段。
作者:
Godbach
时间:
2016-02-17 17:10
回复
6#
chouxiaoya8100
TCP/IP 详解 卷1, 看一下相关章节吧,亲
作者:
chouxiaoya8100
时间:
2016-02-17 19:54
回复
7#
Godbach
这本书正在看,
再请教另一个问题吧,pppoe帧的问题。
pppoe是以太帧中包裹了ppp报文, tcp协议-详解,这本书对pppoe讲解的很不好。 我们知道应用层1460字节分段,进入传输层,网络层,最后进入网络接口层。
驱动程序封装成以太帧。以太帧大小为1518字节(ip头20字节+tcp20字节+以太帧头和尾一共18字节)。然后发送到以太网中。
既然pppoe 是以太帧包裹了ppp报文, ppp报文里也有字段, pppoe肯定会超过1518字节。
以太网规定不能超出1518字节,这不矛盾吗?
作者:
Godbach
时间:
2016-02-18 12:24
本帖最后由 Godbach 于 2016-02-18 12:25 编辑
回复
8#
chouxiaoya8100
既然是 PPPoE 的话,那么肯定最后的帧要遵守以太网的要求。
所以实际的最大 IP Payload 就得相应的减小。
作者:
chouxiaoya8100
时间:
2016-02-18 13:15
回复
9#
Godbach
说的好, 好了,我可以进一步请教你了。
我记得我曾经抓包,wireshark抓包。
似乎看不到以太帧汇中有ppp 的东东。
我在想,什么时候以太帧里会有ppp的东东? 是不是只有拨号上网的时候,才会出现ppp, 拨号成功后,以后的帧里,就没有ppp了。
tcp协议详解 这本书名气虽大,但很多地方还是欠缺,比如ppp
作者:
Godbach
时间:
2016-02-18 13:32
回复
10#
chouxiaoya8100
按理说一直都是 PPPoE 的报文了。你可以直接通过 ADSL 上网,抓包看下。
作者:
chouxiaoya8100
时间:
2016-02-18 15:02
回复
11#
Godbach
看不到额, 不知道是不是wireshrk作怪?
还是公司的带宽环境导致的?反正以太帧头后紧跟着第2个字节是0x04——————也就是ip包的协议版本。
说明是ip包。
0x7e是ppp头的第一个字节。很明显,我没在以太帧头后看到0x7e。 所以我也很无奈。
谁有环境帮忙看看额。
顺便说一句,我刚才查阅过资料,pppoe 是1492自己(ppp头和尾一共8个字节) 。
其实很我郁闷:
如果2台机器在一个局域网中,路由器里设置好拨号上网了。
这2个机器通信,帧是什么类型? 纯以太帧?还是pppoe?
如果都不能上网,这2个机器通信,自然是以太帧了。
作者:
Godbach
时间:
2016-02-18 16:05
回复
12#
chouxiaoya8100
如果你在 ADSL 的环境中,又通过了路由器,那你抓包无非抓到的无非是到路由器的报文了,应该是 IP 包。
作者:
nswcfd
时间:
2016-02-19 17:14
pppoe\ipsec\gre等额外封装的协议,为避免不必要的分片,通常要求layer4减少报文大小,比如在tcp options里协商一个较少的MSS。
自动mtu发现机制,在实际中通常work的不是很好,很多站点不理会DF标记。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2