当前位置: 首页 > news >正文

计算机网络笔记(王道考研) 第四章:网络层

内容基于中国大学MOOC的2023考研计算机网络课程所做的笔记。

感谢LY,他帮我做了一部分笔记。其中第四章网络层各小节的顺序稍微做了下调整,和上课老师讲的先后顺序稍有不同,但内容是完整的。

课程内容和西电平时讲课的内容大致重合,西电可能会多讲一点内容,但多讲的考试基本不是重点,自己对照任课老师的课件补一下即可。考试要复习的内容看上去很多,但最后考的都很基础,基本不会考特别偏的知识。

王道的计网讲的中规中矩,听课听完可能会有点懵,建议快速过一遍内容后就开始刷题来加深理解。

 

其他章节的链接如下:

计算机网络笔记(王道考研) 第一章:计算机网络体系结构

计算机网络笔记(王道考研) 第二章:物理层

计算机网络笔记(王道考研) 第三章:数据链路层

计算机网络笔记(王道考研) 第四章:网络层

计算机网络笔记(王道考研) 第五章:传输层

计算机网络笔记(王道考研) 第六章:应用层

其他各科笔记汇总

网络层

image-20220822160250007

网络层功能概述

网络层

主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务

网络传输单位是数据报

IP数据报过大就会进行分片,分片后的小单位即网络层的传输单元分组

 

功能一:路由选择和分组转发 最佳路径

功能二:异构网络互联

功能三:拥塞控制

若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞

解决拥塞的方法:

  • 开环控制:静态。在网络开始工作前就考虑所有能够产生拥塞的因素进行预先控制
  • 闭环控制:动态。网络运行起来后自动调整

路由算法及路由协议

路由算法

路由协议使用路由算法算出最佳路由填入路由表的每一个表项

image-20220822193434166

路由算法的分类

Screen Shot 2022-08-03 at 11.32.59

链路费用(路径代价)即路由器的跳数

分层次的路由选择协议

产生原因:

  1. 因特网的规模很大。如果让所有的路由器都知道所有的网络如何到达,每个路由器的路由表都会异常庞大,处理起来很耗时
  2. 许多单位不想让外界知道自己的路由选择协议,但还是想连入因特网

 

将整个因特网分成许多自治系统AS,AS外部和内部互相看不到使用的协议

Screen Shot 2022-08-03 at 11.39.14 Screen Shot 2022-08-03 at 11.40.48

网关≈路由器

RIP协议与距离路由算法

RIP和OSPF使用的路由算法不同(RIP —— 距离向量路由算法,OSPF —— 链路状态路由算法),适用的网络大小不同(RIP —— 较小网络,OSPF —— 较大网络)

image-20220822230503514

RIP协议

image-20220822214448970

直接交付:路由器和目的网络直接相连

RIP协议和谁交换?多久交换一次?交换什么?

image-20220822214603216

距离向量算法

image-20220822214938028

之所以要替换是因为路由表的更新要以最新消息为准

 

练习1:

image-20220822215904253

练习2:

image-20220822215950391

RIP协议的报文格式

image-20220822220035208

不需要记忆报文的格式以及相应字段。只需要注意到RIP是应用层协议,封装好的RIP报文塞到UDP数据报中传送,并且一个报文最多可以传送25条路由表项信息

RIP协议好消息传得快,坏消息传得慢

RIP的特点:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,”慢收敛“

image-20220822221921715 image-20220822221950079

 

 

image-20220822221844445 image-20220822221815182 image-20220822221735081 image-20220822221659711

OSPF协议及链路状态算法

OSPF协议

image-20220822231035998

链路状态协议≈链路状态算法

注意这里链路的度量/代价和之前讲的距离向量不一样,不是跳数

链路状态路由算法

image-20220822231617822

OSPF区域

image-20220822232408212

主干区域的标识符规定为0.0.0.0,负责连通其他下层区域

主干区域当中的路由器都是主干路由器,上图中 R 3 , R 4 , R 7 R_3,R_4,R_7 R3,R4,R7既是区域边界路由器也是主干路由器

