应用层 |
表示层 |
会话层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
应用层 |
传输层 |
网络层 |
链路层 |
IP协议的作用就是向传输层(TCP层)提供统一的IP包,即将各种不同类型的MAC帧转换为统一的IP包,并将MAC帧的物理地址变换为全网统一的逻辑地址(IP地址)。这样,这些不同物理网络MAC帧的差异对上层而言就不复存在了。正因为这一转换,才实现了不同类型物理网络的互联。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立连接。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
4.请问C++的类和C里面的struct有什么区别?
C++中的类有构造函数,析构函数,继承等等。
C中的struct中,没有构造函数等C++类才有的元素。
它们数据成员的默认访问权限是不同的。
class的默认访问权限为private,而struct为public.
1.c语言的struct和C++的struct有什么区别?
答:c的struct里面只能有成员数据,不能有函数,如:
//c的struct
struct Str{
int rInt;
char ch;
}Str1;//c语言经常在这里加上一个struct的实例(在c++里面可以称为对象)
//c++
struct Str{
private://默认是public,则也是C++的struct和class的唯一区别,即class默认是private
int rInt;
public:
void test();//C++的struct和class可以有成员函数,但是c的struct不可以有
};//一般不直接产生一个对象,你想产生也行,但是习惯还是应该养成否则别人会觉得别扭的
2.C++的struct和C++的class有什么区别?
答:唯一的区别是默认的权限不一样,上面的例子同时给出了说明了
3.c语言的struct和C++的class有什么区别?
答:前面的两个问题解决了,这个就自然明白了。
前面C++的那个struct写出class的形式如下:
class Str{
private://这个可以不写,默认就是private
int rInt;
public:
void test();
};
5.请讲一讲析构函数和虚函数的用法和作用。
假设有一个名为A的类,那么A的析构函数为如下形式
A::~A(){}, 没有参数也无返回值。
析构函数主要作用是在对象销毁前释放其占用的资源。
虚函数的作用是为了实现多态,可以在运行时决定具体调用哪个函数(动态绑定)。
全局变量对于整个程序均可见,而局部变量只对它所在的函数或者语句块可见。
全局变量的生存期与程序的生存期相同,而局部变量的生存期在退出函数或语句块后便结束。
全局变量是在所有函数之外声明的变量,局部变量则是在函数体内声明的变量。全局变量放在内存的全程数据区,局部变量在栈上申请。全局数据区(静态数据区),静态数据区专门存放static变量。static的全局变量只在该文件范围内可见,不能用extern声明为外部变量。 编译器会自动初始化全局变量。
全局变量的内存分配是静态的,位于PE文件在数据区,在main()前由C、C++运行期函数初始化,如果没有初值,会被初始化为0。局部变量的内存分配是动态的,位于线程堆栈中。如果没有初始化的,初值视当前内存内的值而定。
局部变量是在栈中,外部变量是放在数据段,手动分配malloc的才是放在堆中。
7.8086是多少位的系统?在数据总线上是怎么实现的?
8086是16位的系统。
8086地址总线有20位,CPU有1M的寻址空间,然而8086只有16位,为了能够寻址1M内存空间,必须通过分段来完成,即:物理地址=16位的段基址左移4位 + 16位的段内偏移量, 这样就可以寻址全部的地址空间了。