网络编程与分层协议设计:基于linux平台实现,网络编程与分层协议设计:基于Linux平台实现...

图书简介

本书以Linux网络套接字编程和网络分层协议的设计与程序实现为主题,详细介绍如何在Linux平台下进行套接字程序设计,并给出了一个基于分层协议的应用实例,用于模拟Linux网络协议栈中IP层的核心功能—IP报文的分段和重组过程。本书旨在通过具有一定复杂度的应用,切实帮助读者掌握网络协议分层的设计思想和程序实现方法。此外,本书的许多程序示例直接使用了Linux的内核链表和散列链表,以及内核的其他数据结构和多线程等程序设计技巧,通过实际应用的形式有效地衔接了C语言、数据结构、操作系统、计算机网络和网络协议分析等课程的相关内容。

本书可作为高等院校计算机、网络工程、通信工程等专业本科生与研究生“网络程序设计”课程的教材,也可作为相关领域工程技术人员的参考用书。

章节目录

前言

教学和阅读建议

第1章 TCP/IP网络编程基础1

1.1 网络和网络互联1

1.1.1 ISO/OSI网络模型和TCP/IP协议栈1

1.1.2 IP地址和端口2

1.2 客户端/服务器编程模型3

1.2.1 循环式服务器3

1.2.2 并发式服务器3

1.3 本章小结4

习题4

第2章 Linux下的C编程环境5

2.1 进程5

2.1.1 进程标识5

2.1.2 创建进程6

2.1.3 终止进程6

2.1.4 僵死进程7

2.1.5 子进程退出的异步善后处理7

2.2 线程8

2.2.1 线程标识9

2.2.2 创建线程9

2.2.3 终止线程10

2.2.4 线程同步11

2.3 信号14

2.3.1 信号的概念14

2.3.2 常用信号及其含义14

2.3.3 信号集和信号掩码15

2.3.4 信号处理16

2.3.5 可重入函数18

2.4 时间20

2.4.1 时间表示21

2.4.2 获得时间21

2.4.3 休眠时间22

2.4.4 间隔定时器23

2.5 文件24

2.6 本章小结26

习题26

第3章 网络编程中常用的典型知识28

3.1 结构体大小的计算28

3.2 数据存储与字节序29

3.3 常用数据结构30

3.3.1 Linux链表30

3.3.2 Linux散列链表33

3.4 函数指针34

3.5 校验和35

3.6 用户态下多定时器的实现37

3.7 本章小结47

习题48

第4章 基础套接字49

4.1 套接字基本概念49

4.1.1 创建套接字49

4.1.2 域和地址族50

4.1.3 套接字地址50

4.1.4 流式套接字和数据报套接字51

4.1.5 使用套接字51

4.1.6 套接字编程常用基本函数和数据类型55

4.1.7 客户端/服务器通信方式56

4.2 流式套接字客户端/服务器编程57

4.3 并发流式套接字服务器编程63

4.3.1 服务器主进程67

4.3.2 服务器子进程67

4.3.3 服务器子进程终止67

4.4 数据报套接字客户端/服务器编程67

4.5 本章小结73

习题73

第5章 高级套接字75

5.1 套接字选项75

5.1.1 getsockopt和setsockopt75

5.1.2 套接字通用选项示例76

5.2 I/O多路复用78

5.2.1 I/O多路复用模型79

5.2.2 select函数79

5.2.3 文件描述符集合的使用80

5.2.4 文件描述符的可读写状态82

5.2.5 最大文件描述符个数82

5.2.6 select函数的应用82

5.3 非阻塞I/O90

5.3.1 非阻塞I/O模型90

5.3.2 fcntl函数设置非阻塞模式91

5.3.3 非阻塞模式下的read和write92

5.3.4 非阻塞模式下的connect92

5.3.5 非阻塞模式下的accept93

5.4 信号驱动I/O94

5.4.1 信号驱动I/O模型94

5.4.2 设置套接字工作于信号驱动I/O模式94

5.4.3 信号驱动I/O示例95

5.5 事件I/O100

5.5.1 创建epoll上下文环境epoll_create101

5.5.2 epoll设置epoll_ctl101

5.5.3 等待事件发生epoll_wait103

5.5.4 epoll程序示例104

5.5.5 边沿触发ET和水平触发LT109

5.6 原始套接字110

5.6.1 创建原始套接字111

5.6.2 原始套接字数据发送111

5.6.3 原始套接字数据接收111

5.7 本章小结111

习题112

第6章 网络协议113

