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

博客围绕嵌入式学习中的网络协议和进程展开。介绍了ISO - 7层模型和TCP/IP 5层模型,阐述了不同网络协议和设备所在层次,详细讲解了socket接口的建立、配置、连接建立和数据传输等内容。还对比了进程和线程的区别,包括资源分配、数据共享等方面。

    在嵌入式学习中,网络协议和进程非常重要。首先说一下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)一个进程至少有一个线程,也可以有多个线程;一个线程必须要有一个父进程,多个进程和线程都可以并发执行。

转载于:https://www.cnblogs.com/chenxukai/archive/2012/10/09/2716143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值