OSI网络七层协议 与 TCP/IP五层协议

TCP/IP的通讯协议

TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。

TCP/IP协议的开发研制人员将Internet分为五个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下表:

应用层(第五层)
传输层(第四层)
互联网层(第三层)
网络接口层(第二层)
物理层(第一层)

物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬设备,如PC机、互连网服务器、网络设备等,必须对这些硬设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。

网络接口层:它定义了将资料组成正确帧的规程和在网络中传输帧的规程,帧是指一串资料,它是资料在网络中传输的单位。

互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的"信息包"转发机制。


传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。

应用层:它定义了应用程序使用互联网的规程。


第一层 物理层
      第一层对应于基本网络硬件,如同ISO七层参考模型一样。
第二层:网络接口层
      第二层协议规定了怎样把数据组织成帧及计算机怎样在网络中传输帧,类似于ISO七层参考模型的第二层。
第三层:互联网层
      第三层协议规定了互联网中传输的包格式及从一台计算机通过一个或多个路由器到最终目标的包转发机制。
第四层:传输层
      第四层协议,象ISO七层参考模型的第四层一样,规定了怎样确保可靠性传输。
第五层:应用层
      第五层协议对应于ISO七层参考模型的第六层和第七层,第五层协议规定了应用程序怎样使用互联网。


OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。下面我简单的介绍一下这7层及其功能。
OSI的7层从上到下分别是
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
1 物理层


