一个请求报文,然后目的主机进行回答,把正确的端口号送回来。
TCP/IP采用一种混合方式对端口地址进行管理,分配了某些端口号,但为本地网点和应用程序留下了很大的端13取值范围。已分配的端13号从较低的值开始,向上扩展,较高的值留待进行动态分配。 3 UDP协议的功能
在TCP/IP协议族中,用户数据报协议UDP提供应用程序之间传输数据报的基本机制。UDP提供的协议端口能够区分在一台机器上运行的多个程序。也就是说,每个UDP报文不仅传输用户数据,还包括目的端口号和源端口号,这使得目的机器上的UDP软件能够把报文送到正确的接收进程,而接收进程也能回送应答报文。UDP使用底层的Internet协议在各机器之间传输报文,提供和IP一样的不可靠、无连接数据报交付服务。它没有使用确认来确保报文到达,没有对传入的报文排序,也不提供反馈信息来控制机器之间信息流动的速度。因此,UDP报文可能会出现丢失、反复或乱序到达的现象。而且,分组到达的速率可能大于接收过程能够处理的速率。
4 UDP协议的几个特性
(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。 (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。 5 UDP技术优缺点
说到UDP的优点和缺点我们就要提一下TCP, 互联网通信协议分为TCP和UDP两种. UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中
出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。
相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端的应用程序向服务器发出了以下4个数据报 D1 D22 D333 D4444
但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用: D333 D1 D4444 D22
事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。TCP是面向连接的,有比较高的可靠性,一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息。 6结束语
UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?其实在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的
速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统资源,无疑使速度受到严重的影响。UDP 由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。UDP与TCP位于同一层,但不能够检测数据包的顺序错误并进行重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询——应答的服务,例如NFS。关于UDP协议的最早规范是RFC768,1980年发布。尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP 协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能所以为了获得更好的使用效果(比如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(比如画面质量)。UDP将在今后的网络世界中发挥更加重要的作用。
(3)TCP和IP四层协议
TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。 定义
TCP/IP 是供已连接因特网的计算机进行通信的通信协议。
TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP(传输控制协议/网际协议)是互联网中的基本通信语言或协议。在私网中,它也被用作通信协议。当你直接网络连接时,你的计算机应提供一个TCP/IP程序的副本,此时接收你所发送的信息的计算机也应有一个TCP/IP程序的副本。
TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。这些包通过网络传送到接收端的TCP层,接收端的TCP层把包还原为原始文件。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。网络上的网关计算机根据信息的地址来进行路由选择。即使来自同一文件的分包路由也有可能不同,但最后会在目的地汇合。 TCP/IP使用客户端/服务器模式进行通信。TCP/IP通信是点对点的,意思是通信是网络中的一台主机与另一台主机之间的。TCP/IP与上层应用程序之间可以说是“没有国籍的”,因为每个客户请求都被看做是与上一个请求无关的。正是它们之间的“无国籍的”释放了网络路径,才是每个人都可以连续不断的使用网络。 许多用户熟悉使用TCP/IP协议的高层应用协议。包括万维网的超文本传输协议(HTTP),文件传输协议(FTP),远程网络访问协议(Telnet)和简单邮件传输协议(SMTP)。这些协议通常和TCP/IP协议打包在一起。 使用模拟电话调制解调器连接网络的个人电脑通常是使用串行线路接口协议(SLIP)和点对点协议(P2P)。这些协议压缩IP包后通过拨号电话线发送到对方的调制解调器中。 与TCP/IP协议相关的协议还包括用户数据包协议(UDP),它代替TCP/IP协议来达到特殊的目的。其他协议是网络主机用来交换路由信息的,包括Internet控制信息协议(ICMP),内部网关协议(IGP),外部网关协议(EGP),边界网关协议(BGP)。 基本原理 整体构架概述
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层(主机-网络层):接收IP数据包并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
TCP/IP协议结构图
主要协议
以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的: 1. IP
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
? 网际层的主要功能是处理来自传输层的分组,将分组形成数据包(IP数据包),并
为该数据包进行路径选择,最终将数据包从源主机发送到目的主机。
? 在网际层中,最重要的是网际协议IP,其他一些协议用来协助IP的操作。
? 网际层IP协议的任务是对数据包进行相应的寻址和路由,并从一个网络转发到另
一个网络。
? IP协议的另一项工作是分割和重编被分割的数据包。
? 分组格式统一规定:控制信息(如地址信息、长度信息、分组组合信息等)+数据,
使中间传递者能够为分组选择合适的路径、最后正确找到目标接收者; ? 版本:IP协议版本分为IPV4与IPV6 ,版本字段表明用于建立数据报的IP的版本,
以便处理者选择处理版本。
? 报头长度:数据处理者根据包头长度,可计算出该分组的数据长度。普通IP数据报
字段的值是5,长度为20(5×4)个字节。
? 服务类型:数据处理者可根据分组的服务类型字段,提供相应的服务。服务类型主
要为最小时延、最大吞吐量、最高可靠性和最小费用等要求。
? 总长度:利用报头长度字段和总长度字段,就可以知道IP数据报中数据内容的起始
位置和长度(数据长度=总长度-报头长度×4)
IP分组在分段时,应当考虑数据的重组问题 。分组的标示符字段、分段标志字段和分段偏移字段为重组提供了重要参数。
? 标示符:数据第一次分组的标示符,在以后的分段中继承此字段。类似10网络1
班(原始分组)又分了三个子分组,这三个子分组无论走到哪里,仍然是10网络1班。
? 分段标志:该分组是否允许处理者再分段(DF),该分组是否是最后一个分组(MF)。
DF=0,为允许分段。MF=0,为最后一分组。
? 分段偏移字段:指定分段在原始数据报中的位置 ,注意是数据,不包含首部。段偏
移以8个字节为单位进行记数 。 ? 生存时间TTL(time-to-live):指定数据报允许保留在网络上的生存时间,解决数据
在网络中陷入死循环传输的问题。它设置了数据报可以经过的最多路由器数。TTL的初始值由源主机设置,每经过一个路由器,值就减去1。当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
? 协议:用于指定数据报数据区中携带的数据是由哪一种高层协议建立或接收的。例
如,TCP协议被分配的协议号是6,UDP的协议号是17。
? 报头校验和:仅用于IP报头校验和,确保IP报头的完整性。不对首部后面的数据
进行计算,只对头部进行简单的校验,不能对数据的质量进行保证。
? 源IP地址和目的IP地址:每一份IP数据报都包含源IP地址和目的IP地址。它们
都是32 比特的值,用于指定发送者和所期望的接收者的IP地址。在数据包通过网络传输的过程中它们的值不会发生变化。
? 选项字段:选项字段是数据报中的一个可变长的可选信息,用于各种选项,可起到
对路由进行更严格设置的作用。这些选项很少被使用,并非所有的主机和路由器都支持这些选项。 填充字段:选项字段一直都是以32 比特作为界限,在必要的时候插入值为0的填充字节。这样就保证IP报头始终是32比特的整数倍(这是报头长度字段所要求的) 2. TCP
如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向?上?传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。