TCP数据报能够分片吗? 如果能,那么TCP头里面的一些记录是要改动吗(比如32位序号)?
比如 说TCP发送方和接收方的MTU都是1500,则建立连接的时候它们两边的MSS都是1460,可是在发送方和接收方之间的的MTU是296。如果发送方发送大小为1500的数据报时(IP头可以设置为可以分片),会出现什么样的情况呢?会分片吗?如果能,那么TCP头里面的一些记录是要改动吗(比如32位序号)? 问题点数:50、回复次数:14Top
1 楼masterz(www.fruitfruit.com)回复于 2005-08-02 21:23:35 得分 10
TCP协议会自动做分片的,不需要你的程序来做。Top
2 楼huangyinke((网络小蚂蚁))回复于 2005-08-02 21:28:52 得分 0
to: masterz(www.fruitfruit.com)
你能说的详细点吗,"TCP协议会自动做分片的",TCP协议是怎么做的呢??Top
3 楼dirdirdir3(风)回复于 2005-08-02 21:42:21 得分 3
挺复杂的,参考http://lib.verycd.com/2004/11/07/0000025562.htmlTop
4 楼AntonlioX(做人要厚道)回复于 2005-08-02 23:17:39 得分 0
upTop
5 楼huangyinke((网络小蚂蚁))回复于 2005-08-03 12:22:51 得分 0
我回去翻了一下《TCP/IP祥解》的关于IP分片的那个章节,上面有这么几句话“需要重申的是,任
何运输层首部只出现在第1片数据中。”就是说被分片的除了第一个分片和最后一个分片有运输层首部(TCP/UDP头)外,其余的中间分片都是没有运输层首部。可是我用IRIS抓包,却没有抓到类似中间分片的包,如果您知道请指教一下。
还有:to: masterz(www.fruitfruit.com)
你能说的详细点吗,"TCP协议会自动做分片的",TCP协议是怎么做的呢??
Top
6 楼flashboy(爱写程序的小绵羊)回复于 2005-08-05 13:37:15 得分 8
TCP数据对于网络层来说,进行拆分肯定是物理拆分的,只是在网络层做出标记格式。这样到了对端以后,会自动组包。Top
7 楼qrlvls( 空 气 )回复于 2005-08-05 13:55:23 得分 8
TCP 是会分片的,不过是由系统协议栈自动完成,不需要代码中再作任何工作
你可以尝试发送一个大小超过 2000 的包来试试(通常的MTU为1500)Top
8 楼huangyinke((网络小蚂蚁))回复于 2005-08-06 15:16:36 得分 0
to :qrlvls(空 气), masterz(www.fruitfruit.com)
我不清楚你们所说的分片的意思。例如在容许分片的前提下发2000的包,TCP两端的MTU都是1500,但是路径MTU是296,则在建立连接的时候会通知对方MSS是1460,这样就会发完整的两个数据报。这两个完整的数据报在传送的过程中,因为路径MTU是296,所以我想这两个数据报都会分组(分片)。你们所说的“TCP 是会分片”的是后面的分片吗?(但是那是IP分片啊)
还是TCP能自动检查到路径MTU(通过设置不能分片标志和ICMP),自动减少数据报的大小,让数据报
能够适应路径MTU,从而避免分组(IP分片)???
to : flashboy(爱写程序的小绵羊)
照你的意思,TCP的最大报文长度是TCP两端的最小MSS加上TCP、IP的头。而不用考虑连接中间
的MTU(当设置成可以分片的时候),因为即使在传送的中途被分片(比如被路由器),达到
TCP连接的另一头会自动组包,所以我们用工具抓的包的大小还是没有被分片之前的大小。
是这样的吗??Top
9 楼IO2( G*道也)回复于 2005-08-06 16:18:25 得分 5
看出 qrlvls(空 气) 等是属于概念不清。Top
10 楼qrlvls( 空 气 )回复于 2005-08-06 20:43:39 得分 5
我前面提到的的确是 TCP包 在 IP 协议中的分片,不知道楼主所问的 TCP 分片是指什么?
同时学习相关概念Top
11 楼yangming0423(Stevens)回复于 2005-08-08 03:27:03 得分 3
当中间的MTU小于你所说的1460,而只有296时,在发送数据之前就会先发送MTU包来探测两台之间的MTU,确定该连接所能使用的MTU,因为TCP是面象连接的,所以会在所建立的连接上使用最小的MTU来进行数据传输!!这在TCP/IP卷一中有讲!!TCP能自动检测!!Top
12 楼huangyinke((网络小蚂蚁))回复于 2005-08-08 09:11:10 得分 0
to : yangming0423(Stevens)
TCP/IP卷一的确讲过,TCP能自动检查到路径MTU(通过设置不能分片标志和ICMP),自动减少数据报的大小,让数据报能够适应路径MTU。我想问的是:不设置设置不能分片标志,能发送大数据报吗,如果能,会产生IP分片吗,如果能,是怎样的情况(分片到达后应该会重组)?Top
13 楼veryfunny()回复于 2005-08-09 11:04:45 得分 3
1. MTU是属于数据链路层的,基于它的分片与TCP无关,在链路层就做好了;
2. 按我的理解MSS是为了避免因发送的数据比MTU小而引起的分片.Top
14 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-09-04 15:34:10 得分 5
1,MTU对应数据链路层,分片是从网络层到数据链路层进行数据封装时进行的
2,MSS为TCP通信双方用来进行数据发送的大小来进行的控制,这里不理解为分片Top