采用分层次划分区域的方法虽然使得交换信息的种类增多,同时使OSPF协议更加复杂,但这样可以使得每个区域内部交换路由信息的通信量大大减小,因而OSPF协议能够适用于规模较大的自治系统

OSPF分组

image-20220822232446811

考纲上OSPF是网络层协议(也有人说是传输层协议,因为相当于是传输层的数据单元放到网络层的数据部分进行封装)

OSPF其他特点

image-20220822232717349

 

可以看这个视频https://www.bilibili.com/video/BV1YV41127U5作为补充

BGP协议

BGP协议

image-20220822233314390

配置BGP时,每个AS的管理员都要选择至少一个路由器作为AS的BGP发言人。一般来说两个BGP发言人都是通过一个共享的网络连接在一起。BGP发言人往往是BGP边界路由器

BGP发言人既使用BGP协议,也使用AS内部使用的内部网关协议。它既要清楚到达其他AS内的子网应该经过哪几个AS,同时也要清楚外来分组在AS内下一跳应该走哪里

BGP协议交换信息的过程

image-20220822234908897

上图即是一个BGP发言人构造出的树形结构的AS连通图

 

image-20220822235251885 image-20220822235306181

BGP协议报文格式

image-20220815213520074

BGP协议特点

image-20220815213527367

BGP-4的四种报文

image-20220815213532779

UPDATE最常用

连接指TCP连接

 

 

三种路由协议比较:

image-20220823000402971 image-20220823000331796

IP数据报格式

TCP/IP协议栈

image-20220823133252247

ARP协议为IP协议服务。IP协议也要为ICMP,IGMP两个协议服务

IP数据报格式

image-20220823133638881 Screen Shot 2022-08-03 at 11.57.41
  • 版本:IPv4 / IPv6?

  • 首部长度:单位是4B(4字节),最小为5

  • 区分服务:指示期望获得哪种类型的服务

    比如想要优先发送某数据报,要强调数据报的优先级就在这进行规定。

    在实际应用中很少用

  • 总长度:占16bit,单位为1B,表明整个IP数据报的长度

    总长度的最大值为 2 16 − 1 = 65535 B 2^{16}-1=65535B 2161=65535B。但实际上不会达到,因为长度过大就要进行分片以满足数据链路层MTU的要求

  • 标识、标志、片偏移:与IP数据报的分片有关

  • 生存时间(TTL):IP分组的保质期。经过一个路由器-1,变成0则丢弃

  • 协议:数据部分的协议
    Screen Shot 2022-08-03 at 12.06.55

  • 首部检验和:只检验首部

    使用二进制求和方法检验,具体不要求

    数据报每经过一个路由器,路由器都要重新计算首部检验和,因为一些字段(如生存时间、标志、片偏移等)都可能发生变化,需要通过首部检验和检验发生变化之后IP数据报是否出错,如果出错就丢弃

  • 源地址和目的地址:32位

  • 可选字段: 0 ∼ 40 B 0\sim40B 040B,用来支持排错、测量以及安全等措施

  • 填充:全0,把首部补成4B的整数倍

IP数据报分片

最大传送单元MTU

image-20220823140656372

MTU不算头尾

过长但是IP数据报不同意分片则无法往下传递,就会返回ICMP差错报文

IP数据报格式补充

image-20220823141542308

只有DF=0,MF才有意义

相对位置指距原数据报数据部分开始位置有多远

 

 

例题:

原数据报数据部分的第一个字节称之为0字节,后面依次是1字节、2字节 …

image-20220823142808787

IPv4地址

IP地址

image-20220823154042869

并不是一个IP地址就标识一个主机,一个主机可以有很多个接口(比如分别用于有线上网的有线接口和无线上网的无线接口)。路由器可以连接很多个主机和路由器,这样一个路由器就会有很多个接口,每一个接口都会分配一个唯一的IP地址

IP编址的历史阶段

分类的IP地址 → \to 子网的划分 → \to 构成超网(无分类编址方法)

互联网中的IP地址

image-20220823154116438

橘色区域都是路由器的一个接口所连接的一些主机以及链路层设备(如网桥)构成的一个局域网,每个局域网也会用一个主机号全0的IP地址来标识。同属一局域网范围的主机以及设备IP地址网络号相同,主机号不同

