网站大量收购独家精品文档,联系QQ:2885784924

嵌入式Linux网络编程 课件.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章、嵌入式Linux网络编程10 TCP/IP协议 网络基础编程 网络高级编程 一、TCP/IP协议 参考模型 网络接口层:将二进制流转换为数据帧,数据帧的接收和发送 网络层:将数据帧IP打包,并运行必要的路由算法 传输层:通信会话连接与建立(端对端),运行路由算法 应用层:应用程序的网络访问 TCP/IP协议簇 ARP:获得同一网络中硬件主机地址 ICMP:发送报告有关传送数据包传送错误的协议 IP:负责主机和网络之间寻址好路由数据包 IGMP:IP主机向本地多路广播路由器报告主机组成员的协议 TCP:为应用程序提供可靠的通信连接。适用一次传输大批数据 UDP: TCP 实现从一个应用程序到另一个应用程序的数据传递,应用程序调用TCP服务(打开一个socket),通过IP的源/目的可以唯一地区分网络中两个设备的关联,(两个应用程序的关联) 连接建立:启动连接(同步标志置位的数据段发出会话请求),接收端响应(接收端回应同步标志置位、即将发送的数据段的起始字节顺序号、应答并带有将收到的下一个数据段的字节顺序号),发送端回送一个数据段并带有确认顺序号和确认号。 UDP:p308 协议的选择 数据可靠性 应用的实时性 网络的可靠性 二、网络基础编程 1 socket概述 定义:是一种文件描述符,是一种特殊的I/O。每个socket用半个相关描述(协议、本地地址、本地端口)来表示。一个完整的套接字则用一个相关描述{协议、本地地址、本地端口、远程地址、远程端口}来表示。有类似打开文件的函数调用,该函数返回一个整型的socket描述符。建立连接、数据传输都是通过socket来实现的。 类型:有三种,SOCK_STREAM,SOCK_DGRAM(数据报套接字),原始SOCK。流式socket提供可靠的、面向连接的通信流,采用TCP协议。数据报套接字是无连接的,原始套接字允许对底层协议(相对于TCP的)如IP或ICMP进行直接访问。 2 地址及顺序处理 (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与IPv6都兼容的函数有inet_pton和inet_ntop,前者将点分十进制地址映射为二进制地址,后者将二进制地址映射为点分十进制地址。p311 (4)名字地址转化 实现主机名和IP地址的转化,gethostbyname,gethostbyaddr, getaddrinfo.实现IPv4和IPv6的地址好主机名之间的转化,gethostbyname是将主机名转化为IP地址,gethostbyaddr把IP地址转化为主机名,getaddrinfo可自动识别IPv4和IPv6的地址。 Getaddrinfo用到了一个数据结构addrinfo,p312,此结构体的常用选项在表10.7(p313) 3 socket基础编程 socket:用于建立一个socket连接,可指定socket类型,建立socket连接后,可初始化socketadd或sockaddr_in来保存所建立的socket信息。 bind:将本地IP地址绑定端口号,用在TCP连接。 connect:在TCP中用在客户端(绑定后),用于与服务器端建立连接,UDP中不要绑定,此函数有点类似bind函数 send,recv:接收和发送数据,在UDP时,在connect之后用 sendto,recvfrom:用在TCP时,与send,recv相同,用在UDP时,可以不先调用connect函数,会自动寻找确定地址并进行连接 使用实例 4、网络高级编程 Connect\recv\send等函数都是阻塞的,即调用此类函数的进程在调用没有准备好的资源时,进程会被阻塞进入休眠,因此,无法解决I/O多路复用的问题。Fcntl和select函数 Ping源代码分析, 实验内容:NTP(network time protocol)协议实现 第七章 嵌入式Linux设备驱动开发11 本章包括: 一、设备驱动概述 二、字符设备驱动编写 三、块设备驱动编写 一、设备驱动概述 1、概述: 操作系统通过各种驱动程序(在内核空间,是内核的一部分,之前各章内容都在用户空间)来控制管理各种设备,OS提供了统一的操作方式,是OS最基

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档