zoukankan      html  css  js  c++  java
  • tcp/ip 中的分组和分片

    osi

    大家应该都知道osi七层模型吧,物理层 链路层 网络层 传输层 会话层 表示层 应用层
    ip 属于网络层,tcp 属于传输层,你可以把每一层想像成粽子的粽叶,包裹了七层的粽子
    最外面的就是物理层,最里面的就是应用层,我们的数据就是粽肉。特殊的地方在于而我
    们的粽肉需要放在固定磨具中,大小是固定的。这样就跟我们的事件情况一样了,我们每次
    传输的数据也有一个最大值限定,多了就需要多做几个粽子才行,这个最大值的专业术语
    就是, 最大传输单元(MTU)。数据大小 > MTU,就需要被分片。

    ip 分片

    粽叶会增加粽子体积,我们的数据经过七层协议的过程中就像包粽子一样,每过一层就需要
    增加数据的大小,ip层的上层是传输层(tcp/udp tcp 的头部为20Byte,udp头部字节是8B)
    ip层自己的头部需要占20字节,ip层的MTU = 1500Byte - 20 =1480 >> ip层传输的数据
    最多是,1480Byte, 超过1480Byte的数据,都需要被ip层分片,在达到目的前会自己重组

    #tcp分组

    tcp是可靠传输协议,通过超时与重传机制,来保证收到的数据是完整的。因为tcp是可靠
    传输协议,如果要传输的数据大于 1480 - 20(tcp头部) =1460Byte时,在ip层被分片,而
    ip层分片会导致,如果其中的某一个分片丢失,因为tcp层不知道哪个ip数据片丢失,所以
    就需要重传整个数据段,这样就造成了很大空间和时间资源的浪费,为了解决这个问题,
    就有了tcp分组和MSS(最长报文大小)概念,利用tcp三次握手建立链接的过程,交互各自的
    MTU,然后用小的那个MTU-20-20 , 得到MSS,这样就避免在ip层被分片。

    #udp
    由于udp是不可靠传输的,所以ip分片主要是为了upd服务的,所以就有了网上的
    1500 - 20(ip头部) - 8(udp头部) > 1472 的说法,把1472作为ip分片的标准

  • 相关阅读:
    Balanced Binary Tree
    Convert Sorted List to Binary Search Tree
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Validate Binary Search Tree
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Maximum Depth of Binary Tree
    如何把U盘的两个盘或者多个盘合成一个
    bugku 想蹭网先解开密码
  • 原文地址:https://www.cnblogs.com/newjiang/p/9364920.html
Copyright © 2011-2022 走看看