绿色区域称之为无编号网络/无名网络,之所以叫网络是因为这个网络当中有IP地址,但是这个网络是由一段连线构成的

分类的IP地址

image-20220823155105058

特殊IP地址

这一系列IP地址不能用于标识主机或者路由器的具体接口,无法分配给主机

image-20220823155427024

网络号全0,主机号全0:表示本网范围内的这台主机,如果一台主机在发送分组时不清楚自己的IP地址就填上全0

网络号全0,主机号特定:全0网络号表示本网络

网络号全1,主机号全1:不可以标识某一个主机或者路由器的接口,只能作为目的地址使用,向本网内的所有主机发送广播分组。路由器隔离广播域不转发分组

拥有环回地址的数据报永远离开主机,不会进入到网络当中

私有地址

把这些地址放到互联网上是无效的,路由器不认。这些地址只适用于在内部网络当中使用,比如一个学校一个单位的内部网络使用这些地址

内部IP地址和外部进行通信需要借助NAT技术

image-20220823160858227

网段个数指可以分配多少个网络号

 

image-20220823162551242

2 7 − 2 2^7-2 272:网络号全0表示本网络,网络号127表示环回地址,均不能使用

2 24 − 2 2^{24}-2 2242:主机号全1表示广播地址,主机号全0和全1均不能使用

网络地址转换NAT

私有IP地址/本地IP地址

只可以在本地网、专用网当中使用,在外网、因特网当中是无效的

广域网当中的路由器以及其他的主机无法识别这些IP地址,路由器对目的地址是私有IP地址的数据报一律不进行转发

image-20220823163222061

本地IP地址跟因特网上的主机进行通信需要NAT技术

地址转换NAT

image-20220823163558510

WAN端:广域网端,外网端

LAN端:局域网端,内网端,本地网端

所有使用本地地址的主机在与外界通信时都要经历NAT路由器的地址转换

这些主机如果要把自己的数据发到网上去就要用NAT路由器的外部全球IP地址,要给本地网当中的主机发送数据IP数据报当中的目的地址也填NAT路由器的外部全球IP地址,由NAT路由器再分发给具体的主机

子网划分和子网掩码

子网划分

image-20220823201848658 image-20220823201900314

子网号可以1位都没有,但是至少要留2位作为主机号分配给主机

 

 

image-20220823203514744

当从外部发送IP分组给本单位某一个子网的某一台主机时,路由器需要从收到的IP分组当中提取出目的IP地址,进而根据目的IP地址判断是应该发给本单位的哪个子网

子网掩码

image-20220823204129940

 

 

例题1:

image-20220823205459651

同样的IP地址和不同子网掩码可以相与得出相同的网络地址,但是这几种掩码所达到的效果不同,它们各自子网号和主机号所占的位数不一样,可以划分的子网个数以及每一个子网当中可以使用的最大主机数也不同

 

例题2:

image-20220823205529592

使用子网时分组的转发

Screen Shot 2022-08-03 at 16.32.24

直接交付:直接给路由器所连的一个子网

间接交付:路由器所连的网络当中并不存在目的地址,需要再转给别的路由器

直接交付用目的地址和各个子网的子网掩码相与,看结果是否和某个子网相对应,是则转发给这个子网

检测路径用目的地址和路由表当中每一行的子网掩码相与,看结果是否和某个目的网络地址相对应,是则按该行规定的下一条地址走

默认路由的IP地址和对应子网掩码均为全0,通常是局域网当中的一个路由器,默认路由会发给另一个路由器再循环以上步骤

无分类编址CIDR

无分类编址CIDR

image-20220823231342394 image-20220823231423088

CIDR地址块是主机号全0的最小地址,表示本网络

构成超网

路由表当中有几个路由都走的同一个接口就可以对这几个目的网络地址进行聚合

image-20220823231524028

206.1.0.0/17 和 206.1.128.0/17 聚合后得到206.1.0.0/16

 

例题:

image-20220823233453984

最长前缀匹配

image-20220823231644098

对于各个单位都分了地址块,学校的地址块由各个系进行路由聚合得到

