返回RST包的各种情况
(复位报文—)(连接起来是FIN 未连接起来是RST)
服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP 的端口可能会出现这种错误。这个和操作系统的实现有关。在某些情况下,操作系统也会完全不理会这些发到未打开端口请求。
当然在某些操作系统的主机上,未必是这样的表现。比如向一台WINDOWS7的主机发送一个连接不存在的端口的请求,这台主机就不会回应。
2 请求超 时
曾经遇到过这样一个情况:一个客户端连接服务器,connect 返回 -1 并且 error=EINPROGRESS。 直接telnet发现网络连接没有问题。 ping没有出现丢包。用抓包工具查看,客户端是在收到服务器发出的SYN之后就莫名其妙的发送了RST 。
有 89、27两台主机。主机 89 向主机27发送了一个SYN ,表示希望连接 8888端口,主机27回应了主机 89 一个SYN表示可以连接。但是主机27 却很不友好,莫名其妙的发送了一个RST表示我不想连接你了。
后来经过排查发现,在主机89上的程序在建立了socket 之后,用 setsockopt的 SO_RCVTIMEO 选项设置了 recv 的超时时间为 100ms 。而我们看上面的抓包结果表示,从主机89 发出 SYN 到接收 SYN的时间多达 110ms。(从 15:01:27.799961到 15:01:27.961886,小数点之后的单位是微秒)。因此主机89 上的程序认为接收超时,所以发送了RST拒绝进一步发送数据。http://write.blog.csdn.net/postedit
3 提前关 闭
4 在一个已关闭的 socket 上收到数 据
如果某个 socket 已经关闭,但依然收到数据也会产生 RST 。
TCP当中的拥塞控制算法
当cwnd(拥塞窗口值)<ssthresh(慢开始门限值)时,使用慢开始算法。加倍增长
当cwnd>ssthresh时,改用拥塞避免算法。加1线性增长
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
建立动态路由需要用到的文件
/etc/hosts 主机名->IP地址映射文件/etc/resolv.conf DNS服务配置文件
/etc/gateways 建立动态路由需要用到的文 件
show各种网络参数
show frame-relay map查看帧中网络的映射地址
show frame-relay pvc查看pvc状态:delete static inactive active
show frame=relay lmi查看本地路由和真是交换机的状态消息数量,LMI数据统计
show interface查看接口的物理层和链路层信息,包括数据包的封装类型
网络协议所在层
- 物理层: RJ45 、 CLOCK 、 IEEE802.3 (中继器,集线器,网关) -
- 数据链路: PPP 、 FR 、HDLC、 VLAN 、 MAC (网桥,交换机)-
- 网络层: IP 、 ICMP 、ARP、 RARP 、 OSPF 、IPX 、 RIP 、 IGRP 、 (路由器) -
- 传输层: TCP 、 UDP 、SPX-
- 会话层: NFS 、 SQL 、NETBIOS、 RPC -
- 表示层: JPEG 、 MPEG 、ASII-
- 应用层: FTP 、 DNS 、Telnet、 SMTP 、 HTTP 、WWW 、 NFS
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:
ICMP协议
在IPv4协议中最常用的ICMP消息类型有以下几种:
• 回显应答(类型0)和回显请求(类型8):这是Ping程序发送的信息。
•目标不可达(类型3)
•源抑制(类型4):这是一种用于通知发送者路由器或者主机出现阻塞现象的ICMP消息,发送者需要降低发送速度。
•重定向(类型5):这个消息用来向可以访问两台路由器的主机说“请使用另一台路由器”。
•路由器信息应答(类型9)和路由器信息请求(类型10)
•超时(类型11):这个消息有两种用途。第一,当超过IP生存期时向发送系统发出错误信息。第二,如果分段的IP数据报没有在某种时限内重新组合,这个消息将通知发送系统。
是ping命令使用的协议
http keep-alive
1.当Server的静态资源(css 、html、js、img)较多时,打开keep-alive的开关能够显著减少建立tcp连接的 cpu时间消耗
4.可以在服务器端设置是否支持keep-alive
Not reliable(不可靠)
HTTP是一个无状态协议,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。另外,Keep-Alive也不能保证客户端和服 务器之间的连接一定是活跃的,在HTTP1.1版本中也如此。唯一能保证的就是当连接被关闭时你能得到一个通知,所以不应该让程序依赖于Keep- Alive的保持连接特性,否则会有意想不到的后果
tcp套接字中不会阻塞的是
首先,服务器端启动进程,调用Socket创建一个基于TCP协议的流套接字描述符。
其次,服务进程调用bind命名套接字,将套接字描述符绑定到本地地址和本地端口上。
属于ifconfig命令作用范围
<dl> <dd><dl> <dd> A 配置本地回环地址 </dd> <dd> B 配置网卡的IP地址 </dd> <dd> C 激活网络适配器 </dd> <dt>
</dt> </dl> </dd> </dl>
广播地址
ISDN用户在网路接口处的接入通路的类型
▲B通路:具有定时的64Kbit/s通路,用于传递广泛的各种用户信息流,不传递ISDN电路交换的信令信息。
▲D通路:主要用于传递ISDN电路交换的信令信息,也可以传递遥信信息和分组交换数 据。D通路可以有不同的比特率,
▲H通路:H通路有以下几种传输速率:
H0通路:384Kbit/s
H11通路:1536 Kbit/s
H12通路:1920 Kbit/s
H通路用于传递各种用户信息流,例如高速传真、电视影像、高质量音频或声音节目、高速数据、分组交换信息等,不传递ISDN电路交换的信令信息。
现有一完全的P2P共享协议,每次两个节点通讯后都能获取对方已经获取的全部信息,现在使得系统中每个节点都知道所有节点的文件信息所需次数
假设有n个节点,直观的按照1-2-···-(n-1)-n传播顺序,最后n-1和n获得了所有节点的信息,然后取其中任一节点与1、2、···、n-2这些节点交换信息,即可让所有节点获得所有信息,这样通讯次数=n-1+n-2=2n-3;
如果分成两个组呢,假设两个组的节点个数分别为n1和n2,则每个组首先需要按序传播信息N1=n1-1+n2-1,然后第一组最后两个节点和第二组的最后两个节点就获得了各自组的所有信息,这四个节点两两交换信息,需要N2=2次,则这四个节点获得了两个组所有节点信息,然后取任一节点与每个组剩下的节点(分别是n1-2,n2-2)交换信息N3=n1-2+n2-2,则通讯任务完成,总共通讯次数N=N1+N2+N3=2n1-3+2n2-3+2=2(n1+n2)-4=2n-4;
如果分成三个组,同样的分析N=2n1-3+2n2-3+2n3-3+6=2n-3,其中6表示三个组的最后两个节点交换信息需要6次;
那如果分的组数更多呢,假设分为g组(g>=4),同上分析N=2n-3g+M,其中M表示g个组的最后两个节点交换信息所需要的最少次数。假设把这些点的通讯按照两个组的模式来处理,则M=2*(2g-4),N=2n+g-8>=2n-4。假设按三个组的模式来处理,则M=2*(2g-3),N=2n+g-6>=2n-2,可见它们都是大于等于2n-4,而且随着g的变大通讯次数也会增多。
所以最优的情况就是在分成两个组或者四个组的时候取到,最优情况下通讯次数为2n-4.
帧中继
帧中继提供的是数据链路层和物理层的协议规范,任何高层协议都独立于帧中继协议,因此,大大地简化了帧中继的实现。帧中继的主要应用之一是局域网互联,特别是在局域网通过广域网进行互联时,使用帧中继更能体现它的低网络时延、低设备费用、高带宽利用率等优点。帧中继是一种先进的广域网技术,实质上也是分组通信的一种形式,只不过它将X.25分组网中分组交换机之间的恢复差错、防止阻塞的处理过程进行了简化。
通过网络发送该数据时,正确的发送顺序
网络端一般是大端,大端,大端最高字节在地址低位,低字节在地址高位,所以要调整顺序为B