理论上的拾遗补漏---有关于网络协议

我自己是数学系的,不是计算机科班。很多IT的理论知识都不扎实,找个时间是要恶补一下。

1. TCP/IP协议层的划分

应用层
(OSI
5 到 7层)

例如HTTP、FTP、DNS
(如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)

3

传输层
(OSI
4 和 5层)

例如TCP、UDP、RTP、SCTP
(如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分)

2

网络互连层
(OSI
3层)

对于TCP/IP来说这是因特网协议(IP)
(如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)

1

网络接口层
(OSI
1和2层)

例如以太网、Wi-Fi、MPLS等。

 

 我们常用的HTTP协议就是基于TCP协议,并且随着http1.1的出现,已经支持长连接。

 

2.长连接和短连接

去年10月份,曾经帮一个C#项目做socket长连接的框架。

中间牵涉了心跳和线程的很多玩意,搞的很长时间。

长连接,短连接都基于TCP协议完成。

通常的短连接操作步骤是:
连接→数据传输→关闭连接;


而长连接通常就是:
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;

 

长连接最要命的就是保存心跳。保持长连接如果自己写,可以考虑用java的socket完成,但是过于复杂。

如果想通过高级协议走,长连接可以从http协议走,并且有成熟的开源框架:

http://www.pushlets.com/

 

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

 

你可能感兴趣的:(socket,网络,tcp,网络协议,File,browser)