每个系下面可以继续再分,将网络前缀变长

通过最长前缀匹配就可以将分组直接送达目标系而不让其他系和学校收到

 

例题:

image-20220823233411274

所有路由表的目的网络当中,没有任何一个目的网络和分组的目的地址相匹配就走默认路由,默认路由接下来会交付给另一个路由器

ARP协议

发送数据的过程

主机1向主机3发送文件,由于二者处于同一网络,链路层封装时目的MAC地址应填主机3的MAC地址

每一个主机和路由器都会有ARP高速缓存,存同一局域网内部主机和路由器连接该局域网端口的IP地址与MAC地址的映射

如果缓存中并没有主机3的IP地址与MAC地址映射,就需要使用ARP协议,ARP协议通过接收方的IP地址查询其MAC地址。首先广播ARP请求分组,1号主机会发送数据帧,该数据帧的目的MAC地址填全1代表在局域网内进行广播的帧,该帧经过交换机时会从所有端口转发出去,主机2和3、路由器的这个端口都会收到

收到后只有主机3会响应,主机3返回单播ARP响应分组,内部包括主机3的MAC地址

image-20220824000214278

 

若源主机和目的主机不在一个局域网内部,如主机1要和主机5通信时同样使用ARP协议,只不过MAC地址和之前有差别。链路层封装时主机1用自己的子网掩码和目的IP地址相与发现不在同一网络就会查询默认网关IP6的MAC地址MAC6填入目的MAC地址

主机和路由器端口才有的MAC地址,交换机没有MAC地址

默认网关就是与外界沟通的路由器,是局域网连入因特网的关口

传输到路由器进行数据封装和解封装时源IP地址和目的IP地址不变,但由于到了一个新的网络内,源MAC地址和目的MAC地址会改变

如果考虑NAT,IP地址也可能发生改变

当然这里两个路由器间是点对点式通信,应使用PPP协议,PPP协议中目的MAC地址为全1

image-20220824001622818

ARP协议

image-20220824003022000

数据最后要到达一个局域网内部,局域网内部只看得懂MAC地址

 

例题:

image-20220824003050932

其中的路由器可能会连着很多个路由器和主机,不一定是点对点通信。这里就默认它都是要使用一次ARP协议

 

 

ARP协议因为结合了IP地址和MAC地址,是处于链路层和网络层中间的协议,但是现在主要被划分成网络层协议,它给IP协议提供服务

DHCP协议

主机如何获得IP地址?

image-20220824095518949

静态配置 —— 如学校机房内每一台主机都由管理员分配一个固定IP地址

默认网关通常指的是一个路由器的一个接口的IP地址。只有通过默认网关局域网内部的主机才能够跟外界进行通信

DHCP服务器

image-20220824100758574

即插即用 —— 只要设备进入DHCP服务器所管辖的局域网内,就可以被动态地分配一个IP地址

地址重用 —— 每个DHCP服务器都有一个IP地址池,主机进入局域网中被分配IP地址,等离开后DHCP服务器可以把该IP地址分配给新的主机

在用地址续租 —— 通常DHCP动态分配地址是有时间性的,这段可以使用IP地址的时期叫租用期,过后可以重新向DHCP服务器请求一个IP地址或者续租

所有有地址的服务器都可以发送DHCP提供报文,广播DHCP请求报文就是为了告知其他DHCP服务器可以收回刚刚分配的IP地址

ICMP协议

为了更有效地转发IP数据报和提高交付成功的机会

 

网际控制报文协议ICMP

image-20220824104908881

代码字段是为了进一步区分某种类型当中一些不同的情况

检验和字段用来检验整个ICMP报文

ICMP差错报告报文

image-20220824105707201 image-20220824105902946

不应发送ICMP差错报文的情况

image-20220824110028474

ICMP询问报文

image-20220824110056757

ICMP的应用

PING::测试两个主机之间的连通性,使用了ICMP回送请求和回答报文

Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文

源主机和目的主机之间有多个路由器,源主机会向目的主机发送一连串TTL依次被设置为1,2,… 的数据报,链路上的路由器会将TTL减为0的数据报丢弃再返回给源主机ICMP时间超过差错报告报文

