《网络协议分析与实现》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:胡维华等著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2012
  • ISBN:9787040347364
  • 页数:368 页
图书介绍:本书是浙江重点教材建设项目“网络工程专业系列教材”之一。本书采用自底向上的方法来分析TCP/IP协议族的核心源代码,主要内容包括TCP/IP协议概述、底层技术、ARP协议、IP协议、ICMP协议、IGMP协议、RIP协议、UDP协议、TCP协议、网络应用编程接口等,最后通过网络应用编程实例来介绍典型网络应用程序的设计思想和开发步骤,加深学生对网络理论的理解,提高学生的网络编程与软件开发能力。本书既可作为高等学校网络工程专业、计算机科学与技术等电气信息类专业相关课程教材,也可供网络工程从业人员参考。

第1章 TCP/IP概述 1

1.1 网络互联与TCP/IP 1

1.1.1 计算机网络 1

1.1.2 网络互联 2

1.1.3 TCP/IP协议栈 3

1.2 网络协议的分层 4

1.2.1 分层的网络体系结构 4

1.2.2 TCP/IP模型 7

1.2.3 多路复用和分解 7

1.2.4 TCP/IP编址 8

1.3 TCP/IP协议栈及其分析 9

1.3.1 TCP/IP协议栈 9

1.3.2 协议栈的处理流程 10

1.3.3 设备驱动程序和输入输出程序 11

1.3.4 网络接口层处理程序 12

1.3.5 IP层处理程序 12

1.3.6 传输层处理程序 13

1.3.7 应用编程接口 13

1.4 本书的代码组织 14

1.4.1 研究代码的重要性 14

1.4.2 XINU的TCP/IP协议栈源代码 14

1.4.3 应用层示例源代码 15

习题 15

第2章 底层技术 16

2.1 HDLC协议 16

2.1.1 HDLC协议介绍 16

2.1.2 帧格式 16

2.1.3 帧类型和HDLC操作 17

2.1.4 HDLC协议的应用 18

2.2 PPP 18

2.2.1 SLIP与PPP 18

2.2.2 PPP组件 19

2.2.3 PPP的帧格式 19

2.2.4 PPP工作流程 20

2.2.5 PPP应用 20

2.3 以太网及IEEE 802.3 21

2.3.1 以太网技术 21

2.3.2 CSMA/CD 21

2.3.3 帧格式 21

2.4 无线局域网及IEEE 802.11 22

2.4.1 无线局域网简介 22

2.4.2 CSMA/CA 23

2.4.3 IEEE 802.11帧格式 24

2.5 网卡驱动和网络接口层的实现 25

2.5.1 以太网接口数据结构 25

2.5.2 以太网网卡驱动程序 26

2.5.3 网络接口层数据结构 28

2.5.4 网络接口层处理流程 31

2.5.5 网络接口层的多路分解 32

2.5.6 网络初始化 34

习题 39

第3章 ARP 41

3.1 ARP的基本原理 41

3.2 ARP报文格式和封装 41

3.2.1 ARP报文格式 41

3.2.2 ARP报文结构的实现 42

3.3 ARP软件整体结构 43

3.4 ARP输入处理 44

3.5 发送ARP请求报文 48

3.6 ARP缓冲区的管理 51

3.6.1 ARP缓冲区结构的实现 51

3.6.2 ARP缓冲区维护函数 52

3.7 ARP攻击 55

习题 55

第4章 IP 56

4.1 IP的基本原理 56

4.2 IP数据报格式 56

4.2.1 IP数据报格式 56

4.2.2 IP数据报结构的实现 57

4.3 IP软件整体结构 59

4.4 IP输入处理 61

4.4.1 IP进程的实现 61

4.4.2 IP定向广播 66

4.5 IP输出处理 70

4.5.1 IP输出处理 70

4.5.2 将IP数据报交付上层协议 74

4.6 IP数据报的分片与重组 76

4.6.1 分片结构的实现 76

4.6.2 IP数据报分片 77

4.6.3 IP数据报重组 79

4.7 IP选路 85

4.7.1 路由表基本结构 86

4.7.2 路由选择 87

4.7.3 路由重定向的实现 89

4.8 IPv6 91

习题 92

第5章 ICMP 93

5.1 ICMP的基本原理 93

5.2 ICMP报文格式 93

5.2.1 ICMP报文格式 93

5.2.2 ICMP报文结构的实现 94

5.3 ICMP软件整体结构 96

5.4 ICMP输入处理 96

5.4.1 ICMP输入处理函数 96

5.4.2 ICMP重定向报文的处理 101

5.5 发送ICMP报文 103

5.6 PING程序的实现 107

5.7 ICMPv6 108

习题 108

第6章 IGMP 109

6.1 IGMP的基本原理 109

6.2 IGMP报文格式 109

6.2.1 IGMP报文格式 109

6.2.2 IGMP报文结构的实现 110

6.3 IGMP软件整体结构 110

6.4 主机端的IGMP输入处理 111

6.5 IGMP事件处理进程 117

6.6 主机群表的建立与维护 118

6.7 路由器端IGMP实现概述 123

习题 125

第7章 RIP 126

7.1 RIP的基本原理 126

