Linux系统编程 第13章学习笔记
TCP/IP和网络编程
TCP/IP协议
TCP/IP (Comer 1988, 2001; RFC1180 1991 )是互联网的基础。TCP代表传输控制协议。 IP代表互联网协议。
IP主机和IP地址
主机是支持TCP/IP协议的计算机或设备。每个主机由一个32位的IP地址来标识。为了方便起见,32位的IP地址号通常用点记法表示
IP地址分为两部分,即NetworkID字段和HostID字段。根据划分,IP地址分为A~E 类。
IP协议
Ip协议用于在Ip主机之间发送/接收数据包。
IP数据包格式
路由器
接受和转发数据包
UDP
UDP (用户数据报协议)在IP上运行,用于发送/接收数据报。
不能保证可靠性,但是快速高效
TCP
TCP (传输控制协议)是一种面向连接的协议,用于发送/接收数据流。
稳定传输
端口编号
应用程序=(主机IP,协议,端口号)
其中,协议是TCP或UDP,端口号是分配给应用程序的唯一无符号短整数。要想使用 UDP或TCP,应用程序(进程)必须先选择或获取一个端口号。前1024个端口号已被预留。其他端口号可供一般使用。
网络和主机字节序
计算机可以使用大端字节序,也可以使用小端字节序。在互联网上,数据始终按网络序排列,这是大端。
TCP/IP网络中的数据流
网络编程
网络编程平台
·服务器上的用户账户
·单独PC或笔记本电脑
服务器——客户机计算模型
套接字编程
套接字地址
·TCP/IP 网络的 sin_family 始终设置为 AF_INET。
·sm_port包含按网络字节顺序排列的端口号。
·sin_addr是按网络字节顺序排列的主机IP地址。
套接字API
·socket()系统调用
创建一个套接字并返回一个文件描述符
·sendto()/recvfrom()
发送/接收数据报
·listen()
将引用的套接字标记为将用于接收连入连接的套接字
·accept()
与基于连接的套接字一起使用
·connect()
建立连接
·send()/read()、recv()/write()
完成数据的收发
主机名和IP地址
gethostname()
gethostbyname()