《Unix/Linux系统编程》13章学习笔记
网络编程简介
TCP/IP协议、UDP和TCP协议、服务器—客户机计算、HTTP和Web页面、动态Web页面的PHP和CGI编程
TCP/IP协议
TCP/IP是互联网的基础,TCP代表传输控制协议,IP代表互联网协议。
TCP/IP的组织结构分为几个层级,通常称为TCP/IP堆栈。
顶层时使用TCP/IP的应用程序
IP主机和IP地址
每个主机由一个32位的IP地址来标识,主机也可以用主机名表示
IP地址分为两部分:NetworkID和HostID
IP协议
IP协议用于在IP主机之间发送/接收数据包
IP数据包格式
IP数据包由IP头、发送方IP地址和接收方IP地址以及数据组成
路由器
路由器是接收和转发数据包的特殊IP主机
UDP
UDP在IP上运行,用于发送/接收数据报
用户可以使用ping命令探测目标主机
TCP
是一种面向连接的协议,用于发送/接收数据流
端口编号
每个应用程序有三个组成部分唯一标识
应用程序=(主机IP,协议,端口号)
协议是TCP/IP,端口号是分配给应用程序的唯一无符号短整数
网络和主机字节序
大端/小端
TCP/IP网络中的数据流
网络编程
所有Unix/Linux系统都为网络编程提供TCP/IP支持
网络编程平台
- 服务器上的用户账户
- 单独PC或笔记本电脑
服务器—客户机计算模型
大多数网络编程任务基于此
套接字编程
TCP/IP的用户界面是通过一系列C语言库函数和系统调用来实现的,这些函数和系统调用统称为套接字API
套接字地址
- TCP/IP网络的sin_family时钟设置为AF_INET
- sim_port包含按网络字节顺序排列的端口号
- sin_addr是按网络字节顺序排列的主机IP地址
套接字API
- int
- int bind
- UDP
- TCP
- send()/read()或recv/write()
UDP回显服务器—客户机程序
TCP回显服务器—客户机程序
web和CGI编程
万维网或Web是互联网上的资源和用户组合,它使用超文本传输协议进行信息交换
HTTP编程模型
http://hostname[/filename]
web页面
Web页面使用HTML标记语言编写的文件
托管Web页面
- 与商业Web托管服务提供商签约
- 机构或部门服务器上的用户账户
- 独立PC或笔记本电脑
为Web页面配置HTTPD
动态Web页面
标准HTML:静态
JavaScript:动态
PHP
一种用于创建服务器端动态Web页面的脚本语言
CGI编程
CGI代表通用网关接口
配置CGI的HTTPD
在HTTPD中,CGI程序的默认目录是/srv/httpd/cgi-bin