TCP/IP协议栈中,为什么选择IP层负责分片?

原创 2013年12月06日 10:14:35

这是知乎上被邀请的一个问题TCP/IP协议栈中,为什么选择IP层负责分片?,我从没思考过这个问题甚至不认为这是个有意义的问题,但是当我研究思考后却发现这么一个小问题也许正是当初设计TCP/IP协议栈时的一种考量。


TCP/IP是一个分层协议,协议栈的最底层是链路层,接下来依次是网络层,传输层,应用层。

100859505.jpg

可以看见

  • 链接层负责建立电路连接,是整个网络的物理基础;

  • 网络层负责分配地址和传送二进制数据,主要协议是IP协议;

  • ......

再来看看几个概念

  • PDU:计算机网络各层对等实体间交换的单位信息称为协议数据单元(protocol data unit,PDU),比如分节(segment)是对应于TCP传输层的PDU,IP数据报(IP datagram)对应网络层实体间交换的PDU;

  • SDU:按照协议与服务之间的关系,除了最低层(物理层)外,每层的PDU通过由紧邻下层提供给本层的服务接口,作为下层的服务数据单元(service data unit,SDU)传递给下层,并由下层间接完成本层的PDU交换。如果本层的PDU大小超过紧邻下层的最大SDU限制,那么本层还要事先把PDU划分为若干个合适的片段让下层分开载送,再在相反方向把这些片段重组为PDU。

  • :链路层实体间交换的PDU称为帧,其长度取决于具体的接口;

  • MTU:我们进行分片的依据是MTU,而MTU是网络层和链路层之间的接口属性;


我们可以很清楚的看到如果要在最低层的数据链路层做分片,你必须要去对不同的物理网络的驱动程序做更改; 如果要在上层的传输层或者应用层做分片,既然数据都要通过网络层实际上就是各协议对分片功能的重复造轮子,我们有必要付出这种成本去实现分片吗?我想IP层就是我们在软件设计里常用的适配层,着这里做分片是成本最低的选择。

参考书籍《UNIX网络编程卷1》


TCP/IP协议栈的层次及各层次的任务

一、TCP/IP协议栈的层次 TCP/IP协议栈参考模型分为五个层次: 应用层、传输层、网络层、链路层和物理层。                                     二、协议栈各...
  • qq_35535992
  • qq_35535992
  • 2016年09月27日 21:16
  • 1523

Linux从用户层到内核层系列 - TCP/IP协议栈部分系列1: linux内核协议栈协议的注册

题记:本系列文章的目的是抛开书本从Linux内核源代码的角度详细分析TCP/IP协议栈 轻松搞定TCP/IP协议栈,原创文章欢迎交流, byhankswang@gmail.com 博文1:协...
  • byhankswang
  • byhankswang
  • 2013年02月05日 15:18
  • 1936

TCP/IP 协议栈和主要层

TCP/IP 协议栈和主要层TCP/IP协议栈,指的是整个四(五)层协议组(protocol suite)。TCP/IP RFCsA TCP/IP Tutorial: https://tools.ie...
  • Tyronne
  • Tyronne
  • 2016年02月19日 16:16
  • 1591

浅谈TCP/IP协议栈(一)入门知识

说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋。 万事开头难,然...
  • u012155923
  • u012155923
  • 2016年04月15日 23:08
  • 4504

学习心得之通信篇(TCP/IP协议栈)

上篇讲到的协议寻址机制简单,传输速度慢,不适合大范围,大流量的数据传输,因此,主要被应用于设备内部(如IC之间,电路板与电路板之间)。TCP/IP协议栈物理层采用光纤/同轴电缆为传输介质,传输速率快,...
  • chengshuashuacc
  • chengshuashuacc
  • 2016年03月02日 07:26
  • 1003

Linux下TCP/IP协议栈的简单脉络分析

最近在写网络编程方面的一些东西,然后遇到了关于传输上的小问题。由于之前有简单的看过一些TCP/IP详解的一些东西,所以索性就找了本《追踪LinuxTCP/IP代码运行》的书看了一上午,结果发现初次接触...
  • Shreck66
  • Shreck66
  • 2015年08月11日 22:13
  • 3971

用户态 TCP/IP 协议栈

转自:http://blog.csdn.net/solstice/article/details/26363901 C1000k 新思路:用户态 TCP/IP 协议栈 现在的服务器支撑...
  • hanyingzhong
  • hanyingzhong
  • 2016年11月01日 16:45
  • 1104

TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系

首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。 1,MTU(...
  • yusiguyuan
  • yusiguyuan
  • 2014年04月02日 10:16
  • 9287

为何TCP/IP协议栈设计成沙漏型的

前几天有人回复我的一篇文章问,为何TCP/IP协议栈设计成沙漏型的。这个问题问得好!我先不谈为何它如此设计,我一个80后根本就没有资格去评论上世纪80年代已经臻于成熟的一个设计,我只是说一下目前的趋势...
  • dog250
  • dog250
  • 2014年02月07日 10:55
  • 5358

IP分片和TCP分片 MTU和MSS

IP分片和TCP分片 MTU和MSS
  • keyouan2008
  • keyouan2008
  • 2010年08月27日 13:42
  • 8384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP/IP协议栈中,为什么选择IP层负责分片?
举报原因:
原因补充:

(最多只允许输入30个字)