IP组播

image-20220824194705484

IP数据报的三种传输方式

image-20220824161731550

单播IP地址就是之前讲的A、B、C类里经常使用的一些IP地址

单播 —— 源地址和目的地址均为单播IP地址

广播 —— 源地址为单播IP地址,目的地址为全1的广播地址。只要一个IP数据报目的地址为全1,它所对应的MAC地址也是全1,这样的数据报会发给局域网内的全部主机,会从交换机的所有端口转发出去

组播 —— 广播不管用户需求,组播则只会给有相同需求的一个组播组内的主机发送相同的数据报。比如看主播直播、腾讯会议时

 

image-20220824161933772 image-20220824162010990

在同一个物理网络 —— 在同一局域网内

组播路由器既可以运行组播协议也可以运行单播协议

IP组播地址

image-20220824224016144

有些D类地址已经被指派了永久组地址

对IP组播进行分类,一种是只能在本局域网内进行的硬件组播,一种是没有进入局域网在因特网范围内的组播。现在大部分主机都是通过连在局域网然后再连入因特网,所以最后通过因特网范围内组播之后还是要进入到局域网内的硬件组播

硬件组播

如果现在发来一个单播数据报,进入局域网后看目标MAC地址决定应该交付给哪个主机。同样在硬件组播也需要根据MAC地址找到可以接收组播数据报的主机

如果现在发来一个广播数据报,进入局域网后看到全1的目标MAC地址就会把数据报发给局域网中的所有主机,不管有没有交换机

image-20220824164908259

之所以要过滤是为了要解决地址中这5位不一样,但最低23位一样的情况。此时会导致不同组播组但是映射得到的MAC地址相同

 

IGMP协议和组播路由选择协议是因特网范围内组播要使用的协议,它们都使用IP数据报传输报文,都是网络层协议

网际组管理协议IGMP

image-20220824194238586

一个主机的多个进程都可以有对应的组播IP地址

加入组播组的几台主机的组播IP地址是226.15.37.123。135.27.74.52,130.12.14.56这些是主机本身就有的全球唯一的IP地址,要注意区分

每一个路由器通过使用IGMP协议就可以判断接收到组播组时是否要给局域网当中的主机

IGMP协议不知道局域网当中组播组的成员个数,同时也不知道这些成员在哪些网络上面,它只能让路由器知道是否有主机参加或者退出了组播组

IGMP工作的两个阶段

image-20220824194313377

Round1:路由器以及同属于组播组的成员都会收到报文

Round2:探询是在发送IGMP询问报文。其他主机只要监听到有一台主机先响应就不需要再发送响应

组播路由选择协议

image-20220824194357327 image-20220824194434835

协议无关 —— 虽然在建立转发树时使用单播数据报和远程路由器联系,但是并不要求使用相同的单播路由选择协议

稀疏/密集 —— 一个组播组的主机间离的远近

IPv6

image-20220824161659067

IPv6产生原因

image-20220824150356585

IPv6数据报格式

image-20220824150631564 image-20220824150711168

下一个首部字段 —— 假如有一个IP数据报除了基本首部外还有若干个扩展首部,每个首部内都有下一个首部字段,指向下一个扩展首部,最后一个扩展首部指向数据部分

和IPv4的区别

image-20220824150727129

IPv6地址表示形式

image-20220824150818829

IPv6基本地址类型

image-20220824150936846

多播 —— 一台主机要跟多播组内的所有主机进行通信,把多播地址放入IPv6数据报的目的地址字段。IPv6并没有使用IPv4的广播地址,因为多播地址可以包括广播地址,IPv4当中的广播发给本局域网当中的所有节点,对应于IPv6可以把广播想象成一组多播组当中的所有主机

任播 —— 是IPv6独有一种的地址。假如一台主机IP数据报当中封装的目的地址是任播地址,它会给任播组内的一台主机发送数据报,通常是离它最近的一台

IPv6向IPv4过渡的策略

image-20220824151023454

上图中不同的路由器使用不同版本的IP协议,使用IPv4协议的路由器收到IPv6数据报时会将其作为数据报封装到一个IPv4首部的数据报当中进行传输,进入IPv6网络时再去掉首部