其中高层,既7、6、5、4层定义了应用程序的功能,下面3层,既3、2、1层主要面向通过网络的端到端的数据流。下面我给大家介绍一下这7层的功能:
(1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事 字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示 例:telnet,HTTP,FTP,WWW,NFS,SMTP等。
(2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASII格式传输。如果选择二进制,那么发送方和接收 方不改变文件的内容。如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。在接收方将标准的ASII转换成接收方计算 机的字符集。示例:加密,ASII等。
(3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。
(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。
(5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
(6)数据链路层:他定义了在单个链路上如何传输数据。这些协议与被讨论的歌种介质有关。示例:ATM,FDDI等。
(7)物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。

OSI分层的优点:
(1)人们可以很容易的讨论和学习协议的规范细节。
(2)层间的标准接口方便了工程模块化。
(3)创建了一个更好的互连环境。
(4)降低了复杂度,使程序更容易修改,产品开发的速度更快。
(5)每层利用紧邻的下层服务,更容易记住个层的功能。
大多数的计算机网络都采用层次式结构,即将一个计算机网络分为若干层次,处在高层次的系统仅是利用较低层次的系统提供的接口和功能,不需了解低层 实现该功能所采用的算法和协议;较低层次也仅是使用从高层系统传送来的参数,这就是层次间的无关性。因为有了这种无关性,层次间的每个模块可以用一个新的 模块取代,只要新的模块与旧的模块具有相同的功能和接口,即使它们使用的算法和协议都不一样。

    网络中的计算机与终端间要想正确的传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称做协议。网络协议主要有三个组成部分:
1、语义
是对协议元素的含义进行解释,不同类型的协议元素所规定的语义是不同的。例如需要发出何种控制信息、完成何种动作及得到的响应等。
2、语法
将若干个协议元素和数据组合在一起用来表达一个完整的内容所应遵循的格式,也就是对信息的数据结构做一种规定。例如用户数据与控制信息的结构与格式等。
3、时序
对事件实现顺序的详细说明。例如在双方进行通信时,发送点发出一个数据报文,如果目标点正确收到,则回答源点接收正确;若接收到错误的信息,则要求源点重发一次。

       70年代以来,国外一些主要计算机生产厂家先后推出了各自的网络体系结构,但它们都属于专用的。为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。国际标准化组织ISO 于1981年正式推荐了一个网络系统结构----七层参考模型,叫做开放系统互连模型(Open System Interconnection,OSI)。由于这个标准模型的建立,使得各种计算机网络向它靠拢, 大大推动了网络通信的发展。
     OSI 参考模型将整个网络通信的功能划分为七个层次。它们由低到高分别是物理层(PH)、链路层(DL)、网络层(N)、传输层(T)、会议层(S)、 表示层(P)、应用层(A)。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持。第四层到第七层主要负责互操作性,而一层到三层 则用于创造两个网络设备间的物理连接.

1.物理层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。
1.1媒体和互连设备
物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE和DCE间的互连设备。DTE既数据终端设备,又称物理设备, 如计算机、终端等都包括在内。而DCE则是数据通信设备或电路连接设备,如调制解调器等。数据传输通常是经过DTE——DCE,再经过DCE——DTE的 路径。互连设备指将DTE、DCE连接起来的装置,如各种插头、插座。LAN中的各种粗、细同轴电缆、T型接、插头,接收器,发送器,中继器等都属物理层 的媒体和连接器。
1.2物理层的主要功能
1.2.1为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成.一次完整的数据传输,包括激活物理连接,传送数据,终止物理连接.所谓激活,就是不管有多少物理媒体参与,都要在通信的两个数据终端设备间连接起来,形成一条通路.
1.2.2传输数据.物理层要形成适合数据传输需要的实体,为数据传送服务.一是要保证数据能在其上正确通过,二是要提供足够的带宽(带宽是指每 秒钟内能通过的比特(BIT)数),以减少信道上的拥塞.传输数据的方式能满足点到点,一点到多点,串行或并行,半双工或全双工,同步或异步传输的需要.
1.3物理层的一些重要标准
物理层的一些标准和协议早在OSI/TC97/C16 分技术委员会成立之前就已制定并在应用了,OSI也制定了一些标准并采用了一些已有的成果.下面将一些重要的标准列出,以便读者查阅.ISO2110:称 为"数据通信----25芯DTE/DCE接口连接器和插针分配".它与EIA(美国电子工
业协会)的"RS-232-C"基本兼容。ISO2593:称为"数据通信----34芯DTE/DCE----接口连接器和插针分配"。 ISO4092:称为"数据通信----37芯DTE/DEC----接口连接器和插针分配".与EIARS-449兼容。CCITT V.24:称为"数据终端设备(DTE)和数据电路终接设备之间的接口电路定义表".其功能与EIARS-232-C及RS-449兼容于100序列线 上.

2.数据链路层
数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接.媒体是长期的,连接是有生存期的.在连接生存期内,收 发两端可以进行不等的一次或多次数据通信.每次通信都要经过建立通信联络和拆除通信联络两过程.这种建立起来的数据收发关系就叫作数据链路.而在物理媒体 上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错.数据链路的建 立,拆除,对数据的检错,纠错是数据链路层的基本任务。
2.1链路层的主要功能
链路层是为网络层提供数据传送服务的,这种服务要依靠本层具备的功能来实现。链路层应具备如下功能:
2.1.1链路连接的建立,拆除,分离。
2.1.2帧定界和帧同步。链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。
2.1.3顺序控制,指对帧的收发顺序的控制。
2.1.4差错检测和恢复。还有链路标识,流量控制等等.差错检测多用方阵码校验和循环码校验来检测信道上数据的误码,而帧丢失等用序号检测.各种错误的恢复则常靠反馈重发技术来完成。
2.2数据链路层的主要协议
数据链路层协议是为发对等实体间保持一致而制定的,也为了顺利完成对网络层的服务。主要协议如下:
2.2.1ISO1745--1975:"数据通信系统的基本型控制规程".这是一种面向字符的标准,利用10个控制字符完成链路的建立,拆除及 数据交换.对帧的收发情况及差错恢复也是靠这些字符来完成.ISO1155, ISO1177, ISO2626, ISO2629等标准的配合使用可形成多种链路控制和数据传输方式.
2.2.2ISO3309--1984:称为"HDLC 帧结构".ISO4335--1984:称为"HDLC 规程要素 ".ISO7809--1984:称为"HDLC 规程类型汇编".这3个标准都是为面向比特的数据传输控制而制定的.有人习惯上把这3个标准组合称为高级链路控制规程.
2.2.3ISO7776:称为"DTE数据链路层规程".与CCITT X.25LAB"平衡型链路访问规程"相兼容.
2.3链路层产品
独立的链路产品中最常见的当属网卡,网桥也是链路产品。MODEM的某些功能有人认为属于链路层,对些还有争议.数据链路层将本质上不可靠的传输 媒体变成可靠的传输通路提供给网络层。在IEEE802.3情况下,数据链路层分成了两个子层,一个是逻辑链路控制,另一个是媒体访问控制。下图所示为 IEEE802.3LAN体系结构。
AUI=连接单元接口 PMA=物理媒体连接
MAU=媒体连接单元 PLS=物理信令
MDI=媒体相关接口

3.网络层
网络层的产生也是网络发展的结果.在联机系统和线路交换的环境中,网络层的功能没有太大意义.当数据终端增多时.它们之间有中继设备相连.此时会 出现一台终端要求不只是与唯一的一台而是能和多台终端通信的情况,这就是产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者叫寻径.另 外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉.人们自然会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术 和虚拟电路技术.
3.1网络层主要功能
网络层为建立网络连接和为上层提供服务,应具备以下主要功能:
3.1.1路由选择和中继.
3.1.2激活,终止网络连接.
3.1.3在一条数据链路上复用多条网络连接,多采取分时复用技术 .
3.1.4差错检测与恢复.
3.1.5排序,流量控制.
3.1.6服务选择.
3.1.7网络管理.
3.2网络层标准简介
网络层的一些主要标准如下:
3.2.1 ISO.DIS8208:称为"DTE用的X.25分组级协议"
3.2.2 ISO.DIS8348:称为"CO 网络服务定义"(面向连接)
3.2.3 ISO.DIS8349:称为"CL 网络服务定义"(面向无连接)
3.2.4 ISO.DIS8473:称为"CL 网络协议"
3.2.5 ISO.DIS8348:称为"网络层寻址"
3.2.6 除上述标准外,还有许多标准。这些标准都只是解决网络层的部分功能,所以往往需要在网络层中同时使用几个标准才能完成整个网络层的功能.由于面对的网络不同,网络层将会采用不同的标准组合.
在具有开放特性的网络中的数据终端设备,都要配置网络层的功能.现在市场上销售的网络硬设备主要有网关和路由器.

4.传输层
传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层 的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。 传输层也称为运输层.传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层.因为它是源端到目的端对数据传送进行 控制从低到高的最后一层.
有一个既存事实,即世界上各种通信子网在性能上存在着很大差异.例如电话交换网,分组交换网,公用数据交换网,局域网等通信子网都可互连,但它 们提供的吞吐量,传输速率,数据延迟通信费用各不相同.对于会话层来说,却要求有一性能恒定的界面.传输层就承担了这一功能.它采用分流/合流,复用/介 复用技术来调节上述通信子网的差异,使会话层感受不到.
此外传输层还要具备差错恢复,流量控制等功能,以此对会话层屏蔽通信子网在这些方面的细节与差异.传输层面对的数据对象已不是网络地址和主机地 址,而是和会话层的界面端口.上述功能的最终目的是为会话提供可靠的,无误的数据传输.传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接 释放阶段3个阶段才算完成一个完整的服务过程.而在数据传送阶段又分为一般数据传送和加速数据传送两种。传输层服务分成5种类型.基本可以满足对传送质 量,传送速度,传送费用的各种不同需要.传输层的协议标准有以下几种:
4.1 ISO8072:称为"面向连接的传输服务定义"
4.2 ISO8072:称为"面向连接的传输协议规范"

5.会话层
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传 送大的文件极为重要。会话层,表示层,应用层构成开放系统的高3层,面对应用进程提供分布处理,对话管理,信息表示,恢复最后的差错等.
会话层同样要担负应用进程服务要求,而运输层不能完成的那部分工作,给运输层功能差距以弥补.主要的功能是对话管理,数据流同步和重新同步。要完成这些功能,需要由大量的服务单元功能组合,已经制定的功能单元已有几十种.现将会话层主要功能介绍如下.
5.1为会话实体间建立连接。为给两个对等会话服务用户建立一个会话连接,应该做如下几项工作:
5.1.1将会话地址映射为运输地址
5.1.2选择需要的运输服务质量参数(QOS)
5.1.3对会话参数进行协商
5.1.3识别各个会话连接
5.1.4传送有限的透明用户数据
5.2数据传输阶段
这个阶段是在两个会话用户之间实现有组织的,同步的数据传输.用户数据单元为SSDU,而协议数据单元为SPDU.会话用户之间的数据传送过程是将SSDU转变成SPDU进行的.
5.3连接释放
连接释放是通过"有序释放","废弃","有限量透明用户数据传送"等功能单元来释放会话连接的.会话层标准为了使会话连接建立阶段能进行功能协 商,也为了便于其它国际标准参考和引用,定义了12种功能单元.各个系统可根据自身情况和需要,以核心功能服务单元为基础,选配其他功能单元组成合理的会 话服务子集.会话层的主要标准有"DIS8236:会话服务定义"和"DIS8237:会话协议规范".

6.表示层
表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不 同。例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。
通过前面的介绍,我们可以看出,会话层以下5层完成了端到端的数据传送,并且是可靠,无差错的传送.但是数据传送只是手段而不是目的,最终是 要实现对数据的使用.由于各种系统对数据的定义并不完全相同,最易明白的例子是键盘,其上的某些键的含义在许多系统中都有差异.这自然给利用其它系统的数 据造成了障碍.表示层和应用层就担负了消除这种障碍的任务.
对于用户数据来说,可以从两个侧面来分析,一个是数据含义被称为语义,另一个是数据的表示形式,称做语法.像文字,图形,声音,文种,压缩,加 密等都属于语法范畴.表示层设计了3类15种功能单位,其中上下文管理功能单位就是沟通用户间的数据编码规则,以便双方有一致的数据形式,能够互相认 识.ISO表示层为服务,协议,文本通信符制定了DP8822,DP8823,DIS6937/2等一系列标准.

7.应用层
应用层向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。有些可为多种应用程序共同使用,有些则为较少的一类应用程序使用。应用层是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务.其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE.CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信,分布系统实现提供基本的控制机制.特定服务SASE则要满足一些特定服务,如文卷传送,访问管理,作业传送,银行事务,订单输入等.
这些将涉及到虚拟终端,作业传送与操作,文卷传送及访问管理,远程数据库访问,图形核心系统,开放系统互连管理等等.应用层的标准有DP8649"公共应用服务元素",DP8650"公共应用服务元素用协议",文件传送,访问和管理服务及协议.

讨论:OSI七层模型是一个理论模型,实际应用则千变万化,因此更多把它作为分析、评判各种网络技术的依据;对大多数应用来说,只将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。
这样分层的好处有:
1.使人们容易探讨和理解协议的许多细节。
2.在各层间标准化接口,允许不同的产品只提供各层功能的一部分,(如路由器在一到三层),或者只提供协议功能的一部分。(如Win95中的Microsoft TCP/IP)
3. 创建更好集成的环境。
4. 减少复杂性,允许更容易编程改变或快速评估。
5. 用各层的headers和trailers排错。
6.较低的层为较高的层提供服务。
7. 把复杂的网络划分成为更容易管理的层。

7.应用层
TELNET FTP TFTP SMTP SNMP HTTP BOOTP DHCP
6:表示层
文本:ASCII,EBCDIC
图形:TIFF,JPEG,GIF,PICT
声音:MIDI,MPEG,QUICKTIME
5:会话层
NFS SQL RPC X-WINDOWS ASP(APPTALK会话协议)SCP
4:传输层
TCP/IP----TCP和UDP NOVELL---IPX SPX
3:网络层
IP IPX
2:数据链路层
以太网 IEEE802.3 令牌环 IEEE802.5 HDLC PPP
1:物理层
10BASE T 10BASE TX V.35 RS-232 100BASE T 100BASE TX 1000BASE T 1000BASE TX 100BASE F 100BASE FX

     你说的应该是因特网协议堆,如果说因特网协议堆按5层来划分,第4层就是传输层(transport layer),它是应用层(第5层)和网络层(第3层)之间的接口。传输层为应用层上的应用提供两类截然不同的服务:第一类服务叫做可靠的面向连接服务 (connection-oriented service),确保正确无误地把消息从源端传送到目的地,使用的协议是TCP协议。第二类服务是不可靠的无连接服务(unreliable, connectionless service),使用的协议是用户数据包协议UDP(User Datagram  Protocol)。一般来说,应用层协议运行在操作系统之上,而传输层协议集成在操作系统之中。因此,当设计网络应用时,设计人员必需要指定其中的一种 网络传输协议,网络多媒体应用通常使用UDP协议。

一个网络单元层n(layer n)与另一个网络单元层n(layer n)交换的消息是层n(layer n)上的消息,这些消息称为层n协议数据单元(layer-n protocol data unit,n-PDU)。如图15-18所示,主机A的传输层与主机B的传输层交换的消息就是传输层上的消息,这叫做逻辑上的端-端传输,当信息包通过中 间设备(例如路由器、网桥和中继器等设备)时,这些网络设备对使用UDP协议的信息包和使用TCP协议的信息包将一视同仁。在一些网络文献中,通常把使用 UDP的协议数据单元(protocol data unit,PDU)称为数据包(datagram),但网络文献也使用数据包(datagram)这个术语表示网络层的PDU,名词术语不统一就会使人很 混乱。为了简化术语,本书把传输层上的协议数据单元PDU称为消息段(segment),或者就叫做传输层协议数据单元。
15.4.2 端口号和套接号的概念
在客户机/服务机(client/server)运行模式中,一端的主机叫做客户机,另一端的主机叫做服务机。一台服务机可以同时运行同一应用程序的几个 进程,例如服务机上的FTP服务软件可以同时给几个客户传送文件,对每个客户至少要调用一个FTP服务软件的进程。同样,一个客户可以同时与几台不同的主 机进行远程对话,对每个不同的主机,客户软件至少要调用一个远程客户软件的进程。因此,对连网计算机上的进程就需要相互联系的端口号来递送IP信息包。
在因特网上,所有使用TCP或者UDP协议的应用程序都有一个标识协议本身的永久性端口号(port number)。例如,我们在设置Web浏览器或者FTP文件传输程序时会经常遇到的端口号:HTTP的端口号=80,FTP的端口号=21,电子邮件协 议SMTP的端口号=25,Telnet的端口号=23,这些端口号叫做众所周知的端口号(well-known port number)。端口号的分配定义在RFC 1700中,并在1994年成为一个标准,标准号是STD0002。可供TCP使用的端口号共计65,535,一般来说,大于255的端口号由本地的机器 使用,小于255的端口号用于频繁使用的进程,0和255是保留端口号。
收发两端的传输层TCP之间的通信由两个号码的组合来鉴别,一个是机器的IP地址,另一个是TCP软件使用的端口号,这两个号码组合在一起就叫做套接标识 符(socket)或者叫做套接号,而且收发双方都需要有套接标识符。因为在互联网上机器的IP地址是唯一的,而对单台机器的端口号也是唯一的,因此套接 标识符在互联网上也是唯一的,这就可通过套接标识符使互联网络上的进程之间相互通信。互联网上收发两端的进程之间的通信建立过程.
15.4.3 用户数据包传输协议(UDP)
1. UDP协议简介
因特网为网络应用提供有两种不同的传输协议:用户数据包传输协议(User Datagram Protocol,UDP)和传输控制协议TCP(Transfer Control Protocol)。不同的网络应用使用不同的协议,如图15-20所示。例如,HTTP使用TCP协议,而普通文件传输协议(Trivial File Transfer Protocol,TFTP)则使用UDP。
UDP协议不提供端-端的确认和重传功能,它不保证信息包一定能到达目的地,因此称为不可靠协议。应用开发人员选择UDP时,应用层协议软件几乎是直接与IP通信。
应用层协议
HTTP,FTP,Telnet,SMTP,NNTP,……
TFTP,RTP,Real Audio,……
传输层协议
TCP
UDP
网络层
IP,ICMP,IGMP
HTTP(Hypertext Transfer Protocol) 超文本传送协议
FTP(File Transfer Protocol) 文件传输协议
Telnet 远程联接服务标准协议
SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议
RTP(Real-time Transport Protocol) 实时传输协议
UDP有下述几个特性:
(1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送 端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列 中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议 RIP(Routing Information Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例 如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的 RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。
2. UDP协议的标题结构
UDP信息包由UDP标题和数据组成。UDP的标题结构如图15-21所示,它由5个域组成:源端端口(Source Port)、目的地端口(Destination Port)、用户数据包的长度(Length)和检查和(Checksum)。其中,前4个域组成UDP标题(UDP header),每个域由4个字节组成;检查和域占据2个字节,它用来检测传输过程中是否出现了错误;用户数据包的长度包括所有5个域的字节数。检查和的 详细计算可在RFC 1071中找到,现举一例说明使用检查和检测错误的道理。例如,假设从源端A要发送下列3个16位的二进制数:word1,word2和word3到终端 B,检查和计算如下:word1
0110011001100110
word2
0101010101010101
word3
0000111100001111
sum=word1+ word2+ word3
1100101011001010
检查和(sum的反码)
0011010100110101
从发送端发出的4个(word1,2,3以及检查和)16位二进制数之和为1111111111111111,如果接收端收到的这4个16位二进制数之和也是全“1”,就认为传输过程中没有出差错。
许多链路层协议都提供错误检查,包括流行的以太网协议,读者也许想知道为什么UDP也要提供检查和。其原因是链路层以下的协议在源端和终端之间的某些通道 可能不提供错误检测。虽然UDP提供有错误检测,但检测到错误时,UDP不做错误校正,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
读者也可能会问,收发两端的两个进程是否有可能通过UDP提供可靠的数据传输?答案是可以的。但必需要把确认和重传措施加到应用程序中,应用程序不能指望UDP来提供可靠的数据传输。
15.4.4 传输控制协议(TCP)
1. TCP协议简介
传输控制协议TCP(Transmission Control Protocol)是TCP/IP协议堆中的一部分。消息在网络内部或者网络之间传递时要打包,TCP负责把来自高层协议的数据装配成标准的数据包,相当 于在数据包上贴包装清单,而IP则相当于在数据包上贴收、发人的姓名和地址,TCP和IP之间要进行相互通信才能完成数据的传输。TCP/IP协议中的 IP主要负责在计算机之间搬运数据包,而TCP主要负责传输数据的正确性。TCP/IP有3个主要的特性:功能丰富,开放性和普遍型。随着新的网络服务的 不断出现,TCP/IP协议也在不断修改和扩充。
TCP是传输层上的协议,该协议定义在RFC 793,RFC 1122,RFC 1323和RFC 2001文件中。目前,TCP协议比UDP协议用得更广泛,也更复杂。
TCP是面向连接的协议。面向连接的意思是在一个应用程序开始传送数据到另一个应用程序之前,它们之间必须相互沟通,也就是它们之间需要相互传送一些必要的参数,以确保数据的正确传送。
TCP是全双工的协议。全双工(full duplex)的意思是,如果在主机A和主机B之间有连接,A可向B传送数据,而B也可向A传送数据。TCP也是点对点的传输协议,但不支持多目标广播。 TCP连接一旦建立,应用程序就不断地把数据送到TCP发送缓存(TCP send buffer),如图15-22 所示TCP就把数据流分成一块一块(chunk),再装上TCP协议标题(TCP header)以形成TCP消息段(TCP segment)。这些消息段封装成IP数据包(IP datagram)之后发送到网络上。当对方接收到消息段之后就把它存放到TCP接收缓存(TCP receive buffer)中,应用程序就不断地从这个缓存中读取数据。
TCP为应用层和网络层上的IP提供许多服务,其中3个最重要的服务是:(1) 可靠地传输消息:为应用层提供可靠的面向连接服务,确保发送端发出的消息能够被接收端正确无误地接收到。接收端的应用程序确信从TCP接收缓存中读出的数 据是否正确是通过检查传送的序列号(sequence number)、确认(acknowledgement)和出错重传(retransmission)等措施给予保证的。
(2) 流程控制:连接双方的主机都给TCP连接分配了一定数量的缓存。每当进行一次TCP连接时,接收方主机只允许发送端主机发送的数据不大于缓存空间的大小。如果没有流程控制,发送端主机就可能以比接收端主机快得多的速度发送数据,使得接收端的缓存出现溢出。
(3) 拥挤控制:TCP保证每次TCP连接不过分加重路由器的负担。当网络上的链路出现拥挤时,经过这个链路的TCP连接将自身调节以减缓拥挤。
2 TCP协议标题的结构
如前所述,TCP递给IP的数据块叫做消息段(segment)。这个消息段由TCP协议标题域(TCP header field)和存放应用程序的数据域(header fields)组成,如TCP协议标题有很多域组成,现将几个比较重要的域作一个简单介绍。
(1) 源端端口号(Source Port Number)域和目的地端口号(Destination port Number)域:前者的16位域用来识别本机TCP;后者的16域用来识别远程机器的TCP。
(2) 顺序号(sequence number)域和确认号(acknowledgment number)域:这两个域是TCP标题中两个最重要的域。32位的顺序号域用来指示当前数据块在整个消息中的位置,而32位的确认号域用来指示下一个数 据块顺序号,也可间接表示最后接收到的数据块顺序号。顺序号域和确认号域由TCP收发两端主机在执行可靠数据传输时使用。
在介绍顺序号(sequence number)和确认号(acknowledgement number)之前,首先要介绍TCP最大消息段大小(maximum segment size,MSS)的概念。在建立TCP连接期间,源端主机和终端主机都可能宣告最大消息段大小MSS和一个用于连接的最小消息段大小。如果有一端没有宣 告MSS,就使用预先约定的字节数(如1500,536或者512字节)。当TCP发送长文件时,就把这个文件分割成许多按照特定结构组织的数据块 (chunk),除了最后一个数据块小于MSS外,其余的数据块大小都等于MSS。在交互应用的情况下,消息段通常小于MSS,像Telnet那样的远程 登录应用中,TCP消息段中的数据域通常仅有一个字节。
在TCP数据流中的每个字节都编有号码。例如,一个106字节长的文件,假设MSS为103字节,第一个字节的顺序号定义为0.

你可能感兴趣的:(tcp,互联网,网络,internet,终端,路由器)