CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

TCP数据报能够分片吗? 如果能,那么TCP头里面的一些记录是要改动吗(比如32位序号)?

楼主huangyinke((网络小蚂蚁))2005-08-02 20:46:10 在 VC/MFC / 网络编程 提问

比如   说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

相关问题

  • 关于TCP_RST包的序号问题
  • 传输层为TCP协议的IP包,第一个分片包应该如何构造?
  • 当需要构造IP分片包时,传输层tcp头的checksum需要重新计算么?
  • 序号!还是序号!
  • 自动序号?
  • 记录序号
  • 怎样判断IP报是分片!
  • 纪录的序号??
  • datagrid中的序号
  • Update 序号问题

关键词

  • tcp/ip
  • 数据
  • tcp
  • 协议
  • 连接
  • ip
  • 网络
  • 分片
  • mtu
  • 路径

得分解答快速导航

  • 帖主:huangyinke
  • masterz
  • dirdirdir3
  • flashboy
  • qrlvls
  • IO2
  • qrlvls
  • yangming0423
  • veryfunny
  • oyljerry

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo