自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 IGMP:Internet组管理协议

IGMP用于支持主机和路由进行多播,它让一个物理网络上的所有系统知道主机当前所在的多播组.多播路由器需要这些信息以便知道多播数据报应该向哪些接口转发。  IGMP被当做IP层的一部分(和ICMP一样)。IGMP报文通过IP数据报进行传输。但是IGMP有固定的报文长度,没有可选数据。  多播的基础就是一个进程的概念,该进程在一个主机给定的接口上加入一个多播组。在一个给定的接口上的多...

2010-10-10 00:08:08 190

原创 广播和多播

一. 广播和多播仅应用于UDP,它们对需要将报文同时传送到多个接收者的应用来说十分重要。TCP是一个面向连接的协议,它意味着分别位于两主机(由两个IP地址确定)内的两个进程(由端口号确定)间存在一条连接。  链路层也有一个“广播”,但是不是这里的这个广播。 二. 主机对由信道传送过来的帧的处理过滤过程: 首先,网卡查看由信道传送过来的帧,确定是否接收该帧,若接收后就将它传往设备...

2010-10-09 16:52:48 160

原创 UDP:用户数据报协议

一. 简介1. UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份代发送的IP数据报。  2. UDP不提供可靠性  3. 应用程序必须关系IP数据报的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片。发送ICMP不可达差错的一种情况是:当路由器收到一份需要分片的数据报,而在IP首部又设置了不分片(DF)的标志比特...

2010-10-08 21:06:44 159

原创 动态选路协议

一. 内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol): 每个自治系统内部的各个路由之间的选路协议。 常见的有RIP、OSPF 二. RIP(Routing Information Protocol:选路信息协议)  1.RIP报文包含在UDP数据报中。  2.RIP协...

2010-10-07 00:27:42 117

原创 ICMP(Internet 控制报文协议)

  ICMP经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或者是更高层协议(TCP,UDP等)使用。一些ICMP报文把差错报文返回给用户进程。  ICMP是在IP数据报中被传输的。  ICMP报文的类型由报文中的类型字段和代码字段共同决定。  当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数...

2010-10-06 18:48:23 208

原创 ARP(地址解析协议)和RARP(逆地址解析协议)

ARP基本过程:1) 主机发送一份称作ARP请求的以太网数据帧给以太网上的每一个主机。这个过程称作广播(注意这是数据链路层的广播,不是网络层的广播)。ARP请求包含目的主机的IP地址。这个动作的意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址(MAC)”。2) 目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答(单播)。这个ARP应答包...

2010-10-06 18:45:21 193

原创 IP--网际协议

IP:网际协议 从概念上说,IP路由是非常简单的,特别对于主机来说。如果目的主机和源主机直接相连(如点对点链路)或者都在同一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机上。否则,主机把数据报发往一个默认的路由上,由路由来转发该数据报。大多数主机都是采用这种简单的路由机制。  IP层既可以配置成路由器的功能,也可以配置成主机的功能。本质的区别在于主机从不把数据从一个...

2010-10-06 18:28:50 119

原创 C++强制类型转换

C++同时提供了四种新的强制转型形式(通常称为新的或C++风格的强制转型): const_cast(expression) dynamic_cast(expression) reinterpret_cast(expression) static_cast(expression) 每一种适用于特定的目的。  dynamic_cast主要用于执行“安全的向下转型(safe ...

2010-09-29 23:50:43 92

原创 拷贝构造函数和赋值函数

-- C++中拷贝构造函数被调用的三种情形 1) 一个对象以值传递的方式传入函数体; 2) 一个对象以值传递的方式从函数返回; 3) 一个对象需要通过另外一个对象进行初始化; 对于前两种情况,如果不使用拷贝构造函数,就会导致一个指针指向已经被删除的内存空间。 对于第三种情况,初始化和赋值操作的不同含义是构造函数调用的原因。事实上,拷贝构造函数是由普通的构造函数和赋值操作符共同实...

2010-09-29 20:04:53 96

原创 构造函数和析构函数

-- 析构函数可以为virtual类型,而构造函数则不能。构造函数为什么不能为virtual类型呢? 虚函数采用一种虚调用的办法。虚调用是一种可以在只有部分信息的情况下工作的机制,特别允许我们调用一个只知道接口而不知道其准确对象类型的函数。但是如果要创建一个对象,就必须要知道对象的准确类型,因此构造函数不能为虚函数。 -- 如果虚函数是非常有效的,我们是否可以把每个函数都声明为虚函数?...

2010-09-29 19:17:26 96

原创 sizeof相关问题

1. sizeof的概念: sizeof是C的一种单目运算符,它以字节形式给出了它的操作数的存储大小。操作数可以是一个表达式或者括起来的数据类型。操作数的存储大小由操作数的类型决定。2. sizeof的使用方法: sizeof用于变量可以不带括号,也可以带括号,但是用于类型必须带括号;sizeof不能用于函数类型,不完全类型和位字段。不完全类型是指具...

2010-09-29 17:07:07 103

原创 scanf

scanf

2010-09-29 10:57:31 144

原创 链路层

链路层主要有三个目的: (1)为IP模块发送和接受IP数据。 (2)为ARP模块发送ARP请求和接受ARP应答 (3)为RARP发送和接受RARP请求和应答 以太网是TCP/IP采用的主要的局域网技术,它采用CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense,Multiple Access with Collision Detecti...

2010-09-28 11:54:30 122

原创 定义&赋值&初始化

定义一个变量,就是分配一块存储空间并给它命名;给一个变量赋值,就是把一个值保存到这块存储空间中。变量的定义和赋值也可以一步完成,这称为变量的初始化(Initialization)初始化是一种特殊的声明,而不是一种赋值语句!...

2010-09-18 23:26:48 181

原创 traceroute程序

TTL(timeto live): 目的是防止数据报在选路时无休止的在网络中流动。 当路由器收到一份IP数据报,如果其TTL字段是0或1,则路由器不转发该数据报(接收到这种数据的主机可以将他交给应用程序,因为不需要转发数据报),相反,路由器将丢弃该数据报,并给信源机发一份ICMP“超时”信息。Traceroute程序的关键在于这份ICMP信息的IP报文的信源地址是该路由器的IP地址。 ...

2010-09-18 20:45:56 181

原创 linux内核编译转载

转载自http://www.newsmth.net/pc/pccon.php?id=10002501&nid=339754现在流行的ODL(only disk linux)中做内核部分,那些文章不介绍此点内容。我正在做,完工后整理资料。BY THE WAY ,想成为LINUX高手吗?你需要熟练掌握KERNEL COMPILE 、XCONFIGRATER、LINUXCONFIG、 SAMBA...

2010-09-18 20:20:34 167

原创 “连接”相关细节

在一个执行程序中,标识符代表存放变量或者被编译过的函数体的存储空间。连接用连接器所见的方式描述存储空间。连接有两种方式:内部连接和外部连接。[b]内部连接:[/b] 内部连接意味着对正被编译的文件创建存储空间。用内部连接,别的文件可以使用相同的标识符或全局变量,连接器不会发现冲突------也就是为每一个标识符创建单独的存储空间。在c和c++中,内部连接是由sta...

2010-09-18 19:42:36 98

原创 内联函数

在C++中,宏的概念是作为内联函数来实现的。 内联函数无论从哪方面说都是真正的函数,唯一不同之处在于内联函数在适当的地方像宏一样展开,所以不需要函数调用的开销。因此,应该(几乎)永远不要使用宏,只使用内联函数。 任何在类中定义的函数(不包括在类中声明,在类外定义的成员函数)自动地成为内联函数,但也可以在非类的函数前加上inline关键字使之成为内联函数...

2010-09-18 17:12:37 80

原创 C++虚函数机制

典型的编译器对每个包含虚函数的类创建一个表(称为VTABLE). 在VTABLE中,编译器放置特定类型的虚函数地址。在每一个带有虚函数的类中,编译器秘密地放置一个指针,称为vpointer(缩写为VPTR),指向这个VTABLE。当通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入能取得这个VPTR并在VTABLE表中查找函数地址的代码,这样就能调用正确的...

2010-09-18 15:29:11 107

原创 引用的相关重点

引用的主要用途是为了描述函数的参数和返回值,特别是为了运算符重载。 为了确保一个引用总能是某个东西的名字(也就是说,总能约束到某个对象),我们必须对引用做初始化。例如:[code="c++"]int i = 1;int & r1 = i; //正确,r1被初始化int & r2; //错误,没有初始化extern int & r3...

2010-09-18 15:15:47 108

原创 抽象与数据封装的区别

处理大而复杂的问题的重要手段是抽象,强调事物本质的东西。 对程序抽象而言,一个语言结构的抽象强调的是该结构外部可观察的行为,与该结构的内部实现无关。抽象包括过程抽象和数据抽象。 封装是把一个语言结构的具体实现细节作为一个黑匣子对该结构的使用者隐藏起来的一种机制,从而符合信息隐藏原则。封装包括过程封装和数据封装。 封装考虑内部实现,抽象考虑的是外部行为。...

2010-09-18 15:00:04 505

原创 虚继承的构造函数调用问题

