18回答

0收藏

Linux网络编程(第2版) PDF 电子书 X0153

电子书 电子书 351 人阅读 | 18 人回复 | 2024-02-09

Java电子书:Linux网络编程(第2版)    PDF 电子书 Java吧 java8.com0 M0 d. H+ V, s$ r2 @

/ |+ z2 f9 ~9 p2 _! p) ?作者:宋敬彬出版社:清华大学出版社
7 v% B+ E5 ~8 G9 t9 m5 V; F3 Z9 T; r
编号:166-Java吧资源免费-X0153【Java吧 java8.com】8 q) L& V, }1 O. k# B

4 \$ i+ t5 ]$ y8 N. F
/ m2 @1 p$ _1 e6 i$ w6 g8 p, V  Q4 _
# z  M( M, q; G' W: O( L3 q
目录:7 L6 W% |* s3 W( U+ {( v

第1篇  Linux网络开发基础

第1章  Linux作系统概述 2

1.1  Linux发展 2

1.1.1  Linux的诞生和发展 2

1.1.2  Linux名称的由来 3

1.2  Linux的发展要素 3

1.2.1  UNIX作系统 3

1.2.2  Minix作系统 4

1.2.3  POSIX 标准 4

1.3  Linux与UNIX的异同 5

1.4  作系统类型选择和内核版本的选择 5

1.4.1  常见的不同公司发行的Linux异同 5

1.4.2  内核版本的选择 6

1.5  Linux的系统架构 7

1.5.1  Linux内核的主要模块 7

1.5.2  Linux的文件结构 8

1.6  GNU通用公共许可证 9

1.6.1  GPL许可证的 9

1.6.2  GPL的自由理念 10

1.6.3  GPL的基本条款 11

1.6.4  关于GPL许可证的争议 12

1.7  Linux软件开发的可借鉴之处 12

1.8  小结 13

第2章  Linux编程环境 14

2.1  Linux环境下的编辑器 14

2.1.1  Vim使用简介 14

2.1.2  使用Vim建立文件 15

2.1.3  使用Vim编辑文本 16

2.1.4  Vim的格式设置 18

2.1.5  Vim配置文件.vimrc 18

2.1.6  使用其他编辑器 19

2.2  Linux下的GCC编译器工具集 19

2.2.1  GCC简介 19

2.2.2  编译程序的基本知识 21

2.2.3  单个文件编译成执行文件 21

2.2.4  编译生成目标文件 22

2.2.5  多文件编译 22

2.2.6  预处理 24

2.2.7  编译成汇编语言 24

2.2.8  生成和使用静态库 25

2.2.9  生成动态库 26

2.2.10  动态加载库 29

2.2.11  GCC常用选项 31

2.2.12  编译环境的搭建 33

2.3  Makefile文件简介 33

2.3.1  个多文件的工程例子 33

2.3.2  多文件工程的编译 35

2.3.3  Makefile的规则 37

2.3.4  Makefile中使用变量 39

2.3.5  搜索路径 42

2.3.6  自动推导规则 43

2.3.7  递归make 44

2.3.8  Makefile中的函数 46

2.4  用GDB调试程序 47

2.4.1  编译可调试程序 48

2.4.2  使用GDB调试程序 49

2.4.3  GDB常用命令 52

2.4.4  其他的GDB 59

2.5  小结 60

第3章  文件系统简介 61

3.1  Linux下的文件系统 61

3.1.1  Linux下文件的内涵 61

3.1.2  文件系统的建 62

3.1.3  挂接文件系统 65

3.1.4  索引节点inode 65

3.1.5  普通文件 66

3.1.6  设备文件 66

3.1.7  虚拟文件系统VFS 68

3.2  文件的通用作方法 72

3.2.1  文件描述符 72

3.2.2  打开建文件open()函数、create()函数 73

3.2.3  关闭文件close()函数 76

3.2.4  读取文件read()函数 77

3.2.5  写文件write()函数 79

3.2.6  文件偏移lseek()函数 80

3.2.7  获得文件状态fstat()函数 83

3.2.8  文件空间映射mmap()函数 85

3.2.9  文件属性fcntl()函数 88

3.2.10  文件输入输出控制ioctl()函数 92

3.3  socket文件类型 93

3.4  小结 93

第4章  程序、进程和线程 94

4.1  程序、进程和线程的概念 94

4.1.1  程序和进程的差别 94

4.1.2  Linux环境下的进程 95

4.1.3  进程和线程 96

4.2  进程产生的方式 96

4.2.1  进程号 96

4.2.2  进程复制fork()函数 97

4.2.3  system()函数方式 98

4.2.4  进程执行exec()函数系列 99

4.2.5  所有用户态进程的产生进程init 100

4.3  进程间通信和同步 101

4.3.1  半双工管道 101

4.3.2  命名管道 107

4.3.3  消息队列 108

4.3.4  消息队列的个例子 114

4.3.5  信号量 116

4.3.6  共享内存 121

4.3.7  信号 124

4.4  Linux下的线程 127

4.4.1  多线程编程实例 127

4.4.2  Linux下线程建函数pthread_create() 129

4.4.3  线程的结束函数pthread_join()和函数pthread_exit() 129

4.4.4  线程的属性 130

4.4.5  线程间的互斥 132

4.4.6  线程中使用信号量 133

4.5  小结 136

( a5 v2 a0 F6 @# [& z1 h; m

第2篇  Linux用户层网络编程

第5章  TCP/IP协议族简介 138

5.1  OSI网络分层介绍 138

5.1.1  OSI网络分层结构 138

5.1.2  OSI的7层网络结构 139

5.1.3  OSI参考模型中的数据传输 140

5.2  TCP/IP协议栈 141

5.2.1  TCP/IP协议栈参考模型 141

5.2.2  主机到网络层协议 143

5.2.3  IP协议 144

5.2.4  网际控制报文协议(ICMP) 146

5.2.5  传输控制协议(TCP) 150

5.2.6  用户数据报文协议(UDP) 154

5.2.7  地址解析协议(ARP) 156

5.3  IP地址分类与TCP/UDP端口 158

5.3.1  因网中IP地址的分类 159

5.3.2  子网掩码(subnet mask address) 161

5.3.3  IP地址的配置 162

5.3.4  端口 163

5.4  主机字节序和网络字节序 163

5.4.1  字节序的含义 163

5.4.2  网络字节序的转换 164

5.5  小结 166

第6章  应用层网络服务程序简介 167

6.1  HTTP协议和服务 167

6.1.1  HTTP协议概述 167

6.1.2  HTTP协议的基本过程 168

6.2  FTP协议和服务 170

6.2.1  FTP协议概述 170

6.2.2  FTP协议的工作模式 172

6.2.3  FTP协议的传输方式 172

6.2.4  个简单的FTP过程 173

6.2.5  常用的FTP工具 173

6.3  TELNET协议和服务 173

6.3.1  远程登录的基本概念 174

6.3.2  使用TELNET协议进行远程登录的工作过程 174

6.3.3  TELNET协议 174


: y6 F7 Y: d* D1 O* l' h$ z

6.4  NFS协议和服务 175

6.4.1  安装NFS服务器和客户端 175

6.4.2  服务器端的设定 176

6.4.3  客户端的作 176

6.4.4  showmount命令 177

6.5  自定义网络服务 177

6.5.1  xinetd/inetd 177

6.5.2  xinetd服务配置 178

6.5.3  自定义网络服务 179

6.6  小结 180

第7章  TCP网络编程基础 181

7.1  套接字编程基础知识 181

7.1.1  套接字地址结构 181

7.1.2  用户层和内核层交互过程 183

7.2  TCP网络编程流程 184

7.2.1  TCP网络编程架构 184

7.2.2  建网络口函数socket() 186

7.2.3  绑定个地址端口对函数bind() 189

7.2.4  监听本地端口listen 192

7.2.5  接受个网络请求函数accept() 194

7.2.6  连接目标网络服务器函数connect() 199

7.2.7  写入数据函数write() 200

7.2.8  读取数据函数read() 201

7.2.9  关闭套接字函数 202

7.3  服务器/客户端的简单例子 202

7.3.1  例子功能描述 202

7.3.2  服务器网络程序 202

7.3.3  服务器读取和显示字符串 205

7.3.4  客户端的网络程序 205

7.3.5  客户端读取和显示字符串 206

7.3.6  编译运行程序 206

7.4  截取信号的例子 207

7.4.1  信号处理 207

7.4.2  信号SIGPIPE 207

7.4.3  信号SIGINT 208

7.5  小结 208

第8章  服务器和客户端信息的获取 209

8.1  字节序 209

8.1.1  大端字节序和小端字节序 209

8.1.2  字节序转换函数 211

8.1.3  个字节序转换的例子 213

8.2  字符串IP地址和二进制IP地址的转换 216

8.2.1  inet_xxx()函数 216

8.2.2  inet_pton()和inet_ntop()函数 218

8.2.3  使用8.2.1节地址转换函数的例子 219

8.2.4  使用函数inet_pton()和函数inet_ntop()的例子 221

8.3  套接字描述符判定函数issockettype() 222

8.3.1  进行文件描述符判定的函数issockettype() 222

8.3.2  main()函数 223

8.4  IP地址与域名之间的相互转换 223

8.4.1  DNS原理 223

8.4.2  获取主机信息的函数 224

8.4.3  使用主机名获取主机信息的例子 227

8.4.4  函数gethostbyname()不可重入的例子 229

8.5  协议名称处理函数 230

8.5.1  xxxprotoxxx()函数 231

8.5.2  使用协议族函数的例子 232

8.6  小结 235

第9章  数据的IO和复用 236

9.1  IO函数 236

9.1.1  使用recv()函数接收数据 236

9.1.2  使用send()函数发送数据 238

9.1.3  使用readv()函数接收数据 239

9.1.4  使用writev()函数发送数据 239

9.1.5  使用recvmsg()函数接收数据 241

9.1.6  使用sendmsg()函数发送数据 243

9.1.7  IO函数的比较 245

9.2  使用IO函数的例子 245

9.2.1  客户端处理框架的例子 245

9.2.2  服务器端程序框架 247

9.2.3  使用recv()和send()函数 248

9.2.4  使用readv()和write()函数 250

9.2.5  使用recvmsg()和sendmsg()函数 252

9.3  IO模型 255

9.3.1  阻塞IO模型 255

9.3.2  非阻塞IO模型 255

9.3.3  IO复用 256

9.3.4  信号驱动IO模型 256

9.3.5  异步IO模型 257


$ V) b2 k# c* T  \2 r' K) A# @

9.4  select()函数和pselect()函数 258

9.4.1  select()函数 258

9.4.2  pselect()函数 260

9.5  poll()函数和ppoll()函数 261

9.5.1  poll()函数 261

9.5.2  ppoll()函数 262

9.6  非阻塞编程 263

9.6.1  非阻塞方式程序设计介绍 263

9.6.2  非阻塞程序设计的例子 263

9.7  小结 264

第10章  基于UDP协议的接收和发送 265

10.1  UDP编程框架 265

10.1.1  UDP编程框图 265

10.1.2  UDP服务器编程框架 267

10.1.3  UDP客户端编程框架 267

10.2  UDP协议程序设计的常用函数 267

10.2.1  建立套接字socket()和绑定套接字bind() 268

10.2.2  接收数据recvfrom()/recv() 268

10.2.3  发送数据sendto()/send() 273

10.3  UDP接收和发送数据的例子 277

10.3.1  UDP服务器端 277

10.3.2  UDP服务器端数据处理 278

10.3.3  UDP客户端 279

10.3.4  UDP客户端数据处理 279

10.3.5  测试UDP程序 280

10.4  UDP协议程序设计中的几个问题 280

10.4.1  UDP报文丢失数据 280

10.4.2  UDP数据发送中的乱序 282

10.4.3  UDP协议中的connect()函数 284

10.4.4  UDP缺乏流量控制 285

10.4.5  UDP协议中的外出网络接口 287

10.4.6  UDP协议中的数据报文截断 288

10.5  小结 289

第11章  高级套接字 290

11.1  UNIX域函数 290

11.1.1  UNIX域函数的地址结构 290

11.1.2  套接字函数 291

11.1.3  使用UNIX域函数进行套接字编程 291

11.1.4  传递文件描述符 293

11.1.5  socketpair()函数 294

11.1.6  传递文件描述符的例子 295

11.2  广播 299

11.2.1  广播的IP地址 300

11.2.2  广播与单播的比较 300

11.2.3  广播的示例 301

11.3  多播 307

11.3.1  多播的概念 308

11.3.2  广域网的多播 308

11.3.3  多播的编程 308

11.3.4  内核中的多播 310

11.3.5  个多播例子的服务器端 313

11.3.6  个多播例子的客户端 315

11.4  数据链路层访问 317

11.4.1  SOCK_PACKET类型 317

11.4.2  设置套接口以捕获链路帧的编程方法 317

11.4.3  从套接口读取链路帧的编程方法 318

11.4.4  定位IP头的编程方法 319

11.4.5  定位TCP报头的编程方法 321

11.4.6  定位UDP报头的编程方法 322

11.4.7  定位应用层报文数据的编程方法 323

11.4.8  使用SOCK_PACKET编写ARP请求程序的例子 323

11.5  小结 326

第12章  套接字选项 328

12.1  获取和设置套接字选项getsocketopt()/setsocketopt() 328

12.1.1  getsockopt()函数和setsocketopt()函数的介绍 328

12.1.2  套接字选项 329

12.1.3  套接字选项简单示例 330

12.2  SOL_SOCKET协议族选项 334

12.2.1  SO_BROADCAST广播选项 334

12.2.2  SO_DEBUG调试选项 335

12.2.3  SO_DONTROUTE不经过路由选项 335

12.2.4  SO_ERROR错误选项 335

12.2.5  SO_KEEPALIVE持连接选项 336

12.2.6  SO_LINGER缓冲区处理方式选项 337

12.2.7  SO_OOBINLINE带外数据处理方式选项 339

12.2.8  SO_RCVBUF和SO_SNDBUF缓冲区大小选项 340

12.2.9  SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项 340

12.2.10  SO_RCVTIMEO和SO_SNDTIMEO收发时选项 341

12.2.11  SO_REUSERADDR地址重用选项 341

12.2.12  SO_EXCLUSIVEADDRUSE端口占选项 342

12.2.13  SO_TYPE套接字类型选项 342

12.2.14  SO_BSDCOMPAT与BSD套接字兼容选项 342

12.2.15  SO_BINDTODEVICE套接字网络接口绑定选项 343

12.2.16  SO_PRIORITY套接字先级选项 344

12.3  IPPROTO_IP选项 344

12.3.1  IP_HDRINCL选项 344

12.3.2  IP_OPTNIOS选项 344

12.3.3  IP_TOS选项 344

12.3.4  IP_TTL选项 345

12.4  IPPROTO_TCP选项 345

12.4.1  TCP_KEEPALIVE选项 345

12.4.2  TCP_MAXRT选项 346

12.4.3  TCP_MAXSEG选项 346

12.4.4  TCP_NODELAY和TCP_CORK选项 346

12.5  使用套接字选项 348

12.5.1  设置和获取缓冲区大小 348

12.5.2  获取套接字类型的例子 353

12.5.3  使用套接字选项的综合例子 353

12.6  ioctl()函数 358

12.6.1  ioctl()函数的命令选项 358

12.6.2  ioctl()函数的IO请求 360

12.6.3  ioctl()函数的文件请求 362

12.6.4  ioctl()函数的网络接口请求 362

12.6.5  使用ioctl()函数对ARP高速缓存作 369

12.6.6  使用ioctl()函数发送路由表请求 371

12.7  fcntl()函数 371

12.7.1  fcntl()函数的选项 372

12.7.2  使用fcntl()函数修改套接字非阻塞属性 372

12.7.3  使用fcntl()函数设置信号属主 372

12.8  小结 373

第13章  原始套接字 374

13.1  概述 374

13.2  原始套接字的建 375

13.2.1  SOCK_RAW选项 375

13.2.2  IP_HDRINCL套接字选项 376

13.2.3  不需要bind()函数 376

13.3  原始套接字发送报文 376

13.4  原始套接字接收报文 377

13.5  原始套接字报文处理时的结构 377

13.5.1  IP头的结构 377

13.5.2  ICMP头结构 378

13.5.3  UDP头结构 381

13.5.4  TCP头结构 382

13.6  ping的例子 384

13.6.1  协议格式 384

13.6.2  校验和函数 385

13.6.3  设置ICMP发送报文的头 386

13.6.4  剥离ICMP接受报文的头 387

13.6.5  计算时间差 388

13.6.6  发送报文 389

13.6.7  接收报文 390

13.6.8  主函数过程 391

13.6.9  主函数main() 393

13.6.10  编译测试 396

13.7  洪水攻击 396

13.8  ICMP洪水攻击 397

13.8.1  ICMP洪水攻击的原理 397

13.8.2  ICMP洪水攻击的例子 397

13.9  UDP洪水攻击 401

13.10  SYN洪水攻击 405

13.10.1  SYN洪水攻击的原理 405

13.10.2  SYN洪水攻击的例子 405

13.11  小结 409

第14章  服务器模型选择 410

14.1  循环服务器 410

14.1.1  UDP循环服务器 410

14.1.2  TCP循环服务器 413

14.2  简单并发服务器 415

14.2.1  并发服务器的模型 416

14.2.2  UDP并发服务器 416

14.2.3  TCP并发服务器 419

14.3  TCP的高级并发服务器模型 421

14.3.1  单客户端单进程,统accept() 422

14.3.2  单客户端单线程,统accept() 425

14.3.3  单客户端单线程,各线程自accept(),使用互斥锁 427

14.4  IO复用循环服务器 431

14.4.1  IO复用循环服务器模型介绍 431

14.4.2  IO复用循环服务器模型的例子 432

14.5  小结 436


3 p" j% @, t+ j- ~. G

第15章  IPv6简介 437

15.1  IPv4的缺陷 437

15.2  IPv6的点 438

15.3  IPv6的地址 439

15.3.1  IPv6的单播地址 439

15.3.2  可聚集全球单播地址 439

15.3.3  本地使用单播地址 440

15.3.4  兼容性地址 441

15.3.5  IPv6多播地址 441

15.3.6  IPv6任播地址 442

15.3.7  主机的多个IPv6地址 442

15.4  IPv6的头 443

15.4.1  IPv6头格式 443

15.4.2  与IPv4头的对比 444

15.4.3  IPv6的TCP头 444

15.4.4  IPv6的UDP头 444

15.4.5  IPv6的ICMP头 445

15.5  IPv6运行环境 447

15.5.1  加载IPv6模块 447

15.5.2  查看是否支持IPv6 447

15.6  IPv6的结构定义 448

15.6.1  IPv6的地址族和协议族 448

15.6.2  套接字地址结构 448

15.6.3  地址兼容考虑 450

15.6.4  IPv6通用地址 450

15.7  IPv6的套接字函数 451

15.7.1  socket()函数 451

15.7.2  没有发生改变的函数 451

15.7.3  发生改变的函数 452

15.8  IPv6的套接字选项 452

15.8.1  IPv6的套接字选项 452

15.8.2  单播跳限IPV6_UNICAST_HOPS 453

15.8.3  发送和接收多播 454

15.8.4  IPv6中获得时间戳的ioctl命令 455

15.9  IPv6的库函数 455

15.9.1  地址转换函数的差异 455

15.9.2  域名解析函数的差异 455

15.9.3  测试宏 458

15.10  IPv6的编程的个简单例子 458

15.10.1  服务器程序 458

15.10.2  客户端程序 460

15.10.3  编译调试 461

15.11  小结 462 java8.com

第3篇  Linux内核网络编程

第16章  Linux内核中网络分结构以及分布 464

16.1  概述 464

16.1.1  代码目录分布 464

16.1.2  内核中网络分流程简介 466

16.1.3  系统提供修改网络流程点 468

16.1.4  sk_buff结构 469

16.1.5  网络协议数据结构inet_protosw 471


- I3 q+ H; c" R

3 j' P' g2 }7 }( q2 ]6 w
百度云盘下载地址(完全免费-绝无套路):
游客,如果您要查看本帖隐藏内容请回复
/ H* \) D+ }" P) ~) M0 n
) W' T; d5 z; {; B
* h4 r4 j8 S2 h
1 n$ \! [# _. v3 N; p) D

9 _+ M) ^- f9 {  C* O7 y

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关注下面的标签,发现更多相似文章
分享到:

回答|共 18 个

狮泉河

发表于 2024-2-9 16:56:34 | 显示全部楼层

良心网站,力挺

晨曦中的白荷

发表于 2024-2-9 17:38:10 | 显示全部楼层

资源很新 好好好

快乐之英

发表于 2024-2-9 18:18:34 | 显示全部楼层

免费资源 真的无套路

为了你我愿意

发表于 2024-2-9 18:59:30 | 显示全部楼层

白漂来了

十三太爷

发表于 2024-2-9 19:40:43 | 显示全部楼层

免费资源 真的无套路

辉常开心

发表于 2024-2-9 20:22:38 | 显示全部楼层

免费资源 真的无套路

酸果

发表于 2024-2-9 21:03:39 | 显示全部楼层

不错,好资源

红色

发表于 2024-2-9 21:44:42 | 显示全部楼层

路过,收下了,不错的论坛

吹散的烟

发表于 2024-2-9 22:26:22 | 显示全部楼层

都是干货,谢谢啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则