计网复习一些细小但重要的知识点
1.TCP默认使用的窗口协议下,是选择的回退N帧还是选择重传?
上面这两个协议是非常基础的协议,属于特别抽象基础那种,实际应用是有所改进的
一般TCP结合了这两种重传机制(而非单一):
(1)累计确认:使用accumulative acknowledgement,即发回的ACK相当于对之前发送的很多packet进行确认。
(2)只设一个timer,对应的是发送方所有未确认的packet里最早发送的那个。如果发生timeout或者3 duplicates,则只重传最早的那一个。
(3)如果接收方收到了新的确认,则重置计时器,并继续把它跟所有未确认的packet里最早发送的那个联系起来。
(4)有快传,快传不会影响计时器(即计时机继续计时)。另外,快传说的是收到3个重复的ACK,不算最初的那一个有效的ACK,即一共应该是4个相同的ACK(如下图)。
(5)接收方窗口不是固定的1,而且发送方和接收方窗口都不是固定的,都是不断变化的,这是对两协议的改进
注:解释一下这里首部选项长度最多40字节,每个边界4字节,为什么选项中只能指明4个字节块的边界信息?
因为这里包含SACK允许选项字段和SACK字段(均在TCP首部的选项字段,不足4n字节用0填充)
(1)SACK允许选项(声明使用SACK)
SACK特性是TCP的一个可选特性,是否启用需要收发双发进行协商,通信双发在SYN段或SYN+ACK段中添加SACK允许选项通知对端本端是否支持SACK,如果双发都支持,那么后续连接态通信过程中就可以使用SACK选项了。所以SACK允许选项只能出现在SYN段中。
SACK允许选项格式如下图:
(2)SACK选项(SACK的具体信息)
连接建立后,如果出现开头所述的情况,接收方就可以通过SACK选项告诉发送方字节的实际接收情况。SACK选项格式如下:
可见除了每个字节块2个边界共需8个字节外,至少还有SACK允许选项(2字节),所以总共40字节最多容纳4组边界,这就占用了4*8+2=34字节,不足以容纳另外1组边界了。所以并非简单想想的5*8=40
2.IP数据报的转发流程
1.既然IP数据报中没有下一跳路由器的IP地址,那么待转发的数据报又怎样找到下一跳的路由器呢?
当路由器收到一个待转发的数据报,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址(必须使用ARP),并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一个路由器。由此可见,当发送一连串的数据报时,上述的这种查找路由表,用ARP得到硬件地址,把硬件地址写入MAC帧的首部等过程,将不断得进行重复,造成一定的开销。
2.那能否在路由表中不使用IP地址而直接使用硬件地址呢?
答案是不可以的,因为我们使用抽象的IP地址,本来是为了隐藏各种底层网络的复杂性而便于分析和研究问题,这样就不可避免要付出代价,例如在选择路由时多了一些开销,但是反过来,如果在路由表中直接使用硬件地址,会带来更多的麻烦
3.一些协议和设备的工作层次
1.协议
1.RIP基于UDP,BGP基于TCP,OSPF和EIGRP基于IP。这些在TCP/IP协议栈中定义的路由协议用于发现和维护前往目的地的最短路径。你可以认为它们不属于网络层协议(注意,是用,based on,而不是实现了,BGP用TCP,所以BGP是应用层的,TCP用IP,所以TCP是传输层的,OSPF用IP,所以OSPF更应该是归类到传输层里比较合理。与书《计算机网络自顶向下方法与Internet特色》意思基本一致),但它们计算出来的路径最终为网络层提供服务。(在TCP/IP协议栈中,Routed Protocol(eg. IP)工作在网络层,而Routing Protocol(eg.BGP)工作在传输层或应用层,他们之间的关系为:Routing Protocol负责学习最佳路径,而Routed Protocol根据最佳路径将来自上层的信息封装在IP包里传输。)
当然,你也要理解,TCP/IP的定义本来就比较模糊。另外一种为OSI提供服务的路由协议就不一样了,IS-IS。它直接封装在数据帧中,自然是一种网络层协议了。这也可以看出OSI的定义比TCP/IP严谨许多。
2.一个协议的实现需要依赖协议所在层次的下一层功能。简单的说,如果TCP需要依赖网际层协议IP,那么它就是传输层的协议。同理,如果RIP需要依赖传输层的UDP,那至少它应该是被定义在UDP之上的协议,但我认为它并不能算是应用层协议。举个例子,ICMP是网络层协议,但它需要依赖IP承载,那么ICMP是传输层协议吗?不够严谨的TCP/IP啊。
3.严格意义上说,根本就没有明确定义过这些协议的位置。学习这些协议关键是掌握它们在网络中的功能和如何应用它们。至于它们到底是哪一层的协议,你觉得重要吗?
4.如果一定在划分的话.单纯地从层次上讲的话,RIP,BGP应该在应用层,OSPF,EIGRP在传输层。
-----------------------------------
RIP、OSPF等路由协议严格意义上讲属哪一层?
https://blog.51cto.com/juispan/1981431
广播风暴(broadcast storm)简单的讲是指当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”。
10兆以太网——总线型和星型
100兆以太网——星型
为解决地址耗尽问题,提出子网化和超网化
子网化:A类或B类的大地址被分为几个子网,每个子网有一个比原网络更大的网络前缀长度。
A类网络被二次分配四个子网,那么每个子网有10个前缀,第9第10位,是0或1,正好4种。
超网化:C类地址(256个地址,即每个网络主机个数少)组合成一个较大的网络
问题:
子网化:大组织不愿意将未使用的地址分割给小组织;
超网化:分组路由更加困难。
分类寻址有很多问题被废止,但有一个优势:
给一个地址,容易找到地址所属的类,不需要额外信息来提取前后缀;
地址耗尽长期解决办法:IPv6;短期解决办法:IPv4无类寻址;
IPv4的无类寻址:
前缀可变,0~32,网络大小与前缀长度成反比。
一个A类地址一旦确定,其前8位就确定了,故可以看做是前缀长度为8的无类寻址。
同理,B类地址可以看做是前缀长度为16的无类寻址。
前缀长度的确定:
1.斜杠标记法或无类域间路由或CIDR策略
字节.字节.字节.字节/n //其中n为前缀长度,表征网络长度,32-n表征地址空间,即可容纳的主机数
地址数量:N = 2的32-n次幂;
首地址:前缀n不变,后缀32-n全为0;
末地址:前缀n不变,后缀32-n全为1。
2.地址掩码
掩码为255.255.0.0,则网络号:前16位.0.0;广播地址:前16位。1.1。
IP地址分两部分: 网络ID+主机ID
比如192.168.1.100/24这个IP地址,掩码为:255.255.255.0
所以它的网络ID是:192.168.1.0 而主机ID为:0.0.0.100
而192.168.1.0是不能作为主机IP用的,它代表192.168.1.0这个子网,这个子网可用IP范围是
192.168.1.1-192.168.1.254 一头一尾都不能用。192.168.1.0代表网络ID,而192.168.1.255是广播地址。
FTP是基于TCP的,双连接,一个控制一个数据