计算机网络杂项
OSI七层模型
OSI 中的层 功能 TCP/IP协议族
应 用层 文件传输,电子邮件,文件服务,虚拟终 端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话 层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP (RTP)
网 络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物 理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
************************************************************************************************************************************
TCP/IP五层模型的协议
应用层
传输层:四层交换机、也有工作在四层的路由器
网络层:路由器、三层交换机
数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层
TCP/UDP 缓冲区满
Q:本地同时与多个主机建立连接,如果这些主机同时发生数据到本地,而本地又没有调用recv进行处理,会出现什么情况?
A:系统为每个socket建立一个缓存,ip层组包进程在收到数据包后会把数据放入 socket缓存。调用recv将socket缓存的内容copy到程序定义的缓存,如果通信进程不能及时recv,将导致该socket缓存满。如果用 tcp协议,socket缓存满以后,系统会向对方发出错误消息,对方回收到wsaewouldblock错误,如果是用udp协议,系统会把该 socket的以后收到的数据丢弃~
/proc/sys/net/core/目录下也有:rmem_max, wmem_max, rmem_default, wmem_default几 项,你改这些值试试看,这可能是调整驱动层缓冲区的,/proc/sys/net/ipv4中应该可以调整你的tcp_socket的缓冲区(UDP不缓 冲)
关于Linux中TCP和UDP协议的发送和接收缓冲区
http://www.cnblogs.com/cnpirate/archive/2012/07/25/2608458.html
1. tcp 收发缓冲区默认值
[root@qljt core]# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4161536(TCP接收缓冲区)
cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4161536(TCP发送缓冲区)
2. tcp 或udp收发缓冲区最大值
[root@qljt core]# cat /proc/sys/net/core/rmem_max 接收
[root@qljt core]# cat /proc/sys/net/core/wmem_max 发送
3. udp收发缓冲区默认值
[root@qljt core]# cat /proc/sys/net/core/rmem_default
111616:udp接收缓冲区的默认值
[root@qljt core]# cat /proc/sys/net/core/wmem_default
111616:udp发送缓冲区的默认值
注:有些设置需要echo 8388608 > /proc/sys/net/core/rmem_max后才能生效