我自己是数学系的,不是计算机科班。很多IT的理论知识都不扎实,找个时间是要恶补一下。
1. TCP/IP协议层的划分
应用层
(OSI
5 到 7层)例如HTTP、FTP、DNS
(如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)3
传输层
(OSI
4 和 5层)2
网络互连层
(OSI
3层)对于TCP/IP来说这是因特网协议(IP)
(如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)1
网络接口层
(OSI
1和2层)我们常用的HTTP协议就是基于TCP协议,并且随着http1.1的出现,已经支持长连接。
2.长连接和短连接
去年10月份,曾经帮一个C#项目做socket长连接的框架。
中间牵涉了心跳和线程的很多玩意,搞的很长时间。
长连接,短连接都基于TCP协议完成。
通常的短连接操作步骤是:
连接→数据传输→关闭连接;
而长连接通常就是:
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;长连接最要命的就是保存心跳。保持长连接如果自己写,可以考虑用java的socket完成,但是过于复杂。
如果想通过高级协议走,长连接可以从http协议走,并且有成熟的开源框架:
3.什么是Socket
记得,上一家公司的首席架构师要我们搞一个自己封装的框架,用socket来实现各种各样的上层应用层协议。后来也是不了了之。
Socket这玩意不是协议族的一种,它是具体的开发语言的对网络操作的具体实现。每一个socket就对等一个端口号,在java中socket中包括了tcp,udp的各种实现。
甚至于用java的socket也能搞出自己的小服务器
http://www.51testing.com/?uid-202848-action-viewspace-itemid-122030
4.Ftp和Http都能下载文件,他们有什么区别
现在做一个项目,要远程下载csv,我提议用ftp协议下,有人就问为什么不能用http协议下。
5
FTP, where entire files are transferred from one device to another and copied into memory,
HTTP only transfers the contents of a web page into a browser for viewing.
6
FTP file uploaded is used in cases when the file size is more than 70 MB
HTTP upload is used for smaller files.
7
FTP uses an FTP client server and an FTP client.
HTTP is used for all web [ages i.e. it is the standard protocol to transmit hyperlinked documents and files. It is often used in conjunction with HTML.
8
FTP was the original non-GUI file transfer program and could be run from a command line interface like MS-DOS.
HTTP is associated with a browser file transfer program like Internet Explorer.
Read more: http://wiki.answers.com/Q/What_is_the_difference_between_FTP_and_HTTP#ixzz1aLQ1kk5b