您的位置:首页 > 编程语言 > C语言/C++

C语言面试笔试整理笔记(四)

2012-10-09 09:38 323 查看
在嵌入式学习中,网络协议和进程非常重要。首先说一下ISO-7层模型和TCP/IP 5层模型:

ISO-7层有:物理层->数据链路层->网络层->传输层->会话层->表示层->应用层。

TCP/IP 有:物理层,数据链路层,网络层,传输层,应用层。

FTP,HTTP是在应用层;TCP/UDP工作在网络层;

交换机工作在数据链路层;路由器工作在网络层;集线器(hub)工作在物理层;

socket接口是TCP/IP网络的API,socket是一种文件描述符,有类似打开文件的socket();

(1)socket的建立:返回的socket描述符,是一个指向内部数据结构的指针,建立一个socket意味着给一个socket数据结构分配空间,两个网络程序之间的一个网络连接需要包含5钟信息:通信协议,本机地址,本机端口,远端地址,远端端口。

(2)socket的配置:TCP的客户端通过connect函数在socket数据结构中保存以上信息。

TCP的服务端,UDP中的服务器和客户端都是通过bind函数来保存信息。

网络中的高字节优先,对于低字节优先的机器需要转换:htonl, htons, ntohl, ntohs。

(3)连接建立:TCP是基于连接的通信协议,而UDP不需要建立连接。

listen函数使socket处于被监听的模式,并为该socket建立队列,供程序处理,进入连接的请求在队列中等待accept他们

(4)数据传输:send和recve用于TCP数据传输。

sendto和recvefrom用于UDP数据传输。因为没有连接,所以每次收发都需要指明地址。

阻塞和非阻塞:设置socket为非阻塞模式,可以轮询诺干个socket,但此轮询会占用大量CPU时间,而select则可解决此问题,他能将进程本身挂起,而同时使监听所要求的一组文件描述符的任何活动。

进程和线程的区别:

(1)进程是系统运行中的一个应用程序,是系统资源分配的基本单元,在内存中有完备的数据空间和代码空间,一个进程所拥有的数据和变量都属于他自己。

(2)线程是进程中相对独立的可执行单位,他与父进程的其他线程共享代码空间和全局变量,但有独立的堆栈。

(3)一个进程至少有一个线程,也可以有多个线程;一个线程必须要有一个父进程,多个进程和线程都可以并发执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: