TCP缓冲区大小及限制
2010-09-29 17:15
211 查看
本文介绍一些影响IP数据报大小的限制,我们先介绍这些限制,然后就他们如何影响应用进程传递的数据综合分析
IPv4 数据报最大大小是65535(16位),包括IPv4头部。
IPv6 数据报最大大小是65575,包括40个字节的IPv4头部
MTU, 这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节
path MTU: 指两台主机间的路径上最小MTU
分片(fragmentation): 指ip数据报大小超过相应链路的MTU,IPv4和IPv6都将对ip数据进行分片,到达目的主机后进行重组。
IPv4头部的DF位用于设置分片还是不分片
MSS:最大分节大小,向对方TCP通告被通告方在每个分节中能发送的最大TCP数据量。MSS的目的是告诉对方其重组缓冲区大小的实际值,从而避免分片。
TCP与UDP的输出
每个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这一缓冲区的大小。当应用进
程调用write往套接口写数据时,内核从应用进程缓冲区中拷贝所有数据到套接口的发送缓冲区,如果套接口发送缓冲区容不下应用程序的所有数据,或者是应
用进程的缓冲区大于套接口的发送缓冲区,或者是套接口的发送缓冲区中有别的数据,应用进程将被挂起。内核将不从write返回。直到应用进程缓冲区中的所
有数据都拷贝到套接口发送缓冲区。所以,从写一个TCP套接口的write调用成功返回仅仅表示我们可以重新使用应用进程缓冲区,它并不是告诉我们对方收
到数据。
TCP发给对方的数据,对方在收到数据时必须给矛确认,只有在收到对方的确认时,本方TCP才会把TCP发送缓冲区中的数据删除。
UDP因为是不可靠连接,不必保存应用进程的数据拷贝,应用进程中的数据在沿协议栈向下传递时,以某种形式拷贝到内核缓冲区,当数据链路层把数据传出后就把内核缓冲区中数据拷贝删除。因此它不需要一个发送缓冲区。
写UDP套接口的write返回表示应用程序的数据或数据分片已经进入链路层的输出队列,如果输出队列没有足够的空间存放数据,将返回错误ENOBUFS.
IPv4 数据报最大大小是65535(16位),包括IPv4头部。
IPv6 数据报最大大小是65575,包括40个字节的IPv4头部
MTU, 这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节
path MTU: 指两台主机间的路径上最小MTU
分片(fragmentation): 指ip数据报大小超过相应链路的MTU,IPv4和IPv6都将对ip数据进行分片,到达目的主机后进行重组。
IPv4头部的DF位用于设置分片还是不分片
MSS:最大分节大小,向对方TCP通告被通告方在每个分节中能发送的最大TCP数据量。MSS的目的是告诉对方其重组缓冲区大小的实际值,从而避免分片。
TCP与UDP的输出
每个TCP套接口有一个发送缓冲区,可以用SO_SNDBUF套接口选项来改变这一缓冲区的大小。当应用进
程调用write往套接口写数据时,内核从应用进程缓冲区中拷贝所有数据到套接口的发送缓冲区,如果套接口发送缓冲区容不下应用程序的所有数据,或者是应
用进程的缓冲区大于套接口的发送缓冲区,或者是套接口的发送缓冲区中有别的数据,应用进程将被挂起。内核将不从write返回。直到应用进程缓冲区中的所
有数据都拷贝到套接口发送缓冲区。所以,从写一个TCP套接口的write调用成功返回仅仅表示我们可以重新使用应用进程缓冲区,它并不是告诉我们对方收
到数据。
TCP发给对方的数据,对方在收到数据时必须给矛确认,只有在收到对方的确认时,本方TCP才会把TCP发送缓冲区中的数据删除。
UDP因为是不可靠连接,不必保存应用进程的数据拷贝,应用进程中的数据在沿协议栈向下传递时,以某种形式拷贝到内核缓冲区,当数据链路层把数据传出后就把内核缓冲区中数据拷贝删除。因此它不需要一个发送缓冲区。
写UDP套接口的write返回表示应用程序的数据或数据分片已经进入链路层的输出队列,如果输出队列没有足够的空间存放数据,将返回错误ENOBUFS.
相关文章推荐
- 传输层(3)-缓冲区大小及限制、TCP输出
- TCP缓冲区大小及限制
- TCP缓冲区大小及限制
- (UNP点滴记录) TCP端口号与并发服务器,缓冲区大小限制,TCP/UDP输出机制
- TCP缓冲区大小及限制
- TCP/IP学习之 TCP缓冲区大小及限制
- TCP/IP学习(四)TCP缓冲区大小及限制
- TCP/IP学习(四)TCP缓冲区大小及限制
- TCP缓冲区大小及限制
- TCP/IP学习(四)TCP缓冲区大小及限制(转)
- TCP缓冲区大小及限制
- TCP/IP学习(四)TCP缓冲区大小及限制
- TCP/IP学习(四)TCP缓冲区大小及限制(转)
- Linux下tcp 和 udp 套接字收发缓冲区的大小决定规则
- 修改socket收发缓冲区大小限制
- Linux下tcp 和 udp 套接字收发缓冲区的大小决定规则
- LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则
- Linux 系统TCP连接内存大小限制 调优
- LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则