-
1 课程内容
-
2 作业



两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。
运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。运输层还要对收到的报文进行差错检测。运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP.
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。当运输层采用无连接的 UDP协议时,这种逻辑通信信道是一条不可靠信道。
TCP协议和UDP协议使用16bits端口号来表示和区别网络中的不同应用程序,网络层协议IP使用特定的协议号(TCP 6,UDP 17)来表示和区别传输层协议。端口用一个 16 位端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
任何TCP/IP实现所提供的服务都是1~1023之间的端口号,这些端口号由IANA(Internet Assigned NumbersAuthority,Internet号码分配机构)分配管理。其中,低于255的端口号保留用于公共应用;255到1023的端口号分配给各个公司,用于特殊应用;对于高于1023的端口号,称为临时端口号,IANA未做规定。
常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

TCP:提供面向连接的可靠的传输服务,可适用于各种可靠的或不可靠的网络。
UDP:提供无连接数据报传输。协议不可靠,但效率很高,因此即使因报文损失而重传一次,其开销也比面向连接的传输要小。
一般情况下,TCP和UDP共存于一个互联网中;
TCP:提供可靠性服务。用于一次传输要交换大量报文的情形(如文件传输、远程登录等);
UDP:提供高效率服务用于一次传输交换少量报文(如telnet,电子邮件等)的情形,其可靠性由应用程序提供。
TCP 在正式收发数据前,必须和对方建立可靠的连接。一个 TCP 连接必须要经过三次“对话”才能建立起来。UDP 是与 TCP 相对应的协议,它是面向非连接的协议,不与对方建立连接,直接就把数据包发送过去
从可靠性的角度来看,TCP 的可靠性优于 UDP。
从传输速度来看,TCP 的传输速度比 UDP 更慢。
从协议报文的角度看,TCP 的协议开销大,但是 TCP 具备流量控制的功能,UDP 的协议开销小,但是 UDP 不具备流量控制的功能。
从应用场合看,TCP 适合于传送大量数据,而 UDP 适合传送少量数据。
在两个TCP模块之间交换的包称为段,段是TCP传输数据的基本单位,分为头部和数据区两大部分,格式如图1所示。

图1 TCP段格式
TCP段中各字段的定义为:
源端口:呼叫端口的号;
目的端口:被叫端口的号;
序列号:用于确保数据到达的正确顺序;
确认号:用来确认接收到的数据,包含所期待的下一个TCP字段的编号;
头部长度:报头的字数(字长为32位);
保留:设置为0,以备将来使用;
码位:指出段的目的与内容;
窗口:接收方能接收的字节数;
校验和:报头和数据字段的校验和,目的是确定段到达时是否发生错误;
紧急指针:指出紧急数据的位置;
选项:用于提供TCP的增强功能;
数据:上层协议数据。
UDP协议是面向无连接的传输协议,没有建立连接和确认重传得过程。相对于IP协议,它唯一增加的功能是提供协议端口以保证进程通信。无连接通信不能保证可靠性,接收方不通知发送方是否已经正确接收了报文,也不具备错误恢复能力,因此,使用UDP协议的应用程序要保证可靠性。
许多基于UDP的应用程序在局域网上运行的很好,而一旦到了通信质量较低的互联网环境下,可能根本无法运行,原因就在于UDP不可靠。因此,基于UDP的应用程序必须自己解决可靠性。
UDP的优点在于其高效率。因为UDP没有连接过程,对传输不作确认,因此一些对效率要求较高,或者传输数据量特别小的应用,UDP使用的较多。

