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
  • 2
  • 3
  • 下一页
【内容导航】
第1页:TCP/UDP基础知识 第2页:socket相关函数介绍
第3页:文件操作相关函数以及FTP原理介绍

相关内容