TCP,UDP,HTTP,FTP协议

来源:互联网 发布:java支付宝接口demo 编辑:程序博客网 时间:2024/05/29 11:02

    OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 ,其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。然而TCP/IP协议集与之的对比图如下:

 

1.  TCP/IP协议组

       TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
      网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
      传输层中有TCP协议与UDP协议。
      应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
      因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。


                                                                                

2. TCP与UDP

    UDP(User DataGram Protocol)协议译为:用户数据包协议)的缩写,是一种无连接的协议,使用UDP传输数据时,每个数据段都是一个独立的信息,包括完整的源地址和目的地,在网络上以任何可能的路径传到目的地,因此,能否到达目的地,以及到达目的地的时间和内容的完整性都不能保 证。  所以TCP比UDP多了建立连接的时间。相对UDP而言,TCP具有更高的安全性和可靠性。

                                                                               

 

   TCP层是位于IP层(网络层)之上,应用层之下的传输层。它有三次握手连接,如下图。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层, 由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将 会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。

                                                                             

                                                                       

    TCP协议传输的大小不限制,一旦连接被建立,双方可以按照一定的格式传输大量的数据,而UDP是一个不可靠的协议,大小有限制,每次不能超过64K。

3、HTTP与 FTP

     HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及 相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。HTTP/1.0为每一次 HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次 握手。另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求 /响应消息,因此减少了链接建立的次数和经常性的链接开销。原理如下简图:

                                                                             

   FTP协议(File TransferProtocol)文件传输协议,用于Internet 上的控制文件的双向传输,同时也是哟个应用程序(Application).用户可以通过把自己的PC机与世界各地所有运行FTP协议服务器相连,访问服 务器上大量的程序和信息。FTP的主要作用就是,让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机拷贝到本地计算机,或者把本地计算机文件送到远程计算机上去。原理如下简图:

                                         

结论:虽然HTTP本身是一个协议,但其最终还是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议

4.Socket是什么呢?

       Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP /IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

                                                                       

        套接字(Socket)工作原理
       (1) 当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。
       (2) 操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。
       (3) 通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。                                                

        关于套接字推荐一篇博文:http://hi.baidu.com/haifengjava/item/fa177edaac4850feca0c39e3


                                                          

 

0 0
原创粉丝点击