套接字缓冲区大小及限制

摘要:
IPv6数据报的最大值为65575字节,包括40字节的报头。IPv6要求最小链路MTU为1280字节。两个主机之间路径中最小的MTU称为路径MTU。1500字节以太网MTU是当今常见的路径MTU。如果数据报的大小超过相应链路的MTU,IPv4和IPv6将被分段,并且这些分段在到达目标主机之前不会被重组。IPv4主机对其生成的数据报进行分段,IPv4路由器对其转发的数据报分段。然而,IPv6仅主机对其生成的数据报进行分段,而IPv6路由器不对其转发的数据报分段。
Pv4数据报的最大值是65535字节,包括IPv4首部。
IPv6数据报的最大值是65575字节,包括40字节的首部。
 
MTU:IP数据报的最大传输单元,以太网的MTU是1500字节。
 
IPv4要求的最小链路MTU是68字节。
IPv6要求的最小链路MTU是1280字节。
 
如果一个IPv6的数据报的值小于要求的最小值1280字节,那么就需要进行重组和分片,以使得这些链路看起来具有至少为1280字节的MTU。
 
在两个主机之间的路径中最小的MTU称为路径MTU。1500字节的以太网MTU是当今常见的路径MTU。
 
如果数据报的大小超过了相应链路的MTU,IPv4和IPv6都将进行分片,这些分片在到达目的主机之前通常不会被重组。
 
IPv4主机对其产生的数据报进行分片,IPv4路由器对其转发的数据报执行分片,但是IPv6只有主机对其产生的数据报执行分片,IPv6路由器不对其转发的数据报执行分片。
 
IPv4的首部的"不分片“位(即DF位)若被设置,那么不管是发送这些数据报的主机,还是转发这些数据报的路由器,都不允许对它们进行分片,当IPv4路由器接收到一个超过其外出链路MTU大小且设置了DF位的IPv4数据报时,它将产生一个ICMPV4"destination unreachable,fragmentation needed but DF bit set"(目的地不可达,需分片但DF位已设置)出错消息,当IPv6路由器接收到一个超过其外出链路MTU大小的IPv6数据报时,它将产生一个ICMPv6"packet too big"(分组太大)出错消息。
 
IPv4的DF位可用于路径MTU发现,如果一个TCP是基于IPv4的,那么它将在所发送的所有数据报中设置DF位。如果某个中间路由器返回一个ICMPV4"destination unreachable,fragmentation needed but DF bit DF bit set错误,那么TCP就减少每个数据报的数据量并重传。
 
TCP有一个MSS(maximum segment size,最大分节大小),用于向对端TCP通告对端在每个分节中能发送的最大TCP数据量。MSS的目的是告诉对端其重组缓冲区大小的实际值,从而试图避免分片。MSS经常设置成MTU减去IP和TCP首部的固定长度。在以太网中使用IPv4的MSS值为1460,使用IPv6的MSS值为1440。
 
TCP输出
每一个TCP套接字有一个发送缓冲区,当某个进程调用write时,内核从该应用进程的缓冲区中复制所有数据到所写套接字的发送缓冲区。如果该套接字的发送缓冲区容不下该应用进程的所有数据,该应用进程将被投入睡眠,这里假设该套接字是阻塞的,它是通常的默认设置,内核将不从write系统调用返回,直到应用进程缓冲区中的所有数据都复制到套接字发送缓冲区。因此,从写一个TCP套接字的write调用成功返回仅仅表示我们可以重新使用原来的应用进程缓冲区,并不表明对端的TCP或应用进程已接收到数据,对端TCP必须确认收到的数据,伴随来自对端的ACK的不断到达,本端TCP至此才能从套接字发送缓冲区中丢弃已确认的数据。TCP必须为已发送的数据保留一个副本,直到它被对端确认为止。
 
 
 

免责声明:文章转载自《套接字缓冲区大小及限制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MDLmvn -v报java.lang.ClassNotFoundException下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue router:解决相同路径不同路由参数跳转同一页面,路由参数不动态刷新的问题

问题描述 当我们使用同一路径跳转不同页面时,路由参数不会刷新,所以组件中接收不到,比如我的路由定义和路由跳转链接如下:当然我们人为不肯直接这样写啦~这里模拟问题写的demo 采用 watch 监听 1. 在点击跳转的组件中使用 watch 进行检测动态改变路由参数: watch: { // 利用watch方法检测路由变化:进行重新赋值 $r...

elasticsearch Routing 路由详解

前言 当索引一个文档的时候,文档会被存储到一个主分片中。那么,elasticsearch如何知道一个文档应该存放到哪个分片中呢? 首先这肯定不是随机的,否则在检索文档时就不知道该从哪去寻找它了。实际上这个过程是根据下面公式决定的: shard = hash(routing) % number_of_primary_shardsrouting是一个可变值,...

CentOS7.5 系统最小化安装与初始化配置

CentOS7.5 系统最小化安装与初始化配置 1.安装标准化的系统 1.1.系统安装期间的语言 选择:中文-简体中文,安装完成也会默认支持中文输出,便于管理 1.2.时区选择 亚洲上海,CST时区(东八区用) 1.3.分区方式 挂载路径 分区格式 分区大小 备注信息 swap分区 --- 内存的2倍 交换分区,如果是虚拟机可以不创建 /b...

4.JS跳转路由/刷新/返回页面

1.JS跳转路由(需要拿到父组件的history)   clickHandle(){     let history = this.props.history;     history.push( '/home')   } 2.刷新页面(需要拿到父组件的history)   clickHandle(){     let history = this.pro...

详解vue 路由跳转四种方式 (带参数)

详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1. 不带参数  <router-link :to="{name:'home'}">...

无线路由器无缝漫游

  一.背景:公司A办公网络需要实现无线网络覆盖。现有3台TP-LINK SOHO级无线路由器。分别为1台WR845N和2台WR340G 二.需求:需要对整个办公区域进行覆盖。而且要实现区域间的无缝切换。 三.实施:将三个无线路由器SSID、加密方式、密钥设置成相同的。实现无缝漫游。 具体步骤: 1.查看频段使用率 先使用WirelessMon查看办公区域...