6.1 IP协议113

6.1.1 IP协议格式113

6.1.2 IP协议头的C语言定义114

6.1.3 IP报文分段115

6.1.4 IP报文分段重组116

6.2 ICMP协议118

6.2.1 ICMP消息类型118

6.2.2 ICMP消息通用格式118

6.2.3 ICMP查询请求和应答消息格式118

6.2.4 ICMP消息格式的C语言定义119

6.3 FTP协议119

6.3.1 FTP连接管理120

6.3.2 FTP通信过程121

6.3.3 FTP命令处理122

6.3.4 数据(文件)传输过程123

6.3.5 数据传输端口124

6.4 一个简单应用层协议示例125

6.5 分层协议示例—IP报文分段和重组模拟127

6.5.1 程序功能描述128

6.5.2 分层协议栈129

6.5.3 分层协议定义130

6.6 本章小结131

习题132

第7章 ICMP协议程序设计133

7.1 ping程序功能模块133

7.2 回应请求和应答实例分析133

7.3 ping程序实现134

7.4 ping程序的编译和测试140

7.5 本章小结140

习题140

第8章 FTP协议程序设计141

8.1 FTP交互命令实例分析141

8.2 FTP客户端程序功能模块143

8.3 FTP客户端程序实现144

8.4 FTP客户端程序的编译和测试168

8.5 本章小结169

习题169

第9章 IP报文分段和重组模拟程序设计170

9.1 主机工作流程170

9.2 转发服务器工作流程171

9.3 消息分段172

9.4 主机程序功能模块172

9.5 转发服务器程序功能模块175

9.6 消息分段的错序和丢失模拟176

9.7 关键数据结构177

9.8 主机程序实现180

9.9 转发服务器程序实现220

9.10 IP报文分段和重组模拟程序的编译和运行240

9.11 本章小结243

习题243

附录A C/C++源文件编辑244

附录B C/C++源文件编译247

附录C C/C++源文件调试250

参考文献253

图书评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

labview 远程连接linux,SSH交互式通信总结:expect、plink、putty、sshpass、ALAB SSH

关于在linux脚本中远程执行命令的问题,笔者在以前文章中可以使用expect工具来完成交互式通信。在windows平台下可以使用plink或者putty工具。免密也可以设置SSH秘钥,参考文章-Linux怎么远程执行指令呢-SSH秘钥。但是在linux下需要一一对应设置&#xff0…

linux安装版本的python,linux安装python各种版本.md

### linux安装python各种版本PS:首先按照本文的问题按照教程解决,再安装编译python[python各个版本大全](https://www.python.org/ftp/python/)bashwget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz #下载tar xJf Python-3.7.0.tar.xz…

tcping在linux用法,tcping的安装和使用

Tcping 网上比较少资料是关于linux对tcp端口ping测试的方法,我这里简单介绍2种方法: 1.yum安装,编译安装方法 1-1.wget http://linuxco.de/tcping/tcping-1.3.5.tar.gz ###下载tcping1-2 tar zxvf tcping-1.3.5.tar.gz ####解压缩tcping-1.3.…

linux子系统安装gromacs,科学网—Windows下GROMACS程序的编译 - 李继存的博文

2015-12-07 22:12:05总的来说, Windows下的GROMACS程序用于模拟意义不大, 对于长时间的模拟, 我都是放在Linux服务器上进行的. 但将Windows下的GROMACS程序作为一个辅助工具来使用还是有意义的. 因为大多数时候, 我都是在Windows下准备输入文件的, 然后测试一下准备好的输入文件…

surface装linux键盘不能用,Linux 5.13开始支持新款微软Surface系列笔记本的键盘与触摸板...

原标题:Linux 5.13开始支持新款微软Surface系列笔记本的键盘与触摸板改善Linux下微软Surface笔记本支持的探索还在继续。随着Linux 5.13的发布,不仅有Surface DTX驱动,另一个新的Surface驱动 "surface-hid"将允许在较新的Surface设…

linux mp3长度,得到一个wma或mp3文件,如何用最简单的方法得到它的长度信息呢?...

得到一个wma或mp3文件,如何用最简单的方法得到它的长度信息呢? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiMultimedia/html/delphi_20061108195617169.html不需要知道歌手名专辑名等,只要长度即可,哪个指令可以做…

