用C语言写一个FTP的客户端程序,需了解哪些知识

用C语言写一个FTP的客户端程序,需要了解哪些知识?
之前没有用C语言进行过网络编程,不过有用JAVA进行网络编程的经验,我应该先看下哪些资料?如果大家有好的资料,能分享一下链接吗?多谢多谢。
------解决思路----------------------
LibNcFTP is an application programming interface that provides File Transfer Protocol (FTP) client services to your UNIX applications. Linking the library with your programs give you the capability to copy files to and from remote hosts using a time-tested protocol supported by almost every system connected to a TCP/IP network. Even better, you can do all of this without any user interaction!
------解决思路----------------------
一、需要的知识点:
1、SOCKET技术,网络编程的基本功能
2、FTP
3、如果需要自己写,可能需要熟悉各个网络框架
二、编写FTP所需要掌握的框架
1、wininet
2、libcurl
------解决思路----------------------
Unix/linux应用编程手册
------解决思路----------------------
没思路时找个开源的看看,uboot,busybox里有的