热门关键字:  听力密码  单词密码  新概念美语  巧用听写练听力  零起点

嵌入式网络那些事——STM32物联实战

中国水利水电出版社
    【作 者】朱升林 欧阳骏 杨晶 著 【I S B N 】978-7-5170-3312-7 【责任编辑】张玉玲 【适用读者群】科技 【出版时间】2015-07-30 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】496 【千字数】687 【印 张】31 【定 价】68 【丛 书】暂无分类 【备注信息】
图书详情

    本书面向网络TCP/IP协议初学者以及大量嵌入式网络开发人员,从当下流行的嵌入式网络协议栈LwIP的源代码入手,详细讲解TCP/IP协议的各层机制及其实现原理。同时,通过搭建简单的实验环境,本书还详细阐述LwIP在嵌入式设备组网过程中的移植过程、应用编程案例、编程框架、注意事项等。

    本书共分为四大部分,第一部分讲解基于STM32平台下LwIP的移植过程,其中包括了LwIP代码组织结构与特点,以及LwIP裸机移植通用流程;第二部分,以LwIP源代码为基础,以网络数据包在协议栈内部的递交顺序做导向,结合TCP/IP协议基本知识,依次讲解LwIP内核各个模块的实现机制,包括数据包管理、网络接口管理、ARP、IP、ICMP、UDP、TCP等;第三部分,讲解LwIP上层API实现机制,以及常见的网络应用程序结构以及编程方法,以及LwIP其他高级应用,如IGMP、DNS、DHCP等;第四部分,讲解内核调试、协议栈稳定性和性能、并发服务器设计等,以及LwIP在具体项目中的应用和实践过程,同时还包括了LwIP在实际应用中常见的问题及解决方法。

    本书可作为TCP/IP学习者的快速入门及精通的指导书籍,还可作为广大嵌入式网络开发人员的参考手册。

    本书附带源代码,读者可以从中国水利水电出版社网站和万水书苑上下载,网址为:http://www.waterpub.com.cn/softdown/和http://www.wsbookshow.com。

    骨灰级一线嵌入式专家“五木”呕心力作

    基于STM32实战环境,直观感受各层协议在嵌入式设备组网过程中的实际应用,学习TCP/IP不再是纸上淡兵

    最实用的STM32学习资料,最新鲜的实战例程,轻轮诙谐,简单直白

    从协议栈原理及使用方法,到编程框架,讲解透彻

    从性能与稳定性测试,到问题定位与调试,干货多多

    前 言

    两三年前,当整个世界都在大力倡导物联网、宣扬物联网改变世界的时候,很多人还一直觉得它是很虚幻的东西。而如今,物联网技术却实实在在地出现在了我们的生活中。物联网涉及到一系列广泛的技术,并没有完全统一的标准,其本质是所有物体通过一定的方式连入互联网,能够共享自身的一些信息,这些信息或为用户使用,或成为用户远程控制设备的基础。物联网当前已经存在了多种纯熟的入网技术,比如Wi-Fi、以太网、ZigBee、GPRS/3G/4G等。不同的应用场合,根据产品成本和应用特性的考虑,设备可以选择不同的入网方法。

    当前在物联网领域,既有像华为这样的世界级大公司,也有像Sigfox这样的新型创业型公司。物联网的一个重要方向是上十亿百亿的小物体的互联,这些小设备入网并不以大数据量交换为目的,它们只是简单地上报自身状态,或者使用传感器完成某些简单检测功能,比如垃圾箱需要入网,在适当的时候上报自身的储存状态;售货机需要入网,以上报售货状态,是否需要补货;防盗门需要入网,可随时上报异常开关状态;珍惜动物需要入网,方便对它们进行跟踪保护,以免遭到非法捕杀等。类似于这样的小型设备入网需求不胜枚举,它们并不需要太大的数据量通信,或许每小时几百字节的数据就足以满足应用的要求。在这种需求下,使用传统的入网方法无论从成本上还是从实现上都是难以接受的(Wi-Fi的有效范围太小,移动网络价格太贵,功耗太大)。“物体的互联需要一张专门的无线互联网”,这是Sigfox公司提出的一个观点,它们正致力于为所有小物体入网构建一张专有的网络,这张网络可以和目前的2G/3G/4G网络相匹敌。Sigfox的设计中有一种基于超窄带技术的物联网基站,它能向设备提供超远距离的无线互联(10~20公里),以牺牲数据通信速率为前提,设备的无线功率损耗将降至最低,据Sigfox透露这样一款小型设备在一块普通电池的供应下能持续工作数年之久,而设备的每个模块成本可以降到几美元,每年的设备连接维护费也仅为1美元多一点。

    Sigfox成功地解决了小型设备入网的功耗和成本问题,为世界上数以亿计的设备连入互联网提供了完美的解决方案。“成为物体而非人的运营商”是Sigfox目前的发展方向,目前该公司已将技术提交给了欧洲电信标准协会,希望将其专有技术变成标准。值得指出的是,华为也正致力于远距离低功耗无线通信技术的研发,这点同Sigfox的技术不谋而合,这也许是未来小物体互联发展的热点。或许在不久的将来,我们就会见证另一个中国移动、中国电信的诞生。

    以此为契机,越来越多的小设备会连入互联网,尽管在物理层上各种入网方案存在差别,但在这之上,嵌入式设备入网需要使用标准的TCP/IP协议,目前业界可以使用的TCP/IP协议栈较少,嵌入式设备入网比较流行的解决方案主要是使用硬件TCP/IP芯片或者收费TCP/IP协议栈软件,这两种方案一定程度上增加了设备的成本,使用灵活性也受到一定限制,进而阻碍了嵌入式网络产品的大力发展。

    LwIP是TCP/IP协议的一种开源实现,具有丰富完善的功能,最新版本还支持DHCP、DNS等服务,适合于在32位的嵌入式处理器上使用。LwIP作为一款开源软件,可免费使用,能作为设备入网的一种比较完美的解决方案,由于其代码量小,特别适合于小型嵌入式领域使用。目前LwIP在国内已经有了一定的市场占有量,但是相关的资料仍然缺乏,缺少专业的书籍对协议栈原理、使用方法、编程框架、性能与稳定性测试、问题定位与调试等方面做详细说明,这影响了LwIP在物联网领域的广泛使用以及大量开发者进入嵌入式网络领域的脚步。

    笔者的《嵌入式网络那些事:LwIP协议深度剖析和实战演练》一书在一定程度上满足了开发者对LwIP相关知识的需求,在市场上也有很好的销量,得到了读者的好评。但是这本书还是存在一定的不足:一是书的开发平台目前已经停产,由于不是目前最流行的嵌入式处理器,因此该书的实验移植过程对很多读者来说理解有困难;第二,该书更注重于LwIP理论的讲解,以及对TCP/IP协议原理深入的学习,书中的实验相对较简单,这并不能满足广大开发者以及学校实验环境的需求。因此,笔者一直筹划推出本书作为第二版,主要在以下几方面做了改进:首先会在目前流行的STM32处理器上完成所有实验与测试,同时在应用上加入更多丰富实用的实战例程,并且对于很多编程方法抽象出程序框架,开发者只要在这个框架基础上做简单的改动,便可以完成自己的应用程序;其次对于有一定经验的LwIP开发者,可能更加关注于内核调试、协议栈稳定性和性能相关内容,本书也从这两方面着手,提出了一定的实验和方法,满足广大开发者的需求;再次,为了更方便初学者入门,本书丰富了socket标准接口编程方面的原理和实践内容,同时增加了并发服务器设计的相关知识,可以更好地满足如今在市场上越来越复杂的联网需求;最后,笔者从亲自参与并设计的一款物联网网关入手,从原理设计、需求分析、程序架构设计、程序调试等方面详细介绍LwIP在现实项目中的实战经验,希望可以给广大物联网开发工程师带来一定的参考意义。

    写本书的目的可以归纳为三点:第一,给需要使用LwIP的人一个借鉴和解决问题的方法,这也是当初《嵌入式网络那些事:LwIP协议深度剖析和实战演练》一书的写作初衷;第二,也是最基础的,写给那些需要学习TCP/IP的同学,TCP/IP的重要性就不在这里多说了,遥想笔者当年毕业找工作之季,辗转于各大公司的招聘面试场所,TCP/IP真的是面试官最青睐的问题,笔者也恰好因为在这方面有着独到的理解,因此顺利拿下了国内外众多知名企业的offer,所以本书也想告诉那些正在努力的同学,学习TCP/IP是绝对值得的,这是一条康庄大道;第三,也是最重要的,嵌入式网络离不开实践,本书以目前流行的STM32处理器作为实践平台,读者能在实验平台上实际运行、调试网络应用程序,更可以修改协议栈内核,修改的每一行代码都能在实验板上看出实际效果。

    网络编程大神们可以绕道了,这里没有IPSec,没有SSL,没有并发服务器,没有每秒上亿次的服务请求,我们玩的是低端玩意;神秘黑客们也可以绕道了,这里没有系统漏洞,没有文件系统,没有账号,玩不转木马,您都不屑于和我们较真。本书的使用者定位在嵌入式初学者、网络初学者以及对LwIP应用有兴趣或疑问的同学,你们一定可以在本书中找到想要的东西。

    本书背景

    TCP/IP技术是目前最流行的IT技术之一,也是当代互联网及相关技术应用、发展的基石。近年来,TCP/IP技术在各大高校俨然已成为学习和研究的热点;而另一方面,TCP/IP知识也成了各IT企业招聘时关注的重点问题。对于广大TCP/IP初学者来说,要真正掌握并精通TCP/IP协议其实是有难度的:首先,TCP/IP是个非常庞大的协议簇,其源代码一般只存在于各个大型操作系统内核中,协议的整体结构对于使用者来说不可见,学习者只能使用系统内部提供的API完成网络编程功能,但对协议内部的实现细节并不明了,这样TCP/IP的学习者只能停留在上层应用,如Socket编程的层次,而事实上,了解协议内部运作细节是编写高效可靠应用程序的基础;其次,目前市场上针对TCP/IP的书籍较少,而与TCP/IP协议内部机制相关的实验书籍就更加缺乏了,读者只能从书本上学到一些关于TCP/IP的基础理论知识,但很难将这些理论用于实际编程实践中,因为系统内核对于读者来说并不可见。

    目前,嵌入式产品连入互联网已成了越来越多企业关注的热点,这使得在嵌入式产品上移植TCP/IP协议成为一种必然的趋势。LwIP是应用于嵌入式领域的一款开源TCP/IP协议,它的实现同BSD的实现有很大的相似性,可以作为TCP/IP协议的典型代表,其功能完备,除了实现TCP/IP的基本通信功能外,其新版本还支持DNS、SNMP、DHCP、IGMP等高级应用功能。当前网络上关于LwIP的讨论很多,但市场上却鲜见相关书籍。

    本书特点

    理论与实践结合是本书编写的一个重要出发点,不但让读者掌握TCP/IP理论知识,而且让读者通过实验深入地理解并运用这些知识,达到学以致用的目的。首先,整个协议栈对读者来说全部可见,这样读者能对TCP/IP协议有宏观的把握,摒弃掉TCP/IP以往神秘的面纱;本书以网络数据包在协议栈内部的递交顺序为编写导向,思路明显,条理清楚,语言精简幽默,更利于读者对TCP/IP协议基本知识的理解;最后,本书内容大部分建立在读者开发经验之上,其中包括了很多LwIP在实际应用中遇到的问题及其解决方法,这对大部分刚接触LwIP的嵌入式开发人员来说,有很大的指导意义。

    概括来讲,本书具有如下特点:

    轻松诙谐的语言、简单直白的讲解能让读者摆脱阅读时的枯燥感觉,技术学习也可以很轻松。从LwIP协议栈移植到网络应用程序设计,内容由浅入深,知识点覆盖全面,特别适合于嵌入式初学人员。

    协议与实现的完美结合。着眼于TCP/IP基本理论,以LwIP源代码为基础,全面讲解TCP/IP协议的原理与具体实现,全部源代码对读者可见,TCP/IP不再神秘,讲解通俗,步骤详细。每个案例的开发步骤都是以通俗易懂的语言阐述,并穿插图片和表格。

    理论与实践并重。每章均配有实战例程,读者能直观感受到各层协议在嵌入式设备组网过程中的实际应用,学习TCP/IP不再是纸上谈兵。基于目前流行的STM32实验平台,可以帮助开发者快速上手嵌入式网络编程,本书的许多实验都可以抽象成一个基本的编程框架,学习者在学习的同时可以对框架进行填充裁剪等,基于框架快速完成应用程序开发。

    目的明确,实用性强。本书可以作为嵌入式网络开发人员的指导手册,提供的许多应用程序可以直接用在开发项目中,缩短开发周期,节省开发成本;本书还会介绍并发服务器设计、协议栈性能测试、协议栈调试手段等知识,可以帮助开发者处理项目调试遇到的各种问题。

    LwIP协议栈全部用C语言写成,所有代码对用户可见,用户可以宏观地把握整个协议的代码组织结构。在本书中,通过在实验板上移植、使用协议栈,读者可以清楚地知道TCP/IP协议内部各个机制的实现方法以及不同参数设置对协议栈内核性能的影响,比如:如何自行配置TCP发送超时间隔与重发次数以满足特定场合的需求,又如用户可否根据实际使用情况更改TCP状态机以提高内核效率等。通过各个实验,读者可以清楚地看到整个协议的运行过程,加深对协议的理解。

    组织结构

    本书以开源TCP/IP协议栈——LwIP的源代码为基础,详细为读者讲解TCP/IP协议的内部各层结构与实现细节,既包括ARP、ICMP、IGMP、IP、UDP、TCP等基本协议知识,也包括DHCP、DNS等高级应用知识,以LwIP为起点学习TCP/IP,将为广大读者各方面的学习创造捷径。同时,LwIP代码组织和实验平台搭建简单,读者可以方便地进行协议栈内部的相关实验。

    如何简单快速地在当前流行的STM32处理器上完成协议栈移植,如何快速上手协议栈应用编程,如何移植现有的通用网络应用程序是许多读者关心的重点。LwIP如何移植,有没有一套普遍适用的流程,各种编程接口的调用规则与实际使用例子,都是本书中将涉及到的内容。本书的许多应用程序代码可以为开发者提供一个普遍使用的程序框架,开发者只需要在这个基础上做简单改动就可以编写出适合自己的网络应用程序。对于有一定经验的LwIP开发者来说,可能更加关注于内核调试、协议栈稳定性和性能、并发服务器设计等方面的内容,也更期望看到LwIP在具体项目中的应用和实践过程,这些也都是本书将涉及的内容。

    TCP/IP技术是互联网技术发展的基础,在各软硬件IT企业招聘面试中,TCP/IP相关知识成为面试官青睐的问题,对于广大学子来说,精通TCP/IP相关知识无疑将为自己打开一道成功择业的大门。但目前很多人想学习TCP却无处下手,这也成为许多初学者面临的问题。通过本书,从基于STM32的网络实验入手,深入贯通TCP/IP理论及其应用,通过学习,读者可以对协议栈、TCP/IP细节有很好的把握;另一方面,嵌入式系统的组网技术是目前流行的技术,嵌入式网络方向也是未来的热点发展方向,本书将从嵌入式裸机出发,向读者讲解网络协议栈移植过程以及应用编程细节,同时也包括了一些开发过程中常见的各种问题及解决方法,因此,对LwIP应用开发者来说,本书将是一本重要的指导手册。

    编者与致谢

    本书由朱升林、欧阳骏、杨晶著,粟思科审。最后,笔者想感谢一年多来一直陪伴和帮助我的人,没有你们的帮助和付出,这本书不会这么顺利地完成,因为你们的存在,使得这段时光更加珍贵。

    感谢LwIP技术交流群(群号:193936206、224362301)中的上千位网友,是你们每天孜孜不倦的学习和讨论,让LwIP这款开源软件这几年在国内有了快速的成长和发展,谢谢你们的支持和肯定,大家的相互探讨也让我学到了很多东西。

    感谢我的家人,是你们的宽容和细心帮我克服了生活中的许多困难和难题,你们的默默支持和付出是我继续完成此书的最大动力。

    同时参与本书编写工作的还有:王治国、钟晓林、王娟、胡静、杨龙、张成林、方明、王波、陈小军、雷晓 、李军华、陈晓云、方鹏、龙帆、刘亚航、凌云鹏、陈龙、曹淑明、徐伟、杨阳、张宇、刘挺 、单琳、吴川、李鹏、李岩、朱榕、陈思涛和孙浩,在此一并表示感谢。

    配套服务

    感谢成都智造者科技有限公司(www.smartmaker.cn)为本书提供的STM32F103VET6-EV开发平台,该平台定位为物联网领域的首款综合性实验平台,本书基于该平台的以太网接口实现了嵌入式产品的以太网入网实战。此外,该平台预留的接口可方便地扩展该公司的其他物联网模块,如ZigBee模块、蓝牙模块、RFID模块等,能快速地实现物联网领域多种实践。

    本书中的所有实验代码读者可以通过中国水利水电出版社或万水书苑网站下载,网址为http://www.waterpub.com.cn/ softdown/和http://www.wsbookshow.com以下方式获得。由于作者水平所限,网络技术日新月异,本书难免存在错误和不妥之处,恳请广大读者批评指证。我们为读者和用户尽心服务,围绕协议、产品和项目市场,探讨应用与发展,发掘热点与重点;开展相关教学工作。TCP/IP协议俱乐部QQ:183090495,电子邮件hwhpc@163.com,欢迎TCP/IP协议爱好者和用户联系我们。

    共同探讨一直是学习的一种高效方式,值得指出的是,本书最后一节的LwIP常见问题与解决方法就得益于众多网友的反馈,这里,再次对他们表示感谢。

    前言

    第1章 实验平台背后的故事 1
    1.1 嵌入式网络技术一统江湖 1
    1.1.1 嵌入式网络的发展现状 1
    1.1.2 嵌入式LwIP协议栈 4
    1.2 基于STM32的实验平台浅析 6
    1.2.1 STM32处理器的兴起 6
    1.2.2 实验平台简介 9
    1.2.3 网卡连接情况 11
    1.3 本书主要内容 12
    第2章 LwIP协议栈初体验 15
    2.1 庐山真面目之LwIP代码结构 15
    2.1.1 LwIP简介 15
    2.1.2 源代码结构 17
    2.2 怎样用SI阅读源代码 22
    2.3 千里之行从LwIP框架做起 27
    2.3.1 协议栈分层思想 27
    2.3.2 进程模型 30
    2.3.3 协议栈编程接口 31
    第3章 LwIP移植初探——无操作系统模拟层 35
    3.1 移植说明 35
    3.2 移植头文件 37
    3.3 网卡驱动编写 40
    3.4 安装系统时钟 47
    3.5 协议栈初始化 47
    3.6 查询接收数据包 49
    3.7 数据包中断接收 51
    3.8 如何定位Ping问题 53
    第4章 内核动力之源——内存管理 55
    4.1 内存管理背后的故事 55
    4.1.1 内存管理概述 55
    4.1.2 常见内存分配策略 57
    4.2 以不变应万变——动态内存池 59
    4.2.1 数据结构描述 59
    4.2.2 函数实现 65
    4.3 见招拆招——动态内存堆 67
    4.3.1 数据结构描述 67
    4.3.2 函数实现 69
    4.4 其他内存分配策略 74
    第5章 网络数据包——内核血液 78
    5.1 数据包管理的必要性 78
    5.1.1 LwIP的分层特点 78
    5.1.2 协议进程模型 80
    5.2 数据包管理原理大揭密 80
    5.2.1 数据包结构pbuf 81
    5.2.2 pbuf的类型 82
    5.2.3 数据包申请函数 85
    5.2.4 数据包释放函数 88
    5.2.5 其他数据包操作函数 90
    第6章 网络抽水机——网络接口管理 92
    6.1 引言 92
    6.2 接口管理的始与末 93
    6.2.1 数据结构 93
    6.2.2 函数实现 96
    6.3 特殊的网络接口——环回 99
    6.3.1 实现原理 99
    6.3.2 应用程序环回通信实战 102
    6.4 如何动态更改IP地址 109
    6.4.1 重要函数 109
    6.4.2 实战程序 110
    第7章 漫漫鹊桥路——ARP协议 113
    7.1 ARP协议之扫盲篇 113
    7.1.1 物理地址与网络地址 113
    7.1.2 ARP协议的本质 115
    7.2 关键数据结构 117
    7.2.1 ARP表 117
    7.2.2 ARP报文 121
    7.3 ARP之数据包引进来 126
    7.3.1 以太网数据包递交 126
    7.3.2 ARP数据包处理 129
    7.3.3 ARP攻击 131
    7.3.4 ARP缓存表的更新 132
    7.4 ARP之数据包走出去 137
    7.4.1 ARP层数据处理总流程 138
    7.4.2 广播包与多播包的发送 138
    7.4.3 单播包的发送 140
    第8章 互联网身份证——网际协议(IP) 144
    8.1 IP协议之扫盲班 144
    8.1.1 概述 144
    8.1.2 IP地址 145
    8.1.3 特殊IP地址 147
    8.1.4 子网划分与子网掩码 148
    8.1.5 网络地址转换(NAT) 150
    8.1.6 单播、多播与广播 151
    8.2 什么是IP数据报 153
    8.2.1 数据报组成结构 153
    8.2.2 数据结构 158
    8.3 IP数据报之走出去 159
    8.3.1 发送数据报 159
    8.3.2 数据报分片 162
    8.4 IP数据报之引进来 166
    8.4.1 数据报接收 166
    8.4.2 分片重装数据结构 171
    8.4.3 分片重装函数 174
    8.4.4 分片插入与检查 178
    第9章 互联网医生——ICMP协议 182
    9.1 ICMP扫盲班 182
    9.1.1 ICMP协议 182
    9.1.2 报文交付 183
    9.1.3 报文类型 184
    9.1.4 报文格式 185
    9.1.5 差错报文 185
    9.1.6 查询报文 188
    9.2 ICMP实现大起底 189
    9.2.1 数据结构 189
    9.2.2 发送差错报文 191
    9.2.3 ICMP报文的处理 192
    9.2.4 ping命令 196
    9.2.5 ICMP洪水 197
    9.3 如何发送Ping请求 198
    9.3.1 实现原理——raw_pcb 199
    9.3.2 发送ping请求 200
    9.3.3 测试结果 203
    第10章 Raw API无招胜有招之UDP篇 205
    10.1 UDP协议扫盲班 205
    10.1.1 传输层协议 205
    10.1.2 UDP协议 206
    10.1.3 端口号 207
    10.1.4 UDP报文的交付 208
    10.1.5 UDP报文格式 209
    10.1.6 UDP伪首部与校验和 210
    10.2 UDP数据结构详解 212
    10.2.1 报文首部结构 212
    10.2.2 控制块 212
    10.3 UDP RAW编程秘籍 216
    10.3.1 使用UDP编程 216
    10.3.2 新建控制块 216
    10.3.3 绑定控制块 217
    10.3.4 连接控制块 218
    10.3.5 其他控制块操作函数 219
    10.4 UDP RAW编程初体验 220
    10.4.1 UDP编程秘诀 220
    10.4.2 回送程序 221
    10.4.3 测试结果 222
    10.4.4 回调编程的缺陷 224
    10.5 内核报文处理细节 224
    10.5.1 报文的发送 224
    10.5.2 报文接收与递交 228
    10.6 挑战更复杂的UDP应用 231
    10.6.1 使用TFTP传送文件 231
    10.6.2 应用程序实现 234
    10.6.3 TFTP测试结果 242
    第11章 Raw API无招胜有招之TCP篇 244
    11.1 TCP协议大揭秘 244
    11.1.1 TCP的必要性 244
    11.1.2 TCP的特性 245
    11.1.3 连接的定义 247
    11.1.4 数据流编号 248
    11.1.5 滑动窗口 248
    11.2 TCP入门——报文 249
    11.2.1 报文格式 249
    11.2.2 TCP选项 251
    11.2.3 紧急数据 252
    11.2.4 强迫数据交互 253
    11.2.5 报文首部数据结构 253
    11.3 TCP基础——连接 254
    11.3.1 建立连接 254
    11.3.2 断开连接 255
    11.3.3 复位连接 256
    11.3.4 TCP状态转换图 257
    11.3.5 特殊的状态转换 259
    11.4 TCP核心——控制块 260
    11.4.1 控制块数据结构 260
    11.4.2 控制块链表 263
    11.4.3 接收窗口 264
    11.4.4 发送窗口 264
    11.5 TCP RAW编程秘诀 265
    11.5.1 控制块新建 265
    11.5.2 控制块绑定 267
    11.5.3 控制块侦听 267
    11.5.4 控制块连接 268
    11.5.5 发送数据 270
    11.5.6 关闭连接 270
    11.5.7 其他函数 272
    11.6 TCP RAW编程初体验 272
    11.6.1 TCP编程本质 272
    11.6.2 HTTP服务器 278
    11.6.3 打不死的客户端 280
    11.7 TCP输出处理细节放送 283
    11.7.1 报文段缓冲 283
    11.7.2 报文段构建 285
    11.7.3 报文段发送 287
    11.8 TCP输入处理细节放送 289
    11.8.1 TCP层函数调用流程 289
    11.8.2 报文输入 291
    11.8.3 TIME_WAIT状态的报文处理 294
    11.8.4 LISTEN状态的报文处理 294
    11.8.5 SYN攻击 296
    11.8.6 TCP状态机函数 297
    11.8.7 TCP数据输入 301
    11.9 可靠的传输服务 305
    11.9.1 超时重传与RTT估计 306
    11.9.2 慢启动与拥塞避免 311
    11.9.3 快速重传与快速恢复 314
    11.9.4 糊涂窗口与避免 316
    11.9.5 零窗口探查 319
    11.9.6 保活机制 321
    11.9.7 TCP定时器 322
    11.10 挑战更复杂的TCP应用 327
    11.10.1 Telnet服务器 327
    11.10.2 测试结果 333
    第12章 LwIP乾坤大挪移——操作系统
    模拟层 335
    12.1 模拟层是怎样炼成的 336
    12.1.1 移植综述 336
    12.1.2 添加文件 338
    12.1.3 修改头文件lwipopts.h 339
    12.1.4 头文件sys_arch.h 339
    12.1.5 全局变量与初始化 340
    12.1.6 信号量函数 341
    12.1.7 邮箱函数 343
    12.1.8 创建新进程 348
    12.1.9 修改内核初始化函数 349
    12.1.10 移植结果测试 350
    12.2 Sequential API牛刀小试 350
    12.2.1 回显服务器 351
    12.2.2 Web服务器 352
    12.2.3 操作系统下的raw API 355
    第13章 Sequential API大显身手 356
    13.1 探秘内核定时事件 356
    13.1.1 定时结构 356
    13.1.2 定时链表 357
    13.1.3 内核进程 359
    13.1.4 处理定时事件 361
    13.2 论消息机制的重要性 363
    13.2.1 消息结构 363
    13.2.2 数据包消息 364
    13.2.3 协议栈API实现 365
    13.2.4 API消息 367
    13.3 协议栈接口全搜罗 369
    13.3.1 用户数据缓冲netbuf 369
    13.3.2 如何操作数据缓冲 371
    13.3.3 连接结构netconn 373
    13.3.4 内核回调接口 375
    13.3.5 协议栈API秘籍 377
    13.4 Sequential API大会战 383
    13.4.1 网页控制设备 383
    13.4.2 UDP性能测试 386
    13.4.3 TCP性能测试 388
    13.4.4 并发服务器 390
    第14章 万剑归宗之Socket编程 395
    14.1 套接字接口来龙去脉 395
    14.1.1 如何实现Socket 395
    14.1.2 套接字函数秘籍 397
    14.2 Socket实战大串烧 401
    14.2.1 智能的TCP客户端 402
    14.2.2 UDP时间服务器 404
    14.2.3 Winsock客户端设计 406
    14.3 基于Select的并发服务器 408
    14.3.1 神奇的Select函数 409
    14.3.2 Select原理全解析 410
    14.3.3 Select实战——并发服务器 419
    第15章 LwIP工程实战——物联网关 424
    15.1 项目背景 424
    15.1.1 中央空调系统与温控器 424
    15.1.2 新需求的出现 427
    15.1.3 要做什么与如何去做 430
    15.2 智能网络温控器 431
    15.2.1 温控器实现方案 431
    15.2.2 Modbus TCP服务器 432
    15.3 物联网关设计 440
    15.3.1 物联网关实现方案 440
    15.3.2 网关服务器 441
    15.4 现场调试与测试 446
    15.4.1 温控器测试 446
    15.4.2 物联网关测试 447
    第16章 天下之术皆为我用—— LwIP高级篇 449
    16.1 外网访问之道——域名解析 449
    16.1.1 域名系统(DNS) 449
    16.1.2 DNS牛刀小试 450
    16.1.3 下载外网数据 453
    16.2 如何自动分配IP地址——DHCP 456
    16.2.1 DHCP大讲堂 456
    16.2.2 DHCP之实现详解 458
    16.2.3 是骡子是马——遛遛DHCP 460
    16.3 如何实现组播——Internet组管理 464
    16.3.1 IGMP协议大讲堂 464
    16.3.2 IGMP组播实践 465
    第17章 最后的战役 468
    17.1 如何配置协议栈 468
    17.1.1 内核配置文件opt.h 468
    17.1.2 如何提高TCP性能 471
    17.2 内核调试常用方法 472
    17.2.1 内核日志输出 472
    17.2.2 网络调试助手 474
    17.2.3 Wireshark抓包 475
    17.3 为了更好的明天 476
    17.3.1 常见移植问题 476
    17.3.2 常见应用问题 478
    17.4 故事结局 483
    参考文献 484

最新评论共有 2 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册