c语言统计数字字母个数,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includemain(){int acount0,bcount0,ccount0,dcount0;char a;printf("请输入一行字符:\n");a getchar();while (a !\n){switch (a){caseq:casew:casee:caser:caset:casey:caseu:casei:caseo:casep:casea:cases:cased:c…

libmysqld_dev linux,Linux下python玩转MySQLdb

(0)目录Linux下python玩转MySQLdb一:起因(1)Linux下安装python的第三方模块 ---- MySQLdb,自己走了很多弯路,在此做一下总结,希望对于像我一样的初学者有所帮助(2)Python中mysql数据库连接的例子,请见Linux公社 或者 我…

单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文)物理与电子工程学院2014级课程设计PAGE IV物理与电子工程学院《单片机原理与接口技术》课程设计报告书设计题目: 基于单片机的按键控制LED数码管共阴极动态显示电路设计专 业: 自动化…

c语言把数据存放在文件中,急求如何将下列C语言程序数据存储到文件中?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中。#include int n0;int rest[7][7]; //全局声明,以供全局调用int main(){void perm(int list[],int ,int );int …

c语言sgoto 标志位,如何在Go中设置TCP数据包的“不分段”标志位?(How to set “don't fragment” flag bit for TCP packet in Go?)...

如何在Go中设置TCP数据包的“不分段”标志位?(How to set “dont fragment” flag bit for TCP packet in Go?)我打算在Go中设置“do not fragment”标志位,与C中的这个标志位相同。我检查了常量列表,但没有找到该选项。 那么Go的相应选项是…

林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册

(文末的阅读原文,效果最佳!)作者:李佶澳 微信:lijiaocnGo 语言深度入门手册,帮你更好的理解 Go 语言,写出更高效、更规范、更不易出错的代码。Go 在 2012 年发布 1.0 版本,距今已经 8 年了。和历…

android中shape资源定义,Android中drawable使用Shape资源

本文实例为大家分享了drawable使用Shape资源的具体内容,供大家参考,具体内容如下1.画一条水平方向的虚线android:shape"line" >android:dashGap"3dp"android:dashWidth"6dp"android:width"1dp"android:color…

永洪报表工具_2020年最值得推荐的五大BI工具

现在很多公司和业务部门都十分注重数据分析,并为企业信息化建设做准备。以前收集、处理、分析数据可能是IT部门和数据库员的专属,现在很多业务部门都急切的开始用数据分析的思维分析业务问题。在过去,大多数数据人员的工作模式都是自己使用ex…

容量耦合系数模型_期刊在线 | 基于ALE流固耦合方法的刷式密封泄漏特性理论与实验研究...

01引言刷式密封是一种广泛应用于航空发动机等透平机械的优良接触式动密封[]。近年来,随着透平机械逐渐向高参数方向发展,由刷式密封引起的泄漏损失越来越大,直接影响透平机械的工作效率。因此开展刷式密封的泄漏流动特性研究具有重要理论和实…

设备管理器android感叹号,设备管理器其他设备感叹号

设备管理器其他设备感叹号客观地讲,常规的设备管理器问题与设备管理器在哪,设备管理其怎么打开以及设备管理其其他设备感叹号是什么问题等。本文重点介绍设备设备管理器其他设备感叹号相关问题,希望能够为对此有需求的朋友提供参考或帮助。设…

android studio 集成 第三方sdk,Android FrameWork集成第三方SDK的jar包和so庫

本文講解的如何在Android FrameWork如何集成XXXsdk的jar包和so庫首先在framework/opt/建立XXSDK的文件夾講jar包和so庫拷貝進去1:framework/opt/xxsdk/然后直接看Android.mk就行# Copyright (C) 2009 The Android Open Source Project## Licensed under the Apache License, Ve…

unity要学ecs吗_ECS的泛泛之谈

这篇文章将带着你从设计出发重新发现ECS。注意:此篇为泛泛之谈,不涉及具体实现。从Abstract说起从”是”到”能”再到”有”对对象的抽象是整理代码的要点,继承是一种比较古老并常见的抽象,其描述了一个对象"是"什么,其…

条令考试小程序辅助器_计算机一级考试干货!

计算机一级考试干货一年两度的计算机等级考试就要在2019年3月30-31日期间开始啦!为了更好的让同学们了解考试的大体内容,我们已整理如下内容,可以供大家参考。同时,希望大家认真备考,争取都一次性过哦!考试…

android文件系统只读,android

>>#1 票数:408最近,我扎根了Droid X,一切似乎都运转良好。 我对build.prop进行了一些更改,当我执行adb push build.prop /system/ ,出现以下错误: failed to copy c:\\build.prop to /system//build.…