您现在的位置:首页 >> 电脑网络 >> 网络协议 >> 内容

IP分片浅析

时间:2014/5/5 19:48:15 点击:

  核心提示: 在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧...

在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头,如以太网的MTU为1500字节,实际上数据帧的最大长度为1512字节,其中以太网数据帧的帧头为12字节。

当发送的IP数据报的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功。

IP分片的实现

IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。

在IP首部有4个字节是用于分片的,如下图所示。前16位是IP数据报的标识,同一个数据报的各个分片的标识是一样的,目的端会根据这个标识来判断IP分片是否属于同一个IP数据报。中间3位是标志位,其中有1位用来表示是否有更多的分片,如果是最后一个分片,该标志位为0,否则为1。后面13位表示分片在原始数据的偏移,这里的原始数据是IP层收到的传输的TCP或UDP数据,不包含IP首部。

\

需要注意的,在分片的数据中,传输层的首部只会出现在第一个分片中,如下图所示。因为传输层的数据格式对IP层是透明的,传输层的首部只有在传输层才会有它的作用,IP层不炸ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq1wNKysrvQ6NKqsaPWpNTaw7+49rfWxqzW0La809C0q8rksuPK17K/oaPL+dLUo6zU2s34wufJz7SryuS1xMr9vt2w/MrH09C/ycTcw7vT0LSryuSy48rXsr+1xKGjPC9wPgo8cD48aW1nIHNyYz0="http://www.it165.net/uploadfile/files/2014/0409/201404091721137.jpg" alt="\" />

避免IP分片

在网络编程中,我们穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qqx3MPis/bP1klQt9bGrKOsxMfDtM6qyrLDtNKqsdzD4sTYo7/UrdLyysdJULLjysfDu9PQs6zKsdbYtKu7+tbGtcSjrMjnuftJULLjttTSu7j2yv2+3bD8vfjQ0MHLt9bGrKOs1rvSqtPQ0ru49rfWxqy2qsqnwcujrNa7xNzSwMC109q0q8rksuO9+NDQ1ti0q6OsveG5+8rHy/nT0LXEt9bGrLa80qrW2LSr0rux6aOs1eK49rT6vNvT0LXjtPOho9PJtMu/ybz7o6xJULfWxqy74bTztPO9tbXNtKvK5LLjtKvLzcr9vt21xLPJuabCyqOsy/nS1M7Sw8fSqrHcw+JJULfWxqyhozwvcD4KPHA+ttTT2lVEULD8o6zO0sPH0OjSqtTa06bTw7LjyKXP3tbGw7+49rD8tcS089Cho6zSu7DjsrvSqrOsuf0xNDcy19a92qOsvLTS1MyrzfhNVFWjqDE1MDCjqSZtZGFzaDtVRFDK17K/o6g4o6kmbWRhc2g7SVDK17K/o6gyMKOpoaM8L3A+CjxwPrbU09pUQ1DK/b7do6zTptPDsuO+zbK70OjSqr+8wsfV4rj2zsrM4sHLo6zS8s6qtKvK5LLj0tG+rbDvztLDx9f2wcuho9TavajBosGsvdO1xMj9tM7O1crWtcS5/bPM1tCjrMGsvdPLq7e9u+HP4Lulzai45k1TU6OoTWF4aW11bSBTZWdtZW50IFNpemWjrNfutPOxqM7Ets6zpLbIo6mjrE1TU9K7sOPKx01UVSZtZGFzaDtJUMrXsr+jqDIwo6kmbWRhc2g7VENQyteyv6OoMjCjqaOsw7+0zreiy821xFRDUMr9vt22vLK7u+GzrLn9y6u3vU1TU7XE1+7Qoda1o6zL+dLUvs2xo9akwctJUMr9vt2xqLK7u+GzrLn9TVRVo6yx3MPiwctJULfWxqyhozwvcD4KPGg0PklQt9bGrMq1wP08L2g0Pgo8cD4xLiBVRFA8L3A+CjxwPrTTMTAuMjI0LjE0Mi4xNjbP8jEwLjEzNy4xMzMuMTAxt6LLzTMwMDDX1r3atcRVRFDK/b7do6zXpbD8tcS94bn7yOfPws28oaO008281tC/ydLUv7S1vdXiuPZVRFDK/b7dsPyxu7fWs8nByzO49klQxqyjrLTTuPe31sastcTGq9LGwb+/ydLUv7Sz9qOsM8assPy6rLXEVURQyv2+3bTz0KG31rHwyscxNDgwoaIxNDgwoaI0OKOovNPJz1VEUMrXsr84uPbX1r3ao6mjrLj3t9bGrLzTyc9JUMrXsr+1xLTz0KG31rHwvs3KxzE1MDChojE1MDChojY4o6y0q8vNtcTX3LXEVURQyv2+3bTz0KHOqjMwMDijrNPJtMvSsr+0s/bWu9PQ0ru49rfWxqyw/LqsVURQyteyv6GjPC9wPgo8cD48aW1nIHNyYz0="http://www.it165.net/uploadfile/files/2014/0409/201404091721138.jpg" alt="\" />

2. TCP

从10.224.142.166向10.137.133.101发送2000字节的TCP数据,抓包的结果如下图。从图中可以看出TCP数据被分成了2个IP片,包含的数据大小分别为1448、552,从三次握手可以看出双方通告的MSS都是1460字节,刚好是MTU(1500)—IP首部(20)—TCP首部(20),但实际为什么第一个分片只发送了1448字节呢,个人觉得应该是TCP首部还有一些选项占用了12个字节,也请知道的达人解释一下。

Tags:浅析 
作者:电脑维修助手 来源:不详
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • 电脑维修知识网(www.dnwxzs.com) © 2017 版权所有 All Rights Reserved.
  • Email:pcweixiu@tom.com 站长QQ:20567788 冀ICP备11008166号 冀公网安备 13050002001002号
  • 技术支持与报障: 电脑维修知识网