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

简介:

这是知乎上被邀请的一个问题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》

本文转自永远的朋友博客51CTO博客,原文链接http://blog.51cto.com/yaocoder/1337327如需转载请自行联系原作者


yaocoder


相关文章
|
4月前
|
网络协议 Java 程序员
java网络编程什么是TCP/IP协议栈?
java网络编程什么是TCP/IP协议栈?
32 2
|
5月前
|
存储 网络协议 安全
深入解析TCP/IP协议栈:了解网络通信的核心
深入解析TCP/IP协议栈:了解网络通信的核心
|
5月前
|
存储 网络协议 API
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)(下)
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)
|
5月前
|
网络协议 算法 API
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)(上)
网络编程必备:深入理解TCP/IP协议栈(含posix API实现)
|
5月前
|
缓存 网络协议 Unix
最详细的Linux TCP/IP 协议栈源码分析
最详细的Linux TCP/IP 协议栈源码分析
|
网络协议
TCP/IP 协议栈是干什么的?底层原理是什么?
TCP/IP 协议栈是干什么的?底层原理是什么?
179 0
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
211 0
IP协议, TCP协议 和DNS 服务分别是干什么的?
|
网络协议
TCP/IP协议族有哪些?
大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
254 0
TCP/IP协议族有哪些?