读书之unix网络编程卷1_简单笔记(初步)

本文概述了作者在阅读技术书籍时关于Unix网络编程的笔记,包括UDP/TCP/SCTP协议简介,网络应用示例,套接字编程,信号处理,守护进程,I/O操作,多播通信,原始套接字,流控制,以及客户服务器设计模式等内容。
摘要由CSDN通过智能技术生成

手头有比较多的技术书籍,弃之可惜,放之惭愧,借助空闲时间,先草读,再demo整理。

unix网络编程卷1 草读简单笔记,为下一步整理细节技术点做准备。

1:udp, tcp,sctp简述

2:telnet的使用 /etc/services

3:常见的因特网应用协议

3:字节序 以及字节序函数 ip和数值转换函数

4:tcp套接字

socket connect listen accept

fork和exec

5:tcp客户 服务端程序 信号

信号 accept等函数 底层实际是信号触发,返回EINTR (阻塞类函数)

wait waitpid 等待子进程结束

demo:服务器每来一个连接,创建子进程,父进程监听子进程的信号终止。

===>主要模拟各种,服务器进程,服务器崩溃等场景。

rst复位报文

init进程对其他进程的控制

7:套接字选项 setsockopt getsockopt

缓冲区大小 MSS SO_RCVBUF nagle算法 ack延迟算法

sctp以及相关套接字

fcntl

8: udp套接字 (DNS NFS SNMP)

udp通信前 arp的交换

udp的connect

udp缺乏流量控制 tcpdump查看相关的显示,缓冲区满了丢弃

增大udp接收缓冲区

9:SCTP套接字 (可靠的面向消息协议)

10:SCTP demo 客户端服务端例子

11:名字和地址转换

域名系统DNS

通过端口获取服务信息,主机名,ip等

getaddrinfo()

获取服务器时间的客户端,服务端代码demo

相关函数的可重入性。

dns和sendmail 的使用

12:ipv4和ipv6互操作性

13:守护进程和inetd超级服务器 (demo)

inetd超级服务器 自动启动相关的服务器 Telnet ftp

syslogd 收集日志

daemon_init 守护进程

inetd守护进程 配置后另外的终端连接能远程执行配置中的代码。 daemon_inetd

14:高级I/O 函数

套接字超时 alarm函数 信号触发 demo

sigsetjmp siglongjmp

select设置超时

SO_RCVTIMEO设置超时

recv和send最后一个参数 路由表?

readv 和writev recvmsg和sendmsg

辅助数据 tcp udp unix域

标准IO函数库: 完全缓冲,行缓冲,不缓冲。

poll,kqueue(可以设置关注事件),

T/TCP 事务目的的tcp

15:Unix域协议

unix域demo以及获取凭据 ===》进程间通信

16:非阻塞IO

相关demo 以及tcp三次握手中的rst等报文发送测试

17:ioctl操作

通过该接口可以获取主机的所有ip,设备等?

与arp相关获取硬件地址。

ioctl操作路由表

18:路由套接字

创建socket 演示操作路由表相关

sysctl 指令和函数的使用, 判断udp校验和是否开启的demo

返回所有接口

返回所有接口名字和索引 demo

19:秘钥管理套接字

IPsec ? 什么原理

demo 静态 动态

安装后自己使用?

20:广播

ipv6不支持广播

用于udp和ip

arp dhcp NTP 路由守护进程

单播的流程 目的mac地址 广播时目的mac地址全f arp ipv4 ipv6等的头标识是啥

有的系统不允许内核对广播数据进行ip分片, 大于MTU

阻塞和pselect解阻塞的demo pselect的实现demo

sigsetjmp siggetjmp 解决竞态

使用ipc 管道的方式解决竞态 demo

21:多播

多播的原理与mac的关系?

多播地址的范围

局域网上的多播和广域网上多播(路由器多播路由协议)的区别

源特定多播(相关套接字)

mcast_join 加入多播等一系列的函数 demo 主要还是setsockopt的使用

sap 会话声明多播demo

发送和接收多播 demo

SNTP 简单网络时间协议demo 毫秒级别精度

22:高级udp套接字(考虑可靠性) 不应该海量数据?

demo

应用udp的场景:支持多播广播。简单请求应答(错误检查 )。

文件传输不应该用udp,错误检查机制,流量控制,拥塞控制,慢启动逻辑等要考虑。 (有例外 http中udp传文件)

增加序号,处理超时和重传 评估因子 demo

捆绑接口地址 demo

并发udp服务器 (参考TFTP) demo (udp面向数据报 和tcp有明显差异)

ipv6分组相关 如设置地址,指定跳限,MTU,分片等demo

23:SCTP套接字

相关demo理解sctp,以及与tcp的差异和使用场景

24:带外数据(紧急?高优先级?) 实际是紧急指针

tcp带外数据的原理和demo

MSG_OOB 设置紧急数据 以及select等实现 demo

tcp带外数据 发送和接收端的demo

心跳函数 demo (用带外数据?)

带外数据使用场景 telnet rlogin ftp

25:信号驱动IO

fcntl SIGIO

udp和tcp中信号驱动作用

基于SIGIO实现udp回射程序demo

26:线程

线程系列函数 以及demo

给线程传递参数

考虑线程安全的相关函数 demo

互斥锁 条件变量 demo

27:ip选项

记录原路径?删除记录的原路径 demo 存入路径ip

ipv6头部协议 扩展首部相关

ipv6路由首部

28:原始套接字

ICMP igmp udp tcp ospf ping traceroute

原始套接字读icmp?

ping命令 icmp(支持ipv6) demo

traceroute demo

icmp守护进程 本地socket+上面两个demo吗?

29:数据链路访问

tcpdump rarp等

bpf :bsd分组过滤器 (虚拟技术)

dlpi:数据链路提供者接口

SOCK_PACKET PF_PACKET

libpcap 分组捕获函数库

libnet 分组构造和输出函数库

使用原始套接字分组捕获 校验udp的校验和字段Demo

libnet代替原始套接字 demo

公开课 libpcap的使用 处理链路访问

30:客户,服务端程序设计范式

研究不同形式的服务器。

客户端测试程序

服务器子进程方式

预先分配子进程 accept未加锁 加锁

传递描述符给子进程(管道?)

每个客户一个子线程

每个线程各自accept

主线程统一accept

31:流

getmsg putmsg ioctl

传输提供者接口 demo

汇总

ipv4 ipv6 icmpipv4 icmpipv6 协议

ipv4地址 子网地址和环回地址

ipv6地址 单播地址

ipv4映射ipv6地址

虚拟网络

使用隧道构造的虚拟网络 Mbone 封装ipv4

6bone

调试技术

getmsg putmsg

ktrace tcpdump netstat lsof

一些基础的公共的公共源码

unp.h 以及执行autoconf后生成的config.h

接下来,结合书籍配套源码,对上述简单笔记进行细节汇总。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值