7.2 RIP报文格式 127

7.2.1 RIP报文格式 127

7.2.2 RIP报文结构的实现 127

7.3 RIP软件整体结构 129

7.4 RIP输入处理 129

7.4.1 RIP输入进程的实现 129

7.4.2 RIP通告报文的处理 132

7.4.3 RIP请求报文的处理 134

7.5 RIP报文输出进程 136

7.5.1 RIP接口输出控制结构 136

7.5.2 RIP输出进程的实现 137

7.5.3 发送一个RIP通告报文 139

7.5.4 构造RIP通告报文 141

7.5.5 为RIP通告报文计算路由度量值 143

7.6 路由表的更新与维护 144

7.6.1 路由表项的添加 144

7.6.2 路由表项的定时维护 150

7.7 OSPF 153

习题 154

第8章 UDP 155

8.1 UDP的基本原理 155

8.2 UDP数据报格式 155

8.2.1 UDP数据报格式 155

8.2.2 UDP数据报结构的实现 156

8.3 UDP软件整体结构 157

8.4 UDP输入处理 157

8.5 UDP输出处理 160

8.6 Traceroute程序的实现 163

习题 163

第9章 TCP 164

9.1 TCP的基本原理 164

9.2 TCP报文段格式 165

9.2.1 TCP报文段格式 165

9.2.2 TCP报文段结构的实现 166

9.3 TCP软件整体结构 167

9.4 TCP控制块结构 169

9.5 TCP状态机的实现 173

9.6 TCP输入进程及输入状态机 175

9.6.1 TCP输入进程的实现 175

9.6.2 TCP输入状态机 178

9.6.3 TCP对输入数据的处理 189

9.6.4 输入ACK报文段的处理 192

9.7 TCP输出进程及输出状态机 195

9.7.1 TCP输出进程 195

9.7.2 TCP输出状态机的实现 197

9.7.3 发送TCP报文段 204

9.8 流量控制和拥塞控制 210

9.8.1 设定发送方窗口通告值 210

9.8.2 设定接收方窗口通告值 212

9.8.3 估算往返时延并设定重传时间和拥塞窗口 214

9.9 TCP定时器管理 216

9.9.1 TCP定时结构 217

9.9.2 TCP定时进程的实现 217

习题 220

第10章 网络应用编程接口 221

10.1 网络应用程序 221

10.2 网络应用模式 221

10.3 网络编程接口 223

10.3.1 Socket编程基本概念 223

10.3.2 Socket地址结构 227

10.3.3 Socket接口函数 227

10.3.4 Socket编程模型 230

10.4 多线程编程 231

10.4.1 线程创建 231

10.4.2 线程属性 231

10.4.3 线程同步 232

10.4.4 线程取消 235

10.4.5 线程终止 236

10.5 I/O编程 236

10.5.1 I/O模型 236

10.5.2 高级I/O函数 239

10.5.3 非阻塞I/O 241

10.5.4 I/O复用 242

习题 244

第11章 网络应用编程实例 245

11.1 UDP套接字的简单应用——TIME的实现 245

11.1.1 TIME简介 245

11.1.2 TIME客户端程序 245

11.1.3 connectUDP()函数 248

11.1.4 connectsock()函数 248

11.1.5 TIME服务器端程序 251

11.1.6 passivesock()函数 253

11.2 TCP套接字的简单应用——DAYTIME的实现 255

11.2.1 DAYTIME简介 255

11.2.2 DAYTIME客户端程序 256

11.2.3 DAYTIME服务器端程序 257

11.3 利用多路I/O和多线程编程——ECHO的实现 260

11.3.1 ECHO简介 260

11.3.2 ECHO客户端程序 260

11.3.3 ECHO服务器端程序 263

11.3.4 tcp_listen()函数 266

11.4 网络客户端实例(1)——TELNET客户端的实现 268

11.4.1 TELNET简介 268

11.4.2 TELNET协议数据结构 269

11.4.3 TELNET客户端程序 273

11.4.4 telnet()函数 274

11.4.5 connectTCP()函数 278

11.4.6 ttwrite()函数 278

11.4.7 sowrite()函数 279

11.5 网络客户端实例(2)——TFTP客户端的实现 280

11.5.1 TFTP简介 280

11.5.2 TFTP报文首部数据结构 282

11.5.3 TFTP客户端程序 283

11.5.4 command()函数 287

11.5.5 recvfile()函数 288

11.5.6 sendfile()函数 293

11.5.7 makerequest()函数 298

11.5.8 nak()函数 298

11.6 原始套接字的应用——PING的实现 300

11.6.1 PING简介 300

11.6.2 PING程序主函数的处理流程 301

11.6.3 catcher()函数 311

11.6.4 pinger()函数 313

11.6.5 pr_pack()函数 315

11.6.6 in_cksum()函数 322

11.6.7 pr_icmph()函数 323

11.6.8 pr_iph()函数 326

11.6.9 pr_addr()函数 327

11.6.10 pr_retip()函数 328

11.6.11 finish()函数 329

11.6.12 其他函数 330

习题 330

附录A 图表索引 331

附录B 相关函数和宏参考表 335

附录C 实验环境搭建方法 359

参考文献 368