计算机网络之应用层-FTP、P2P、Socket编程

1. FTP

FTP 即 文件传送协议( File Transfer Protocol ),用于在互联网的两个主机间实现文件互传的网络应用的应用层协议。

FTP的服务器进程由两大部分组成:

1. 主进程, 负责接受新的客户请求;

2. 从属进程, 负责处理单个客户请求, 与具体客户进行交互。

FTP客户与服务器之间的连接分为两种:

1. 控制连接,专门用于用户登录、服务器授权,为持久连接;

2. 数据连接,专门用于文件传输,为临时连接。

FTP专门使用一个独立的控制连接传输控制信息, 与传输文件信息进行分离, 所以将FTP这种控制信息的传送方式称为带外控制。

FTP是有状态的协议, FTP的命令都是可读的,例如:USER、PASS、LIST。

2. P2P

P2P 即 Peer to peer,近年来很多性能表现优异, 深受用户喜爱的P2P应用层出不穷。例如:BitTorrent、 PPLive和PPstream等。

P2P应用特点:

1. 应用的对等方是用户的计算机;

2. 很强的应用规模伸缩性;

3. 应用在对等方之间进行;

4. 应用充分聚集利用了端系统的计算能力以及网络传输宽带。

3. Socket编程基础

套接字(Socket) : 典型的网络应用编程接口。

端口号: 标识套接字。

常见端口号:

常用Socket API 函数:

1. 创建套接字:socket( )

2. 绑定套接字的本地端点地址: bind( )

3. 设置监听: listen( )

4. 建立连接:

(1). TCP客户端: connect( )

(2). TCP服务端: accept( )

5. 接收数据:

(1). TCP客户端:recv( )

(2). TCP服务端:recvfrom( )

6. 发送数据:

(1). TCP客户端:send( )

(2). TCP服务端:sendto( )

7.关闭套接字: close( )