移动IP

image-20220824194939953

QQ依据IP登录,没有在你开通手机号的地区登录就会因为IP地址发生变化而显示异地登录提醒

移动IP相关概念

image-20220824200909677

归属代理和外部代理都可以是一个路由器

移动IP通信过程

image-20220824201208065

转交地址的获得有两种形式,被动获得和主动获得

被动获得:外部代理会在外部网络内广播ICMP报文,内部包含转交地址

主动获得:移动结点主动发送广播报文获得转交地址

注册之后,发给移动结点的数据报到达归属代理都会被封装,并且以隧道的形式发送给外部代理,外部代理再根据永久地址发送给移动结点

网络层设备

路由器

image-20220824201448830

转发:把分组从一个输入端口转发到另一个输出端口,在路由器内部

路由选择:在路由之间选择一个合适的路径把数据从源主机发送到目的主机,在路由器外部

输入端口对线路上收到的分组的处理

image-20220824214733985

输出端口对交换结构传送来的分组发送到线路

image-20220824214844942

三层设备区别

image-20220824214913479

对于任何层次的设备,都可以互联它所在的层次以及以下层次不同协议的网段 ×

集线器是直通式设备,来什么就发什么

交换机的每一个端口都是一个冲突域

路由表与路由转发

image-20220824214957296

转发表由路由表得来,要结合主机的一些具体信息确定输出端口

某些MAC地址可以是下一跳以太网的地址

SDN的基本概念

image-20220824222702102

路由器功能:转发&路由选择

数据平面对应转发过程,控制平面对应路由选择过程

image-20220824222008822

数据平面

image-20220824222051053

控制平面(传统方法/每路由器法)

控制平面和数据平面都在一个路由器内进行

image-20220824222219197

控制平面(SDN方法:Software-Defined Networking)

数据平面和传统方法一样,控制平面从路由器物理上分离

image-20220824222256607

这里的交换器其实指的是路由器

控制平面中的路由选择处理器

image-20220824222410543

SDN控制平面

image-20220824222522146

SDN控制器的三个层次

image-20220824222445504

 

例题:

image-20220824222555901

相关文章:

  • MySQL必知必会---检索数据
  • ORACLE认证课程
  • emplace()
  • 【代码随想录】回溯算法刷题
  • Pyhon——datetime、calendar模块
  • 爆刷leetcode——链表(二)
  • 【翻译】Style-Aware Normalized Loss for Improving Arbitrary Style Transfer
  • Spring的component-scan XML配置和@ComponentScan注解配置
  • Java 基础知识回顾(一)
  • shell脚本之函数的引入
  • JDK的下载与安装详细教程
  • 刷题记录(NC231128 Steadily Growing Steam,NC21467 [NOIP2018]货币系统,NC235950 多重背包)
  • 详解红黑树【C++实现】
  • Flask的一些简单代码
  • 链路追踪 - SkyWalking
  • #Java异常处理
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译]CSS 居中(Center)方法大合集
  • Apache的80端口被占用以及访问时报错403
  • ES6--对象的扩展
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS笔记四:作用域、变量(函数)提升
  • Rancher-k8s加速安装文档
  • Redis学习笔记 - pipline(流水线、管道)
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue实战(四)登录/注册页的实现
  • 闭包--闭包作用之保存(一)
  • 动态魔术使用DBMS_SQL
  • 开源SQL-on-Hadoop系统一览
  • 两列自适应布局方案整理
  • 手写双向链表LinkedList的几个常用功能
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • (0)Nginx 功能特性
  • (2)STM32单片机上位机
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (三)模仿学习-Action数据的模仿
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .form文件_一篇文章学会文件上传
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET MVC 验证码
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .net专家(张羿专栏)
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [BZOJ2850]巧克力王国
  • [C/C++] -- 二叉树
  • [MFC] VS2013版本MFC工程移植到VC6.0上
  • [NHibernate]一对多关系(关联查询)
  • [OpenCV学习笔记]获取鼠标处图像的坐标和像素值
  • [POJ 2888]Magic Bracelet[Polya Burnside 置换 矩阵]