高效的用户数据报协议 和 可靠的传输控制协议

来源:互联网 发布:apache flink hdfs 编辑:程序博客网 时间:2024/05/22 02:12

高效的用户数据报协议

       传输层的用户数据报协议(User Datagram Protocol,UDP)建立在网络层的IP之上,为应用层进程提供无连接的数据报传输服务,这是一种尽力而为的无连接的不保障可靠的传输服务,是一种保护消息边界的数据传输。

       传输前没有建立连接的过程。如果一个客户机向服务器发送数据,这一数据会立即发出,不管服务器是否准备好接收数据。如果服务器收到了客户机的数据,它不会确认收到与否。

        UDP特别简单,从其简单的协议报头就可以看出。由于没有什么差错控制、流量控制,也就不能保证传输的可靠;由于在传输之前不需要连接,数据报之间就没有任何联系,是相互独立的,因而也就省去了建立连接和撤销连接的开销,传输是高效的。

        基于UDP的应用程序在高可靠性、低延迟的网络中运行得很好,随着网络基础设施的进步,网络底层的传输越来越可靠,UDP也能很好的工作,但是,要在低可靠性的网络中允许,应用程序必须自己采取措施,解决可靠性的问题。

       在网络层协议的基础上,UDP唯一增加的功能是提供了65535个端口,以支持应用层进程通过它进行进程间通信。

       UDP的传输效率高,适用于交易型的应用程序,交易过程只有一来一往两次数据报的交换,如果使用TCP,面向连接,开销就过大。例如,TFTP,SNMP,DNS等应用进程,都使用UDP提供进程之间的通信服务。

可靠的传输控制协议

1. 可靠性是很多应用的基础

     TCP实现了看起来不太可能的一件事:低层使用IP提供的不可靠的无连接的数据报传输服务,但却为上层应用程序提供了一个可靠的数据传输服务。TCP必须解决Internet中的数据报丢失和延迟问题,以提供有效的数据传输,同时还不能让低层的网络和路由器过载。

     可靠性是很多应用的基础,如编程者可能要编写一个应用程序,来想某个I/O设备(如打印机)发送数据,应用程序会直接写数据到设备上,而不需要验证数据是否正确到达设备,这是因为应用程序依赖底层计算机系统来确保可靠传输。Internet软件必须保证迅速而又可靠的通信。数据必须按发送的顺序传递,不能出错,不能出现丢失或者重复现象。

     应用程序发送和接收数据时就要和传输协议打交道,传输控制协议(TCP)是TCP/IP协议族中的传输层协议,负责提供可靠的传输服务。TCP的出名就是因为它很好地解决了一个困难的问题,没有哪个通用的传输协议比TCP工作更好。因此,大部分Internet应用都建立在TCP的基础之上。

2. TCP为应用层提供的服务

      传输控制协议(Transfer Control Protocol,TCP)是TCP/IP协议族中主要的传输协议。TCP建立在网络层的IP之上,为应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、无重复或失序)全双工的流传输服务,允许网络中的两个应用程序建立一个虚拟连接,并在任何一个方向上发送数据,把数据当作一个双向字节流进行交换,然后终止连接。每一个TCP连接可靠地建立,从容地终止,在终止发生之前的所有数据都会被可靠地传递。

      IP为TCP提供的是无连接的、尽力传送的、不可靠的传输服务,TCP为了实现为应用层进程提供可靠的传输服务,采取了一系列的保障机制。

      由TCP形成的进程之间的通信通路,就好像一根无缝的连接两个进程的管道,一个进程将数据从管道的一端注入,数据流经管道,会原封不动地出现在管道的另一端。TCP提供的是流的传输服务,TCP对所传输的数据的内部结构一无所知,不应用进程向下递交的数据看成一个字节流,不做任何处理,只是原封不动地将它们传送到对方的应用层进程,就尽到了它的责任。

3. TCP利用IP数据报实现了端到端的传输服务

    TCP被称作一种端到端(End  to End)协议,这是因为它提供一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。应用进程能请求TCP构造一个连接,通过这个连接发送和接收数据,以及关闭连接。由TCP提供的连接叫做虚连接(Virtual Connection),虚连接是由软件实现的。事实上,底层的Internet系统并不对连接提供硬件或者软件支持,只是两台计算机上的TCP软件模块通过交换信息来实现连接的幻象。

     TCP使用IP数据报来携带信息,每一个TCP消息封装在一个IP数据报后,通过Internet传输。当数据报到达目的主机时,IP将数据报的内容传给TCP。尽管TCP使用IP数据报来携带消息,但IP并不阅读或干预这些消息。因而,TCP只把IP看作一个包通信系统,这一通信系统负责连接作为一个连接的两个端点的主机,而IP只把每个TCP消息看作数据来传输。

4. 三次握手

    为确保连接的建立和终止都是可靠的,TCP使用三次握手(3-Way Handshake)的方式来建立连接。科学家们已经证明三次握手是在包丢失、重复和延迟的情况下确保非模糊协定的充要条件。

0 0