目的:开发采用套接字通信的C/S网络应用程序。
1. 套接字是一个主机本地应用程序所创建的, 为操作系统所控制的接口 (“门”) .
2. 应用进程通过这个接口,使用传输层提供的服务, 跨网络发送(/接收)报文到(/从)其他应用进程。
Socket API
1981提出于BSD4.1 UNIX,
网络应用程序明确的创建,使用及释放套接字
client/server模式
通过Socket API,提供传输层的2类传输服务:不可靠的数据报传输 可靠的字节流传输
1. TCP进行套接字编程
Socket: 应用进程和传输层协议(UCP or TCP)之间的门。
TCP服务: 从1个进程到另1个进程的字节流的可靠传输。
Socket是从UNIX的I/O命令集发展而来的。Socket为上层实体提供一种透明的访问网络的能力,本质上说是传输层的服务原语。TCP 中的套接字系统调用
客户必须初始联系服务器 服务器进程必须先运行
服务器进程必须创建套接字 (门) 来迎候客户的初始联系
客户如何初始联系服务器
创建客户本地TCP socket
指定服务器进程的IP地址, 端口号
一旦客户创建套接字, 客户TCP 就发起3次握手并建立与服务器 TCP的连接
一旦客户初始联系(敲门)服务器, 服务器TCP为服务器进程创建1个新的socket 与客户进程通信
允许服务器与多个客户通信
源端口号被用来区分客户
从应用程序的角度来看TCP 为客户和服务器提供了可靠的, 顺序的,字节流的传输 (“管道”) 。