嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt

嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt

ID:56987812

大小:3.32 MB

页数:32页

时间:2020-07-25

嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt_第1页
嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt_第2页
嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt_第3页
嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt_第4页
嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt_第5页
资源描述:

《嵌入式Linux网络编程和嵌入式Linux设备驱动开发课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章、嵌入式Linux网络编程TCP/IP协议网络基础编程网络高级编程一、TCP/IP协议参考模型网络接口层:将二进制流转换为数据帧,数据帧的接收和发送网络层:将数据帧IP打包,并运行必要的路由算法传输层:通信会话连接与建立(端对端),运行路由算法应用层:应用程序的网络访问TCP/IP协议簇ARP:获得同一网络中硬件主机地址ICMP:发送报告有关传送数据包传送错误的协议IP:负责主机和网络之间寻址好路由数据包IGMP:IP主机向本地多路广播路由器报告主机组成员的协议TCP:为应用程序提供可靠的通信连接。适用一次传输大批数据

2、UDP:TCP实现从一个应用程序到另一个应用程序的数据传递,应用程序调用TCP服务(打开一个socket),通过IP的源/目的可以唯一地区分网络中两个设备的关联,(两个应用程序的关联)连接建立:启动连接(同步标志置位的数据段发出会话请求),接收端响应(接收端回应同步标志置位、即将发送的数据段的起始字节顺序号、应答并带有将收到的下一个数据段的字节顺序号),发送端回送一个数据段并带有确认顺序号和确认号。UDP:p308协议的选择数据可靠性应用的实时性网络的可靠性二、网络基础编程1socket概述定义:是一种文件描述符,是一种特殊

3、的I/O。每个socket用半个相关描述(协议、本地地址、本地端口)来表示。一个完整的套接字则用一个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。有类似打开文件的函数调用,该函数返回一个整型的socket描述符。建立连接、数据传输都是通过socket来实现的。类型:有三种,SOCK_STREAM,SOCK_DGRAM(数据报套接字),原始SOCK。流式socket提供可靠的、面向连接的通信流,采用TCP协议。数据报套接字是无连接的,原始套接字允许对底层协议(相对于TCP的)如IP或ICMP进行直接访问。2地

4、址及顺序处理(1)地址相关处理数据结构:sockaddr和sockaddr_in结构字段常见值:sa_family:(2)数据存储优先顺序两种字节顺序:高位字节优先和低位字节优先,四个函数:htons,ntohs,htonl,ntohl,分别实现网络字节序和主机字节序的转化,h—host,n—network,s—short,l--long(3)地址格式转化用户采用点分十进制(IPv6冒号分开的十进制),socket用的是二进制,IPv4中用到的函数有:inet_aton,inet_addr,inet_ntoa,IPv4与IP

5、v6都兼容的函数有inet_pton和inet_ntop,前者将点分十进制地址映射为二进制地址,后者将二进制地址映射为点分十进制地址。p311(4)名字地址转化实现主机名和IP地址的转化,gethostbyname,gethostbyaddr,getaddrinfo.实现IPv4和IPv6的地址好主机名之间的转化,gethostbyname是将主机名转化为IP地址,gethostbyaddr把IP地址转化为主机名,getaddrinfo可自动识别IPv4和IPv6的地址。Getaddrinfo用到了一个数据结构addrinf

6、o,p312,此结构体的常用选项在表10.7(p313)3socket基础编程socket:用于建立一个socket连接,可指定socket类型,建立socket连接后,可初始化socketadd或sockaddr_in来保存所建立的socket信息。bind:将本地IP地址绑定端口号,用在TCP连接。connect:在TCP中用在客户端(绑定后),用于与服务器端建立连接,UDP中不要绑定,此函数有点类似bind函数send,recv:接收和发送数据,在UDP时,在connect之后用sendto,recvfrom:用在TC

7、P时,与send,recv相同,用在UDP时,可以不先调用connect函数,会自动寻找确定地址并进行连接使用实例4、网络高级编程Connectrecvsend等函数都是阻塞的,即调用此类函数的进程在调用没有准备好的资源时,进程会被阻塞进入休眠,因此,无法解决I/O多路复用的问题。Fcntl和select函数Ping源代码分析,实验内容:NTP(networktimeprotocol)协议实现第七章嵌入式Linux设备驱动开发本章包括:一、设备驱动概述二、字符设备驱动编写三、块设备驱动编写一、设备驱动概述1、概述:操作系

8、统通过各种驱动程序(在内核空间,是内核的一部分,之前各章内容都在用户空间)来控制管理各种设备,OS提供了统一的操作方式,是OS最基本的组成部分,占内核源代码的60%.Linux内核采用可加载的模块设计,支持插入式模块,可将最基本的核心代码编译在内核中,其他的代码可以选择:在内核中或编译成内

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。