简介
概述
要编写通过计算机网络通信的程序,先要确定这些程序相互通信所用的协议
深入设计一个协议细节前,要从高层次决断通信由那个程序发起,及响应何时产生
客户和服务器通常是用户进程
而TCP和IP协议通常是内核中协议栈的一部分
当今最大的广域网是因特网
一个简单的时间获取客户程序
TCP是一个没有记录边界的字节流协议
从TCP套接字读取数据时,总是需要把read编写在某个循环中,
当read返回0(表明对端关闭连接)或负值(表明发生错误)时终止循环.
TCP本身并不提供记录结束标志
如应用程序需要确定记录的边界就要自己去实现
Unix在一个进程终止时总是关闭该进程所有打开的描述符,TCP套接字也用一个描述符标识.
协议无关性
错误处理:包裹函数
一个简单的时间获取服务器程序
迭代服务器:对每个客户都迭代执行一次
并发服务器:同时处理多个客户
服务器进程一般作为守护进程:
能在后台运行,且不跟任何终端关联的进程.一般同时只运行一个进程实例.
本书中客户/服务器程序示例索引表
OSI模型
-
上面三层处理具体网络应用的所有细节,对通信细节了解少
底下四层对具体网络应用了解不多,却处理所有的通信细节
-
上面三层通常构成用户进程
底下四层通常作为操作系统内核的一部分提供
BSD网络支持历史
测试用网络及主机
网络拓扑的发现
用于发现某些网络细节的两个基本命令:netstat和ifconfig
netstat
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,
一般用于检验本机各端口的网络连接情况。
netstat是在内核中访问网络及相关信息的程序,
它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
- i 提供网络接口信息
- r 展示路由表
ifconfig
获得每个接口的详细信息
寻找本地网络众多主机的IP地址
从本地接口的广播地址执行ping
Unix标准
简单称Unix标准为POSIX规范.
获取这个统一标准最简易方法通过http://www.UNIX.org/version3
POSIX的背景
POSIX[可移植操作系统接口]是IEEE开发的一系列标准
开放团体的背景
标准的统一
因特网工程任务攻坚组
64位体系结构
size_t在32位系统是一个32位值
在64位系统是一个64位值