在某一个虚基类的任何一个派生类的构造函数中,都要将该虚基类的构造函数显示列出来。包含虚基类的派生类对象的构造函数的调用顺序如下: 1. 虚基类的构造函数在非虚基类之前调用。 2. 若同一层次中包含多个虚基类,这些虚基类的构造函数按它们说明的顺序调用。 3. 若虚基类由非虚基类派生而来,则仍然按照先调用基类的构造函数,再调用派生类的构造函数的执行顺序。[code="c++"...

2010-09-18 14:27:48 709

原创 动态联编与静态联编

[code="c++"]#include using namespace std;class base{public: virtual void f1(){ cout

2010-09-18 14:23:26 79

原创 static在不同地方的含义

1. 源文件中定义函数使用的static表示的是访问权限:只有在该源文件中的代码才可以访问该函数,它和extern修饰的函数相对应。(注意这里的static函数不指类的静态成员)2. 函数中定义的静态变量使用的static表示该变量是存放在全局变量存储区,在[color=red]程序运行过程[/color]中都是始终存在的,但是只能在该函数内访问到,它和普通的函数中的局部变量在[color...

2010-09-18 13:52:48 247

原创 头文件中的名字空间

不要在头文件中放置使用指令,使用指令的通常形式是:[code="c"]using namespace std[/code]因为std是环绕整个标准c++库的名字空间,所以这个特定的使用指令允许不用限定方式使用标准c++库中的名字。但是在头文件中是绝不会看到使用指令的(至少,不在一个范围之外)。原因是,[b]这样的使用指令去除了对这个特定名字空间的保护[/b],并且这个结果一直持续到当前的编...

2010-09-18 13:41:58 266

原创 为什么不能通过返回值重载

为什么只能通过范围和参数来重载,而不能通过返回值呢? 当编译器能从上下文中唯一的确定函数的意思时,如int x = f();这是没有问题的。然而,在C/C++中我们总是可以调用一个函数但忽略它的返回值,即调用了函数的副作用,在这种情况下,编译器不知道调用的哪个函数,而且读者也不知道调用的是哪个函数,所以c++禁止这种调用。...

2010-09-18 13:33:00 446

原创 堆和栈的区别

[b]堆:[/b] 堆是大家共有的空间,分为全局堆和局部堆(win32已经不分了)。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。 堆在操作系统对进程初始化时进行分配,运行过程中进程也可以向操作系统申请额外的堆,但是记得用完了要归还,否则就会内存泄露。 堆里面一般放的是静态数据,比如static的数据或者字符串常量什么的,资源加载后一般也放在堆里,所以...

2010-09-18 13:26:15 74

原创 TCP/IP协议概述

1. TCP/IP协议的四个层次:a) 链路层(数据链路层、网络接口层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。(帧/Frame)i. ARP(地址解析协议)、RARP(逆地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层地址(MAC)。b) 网络层(互联网层),处理分组在网络中的活动,例...

2010-09-16 00:28:46 76

原创 ping不通,也能telnet

ping这个名字源于声纳定位操作,目的是测试另一个主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。 一般来说,如果不能ping到某台主机,那么就不能telnet或者ftp到那台主机。但是随着Internet安全意识的增强出现了提供访问控制清单的路由器和防火墙,一台主机的可达性可能不只取决于IP层是否可达,还取决于使用何种协议以及端口号。ping...

2010-09-16 00:14:03 1155

原创 编译C程序的详细过程

[b]编译的概念[/b]:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:[color=red]C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、...

2010-09-16 00:04:31 814

原创 扫描目录实例

Beginning Linux Programming P102

2010-09-16 00:01:51 84

原创 标准I/O库

标准I/O库及其头文件stdio.h为底层I/O系统提供了一个通用的接口。这个库现在已经成为了ANSI标准C的一部分。

2010-09-15 23:58:38 63

原创 底层文件访问

当开始运行程序时,他一般会有已经打开的文件描述符:0--标准输入;1--标准输出;2--标准错误。write系统调用: [code="c"] #include size_t write(int fildes,const void * buf,size_t nbytes); [/code]read系统调用: [code="c"] #includ...

2010-09-15 23:38:07 90

原创 系统调用为什么效率低

在输入输出操作中,直接使用底层系统调用的问题是他们的效率很低,为什么呢? 系统调用会影响系统的性能。执行系统调用时,Linux必须从用户代码切换到内核代码运行,然后再返回用户代码。减小这种开销的好方法是,在程序中尽量减少系统调用的次数,并且让每次系统调用完成尽可能多的工作。例如每次读写大量的数据而不是每次仅读写一个字符。 硬件会对底层系统调用一次能读写的数据块做出一定的限制。例...

2010-09-15 23:33:15 963

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除