Linux小型FTP服务系统的实现
Linux小型FTP服务系统的实现
UDP是简单的,不可靠的数据报协议,而TCP是精致的,可靠的字节流协议。SCTP跟TCP类似也是可靠的传输协议,但它还提供消息边界,传输层支持多宿主,最小化拥塞。
UDP(用户数据报协议):
提供无连接的服务,同一个套接口可以发送数据报给不同的服务器,也可以在同一个套接口接收来自不同服务器的数据报。
TCP(传输控制协议):
一. TCP提供客户与服务器连接。
二. 提供可靠性,发过去后需要对方的确认,如果没有收到确认会重传。
三. TCP通过给所发送数据的每一个字节关联一个序列号进行排序。接收方的TCP将根据分节的序列号重新排序在将结果数据传递给应用进程。
四. 提供流量控制。通告窗口(advertised window)告诉对方它能接收多少字节的数据。缓冲区满时,必须等应用程序取走数据后才能再接收
五. TCP是全双工的
TCP建立连接的三路握手
1. 服务器通过调用socket, bind, listen 函数来完成被动打开;
2. 客户通过connect进行主动打开,引起TCP发送一个SYN分节,告诉服务器客户将在连接中发送的数据的初始序列号,
3. 服务器必须确认客户的SYN,同时自己发送一个SYN,含有服务器在连接中发送的数据的初始序列号,同时发送对客户SYN的ACK。
4. 客户确认服务器的SYN。
SYN使用的TCP选项:
MSS选项。 通知对象自己的最大分节大小,即能接受的每个TCP分节中的最大数据量
窗口规模选项。 只有对方收到对方的SYN来的这个选项时,才能发送该选项。
时间戳选项。
高带宽或长延时的网络才会用到后两个选项。
TCP连接终止:
1. 某个进程先调用close(主动关闭)。发送一个FIN,表示数据发送完毕。
2. 另一端收到后被动关闭,由TCP确认FIN,它的接收也作为文件结束符接收方应用程序。
3. 收到文件结束符的应用程序将调用close关闭套接口,导致它的TCP也发送一个FIN。
4. 收到这个FIN的原发送方对它确认。
|
【内容导航】 | |
第1页:TCP/UDP基础知识 | 第2页:socket相关函数介绍 |
第3页:文件操作相关函数以及FTP原理介绍 |
评论暂时关闭