《嵌入式系统程序设计》第八周学习总结

《嵌入式系统程序设计》第八周学习总结

教材学习总结

1.OSI 模型和 TCP/IP 参考模型对应关系 ![](http://images2015.cnblogs.com/blog/1150838/201706/1150838-20170610202228543-1096810088.png) 2.TCP (1)三次握手协议。 TCP 对话通过三次握手来进行初始化。三次握手的目的是使数据段的发送和接收同步,告诉其他主机其一 次可接收的数据量,并建立虚连接。 (2)三次握手 ①初始化主机通过一个同步标志置位的数据段发出会话请求。 ②接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。 ③请求主机再回送一个数据段,并带有确认顺序号和确认号。 3.协议选择 (1)对数据可靠性的要求。 对数据要求高可靠性的应用需选择 TCP 协议,如验证、密码字段的传送都是不允许出错的,而对数据的可靠性要求不那么高的应用可选择 UDP 传送。 (2)应用的实时性。 TCP 协议在传送过程中要使用三次握手、重传确认等手段来保证数据传输的可靠性。使用 TCP 协议会有较大的时延,因此不适合对实时性要求较高的应用,如 VOIP、视频监控等。相反, UDP 协议则在这些应用中能发挥很好的作用。 (3)网络的可靠性。 由于 TCP 协议的提出主要是解决网络的可靠性问题,它通过各种机制来减少错误发生的概率。因此,在网络状况不是很好的情况下需选用 TCP 协议(如在广域网等情况),但是若在网络状况很好的情况下(如局域网等)就不需要再采用 TCP 协议,而建议选择UDP 协议来减少网络负荷。 4.socket (1)socket 类型 常见的 socket 有 3 种类型如下。 (1)流式 socket(SOCK_STREAM)。 流式套接字提供可靠的、面向连接的通信流;它使用 TCP 协议,从而保证了数据传输的正确性和顺序性。 (2)数据报 socket(SOCK_DGRAM)。 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证是可靠、无差错的。它使用数据报协议 UDP。 (3)原始 socket。 原始套接字允许对底层协议如 IP 或 ICMP 进行直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。 5.AF_INET: IPv4 协议 ##课外学习总结 一.OSI参考模型 1.层次划分的原则 (1)网中各主机都具有相同的层次。 (2)不同主机的同等层具有相同的功能。 (3)同一主机内相邻层之间通过接口通信。 (4)每层可以使用下层提供的服务,并向其上层提供服务。 (5)不同主机的同等层通过协议来实现同等层之间的通信。 2.对OSI参考模型的评价 (1)会话层很少使用,表示层几乎是空的。数据链路层与网络层有很多子层插入,每个子层都有不同的功能。 (2)将“服务”与“协议”的定义相结合,这就使参考模型结构变得相当复杂,实现起来很困难。 (3)寻址、流量与差错控制在多个层次中重复出现,系统运行效率低。 (4)参考模型的设计不适应于计算机与软件的工作方式。 (5)参考模型与协议结构复杂,实现周期长,运行效率低,缺乏市场与商业推动力,这是它没有能够达到预期目标的主要原因。   二.TCP/IP参考模型 1.对TCP/IP参考模型的评价 (1)TCP/IP参考模型在服务、接口与协议的区别上不很清楚。按照软件工程的思想,一个好的软件系统设计应该将功能与实现方法区分开,TCP/IP参考模型恰恰没有做到这点。 (2)TCP/IP参考模型的主机—网络层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开,而TCP/IP参考模型恰恰也没有做到这点。 2.TCP/IP各层的主要功能 (1)TCP/IP参考模型的最低层,它负责通过网络发送和接收IP分组。 (2)主机—网络层并没有规定具体的协议,它采取开放的策略,允许使用广域网、局域网与城域网的各种协议。 (3)任何一种流行的低层传输协议都可以与TCP/IP协议互联网络层接口。这正体现了TCP/IP协议体系的开放性、兼容性的特点,也是TCP/IP协议成功应用的基础。 3.传输层 (1)负责在会话进程之间建立和维护端—端连接,实现网络环境中分布式进程通信。 (2)定义了两种不同的协议:TCP与UDP。 (3)TCP是一种可靠的、面向连接、面向字节流(byte stream)的传输层协议。TCP协议提供比较完善的流量控制与拥塞控制功能。 (4)UDP是一种不可靠的、无连接的传输层协议。 ## 学习进度条
代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 15 20/20
第一周 200/200 2/2 1/1 vi的使用
第二周 1000/1200 3/7 7/8 gcc,gdb,makefile
第三周 500/1700 1/8 4/12 U-Boot
第四周 1500/3200 1/9 6/18 Linux的内核
第五周 1200/4400 1/10 3/21 标准I/O的编程,linux下进程相关的基本系统调用
第六周 1000/5400 1/11 4/25 进程间通讯
第七周 1500/6800 1/12 5/30 有名管道和消息队列
第八周 800/7600 1/13 2/32 socket函数,OSI模型,TCP/IP模型

参考资料

  • 《嵌入式Linux应用程序开发标准教程》
posted @ 2017-06-10 20:32  黑麦威士忌  阅读(138)  评论(0编辑  收藏  举报