网络层虽然提供了从源网络到目标网络的通信服务,但是其所提供的服务有可靠与不可靠之分。传输层要消除网络层的不可靠性。以 TCP/IP 的网络层为例,不可靠的 IP 协议提供“尽力而为(best effort)”的服务,不保证端到端数据传输的可靠性,IP 分组在传输过程中会出现丢包、乱序或者是重复的情况。
1. 传输层提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输:作为资源子网中的源或目标端,用户不可能对通信子网加以控制,不可能通过更换性能更好的路由器或增强数据链路层的纠错能力来提高网络层的服务质量。资源子网中的主机(端用户)需要在网络层之上增加一个传输层,依靠该层来检测分组的丢失或数据的残缺并采取相应的补救措施,以弥补网络层服务质量的不足,从而为高层应用提供可靠的端到端通信。
2. 传输层的地位传输层不仅有存在的必要,还是 OSI 七层模型中最为重要的一层,起到承上启下的不可或缺的作用,被看成是整个分层体系的核心。只有资源子网中的端设备才会具有传输层,通信子网中的设备一般至多只具备 OSI 下三层的功能即源网络到目标网络的通信功能。从网络逻辑组成的角度,OSI 模型中的下面三层称为面向通信子网的层,而传输层及以上的各层为面向资源子网或主机的层。从功能的角度,将传输层及以下的各层统称为面向数据通信的层,将传输层之上的会话层、表示层及应用层这些不包含任何数据传输功能的层统称为面向应用的层。运输层负责端到端的数据通信,是负责通信的最高层,是面向用户应用的最低层,是网体系结构中关键的一层。运输层只存在于通信子网以外的主机中,在通信子网中没有运输层。
3. 传输层的功能(1) 能够为高层数据的传输建立、维护与拆除可靠的端到端的传输连接;(2) 提供端到端的错误恢复与流量控制,以能对网络层出现的丢包、乱序或重复等问题作出反应;(3) 当上层的协议数据包的长度超过网络层所能承载的最大数据传输单元时,提供必要的分段功能;(4) 如果网络层提供的是面向连接的服务,能够提供多路复用机制,既能将一个高层应用复用到多个网络层连接上,又能将多个高层应用复用到一个网络层连接上。
4. 运输层与网络层的区别运输层扩展或完善网络层的服务功能,并通过与相邻上层之间的服务接口向高层提供端到端节点之间的可靠数据传输,从而使系统之间实现高层资源的共享时不必再考虑数据通信方面的问题。网络层为主机提供逻辑通信,运输层为进程间提供逻辑通信。
5. 运输层提供的服务面向连接的传输服务(连接建立,数据传输,连接释放)和无连接的传输服务(只有数据传输)。通信子网是不可靠的,其一般提供尽最大努力交付能力。运输层向高层用户屏蔽了下面通信子网的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(即只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的 UDP 协议时,这种逻辑通信信道则是一条不可靠信道。
6. 传输层的多路复用和分用传输层的多路复用:应用层不同进程的报文通过不同的端口向下交付到网络层,并共用网络层提供的服务。多个传输连接使用同一网络连接,用于费用节省模式(带宽共享)。传输层的分用:目的主机的运输层通过不同端口将报文分别交付到相应的应用进程。一个传输连接对应多个网络连接,用于高通信量、低时延环境。
7. TCP/IP 的传输层提供了两个主要的协议:传输控制协议(transport control protocol),简称 TCP;用户数据报协议(user datagram protocol),简称 UDP。IP 协议独立地传送每一个数据包。数据包除乱序、重复现象外,还可能会被丢失。依赖于传输层协议来判断数据包是否丢失从而请求发送方重传。传输层同时也负责按正确的顺序重组数据包
TCP 连接不同于虚电路,层次不同,连接方式不同,是运输层端对端的逻辑通信,交换的是结点报文分组。
8. UDP 和 IP 的区别UDP 和 IP 有本质区别,UDP 是面向进程通信的,IP 是面向主机通信的;层次不同;UDP 数据报传到网际层,作为 IP 数据报的数据部分封装;UDP 在 IP 的数据报服务之上增加了 端口的功能和差错检测的功能。9. 端口概念端口 Port 是抽象数据结构+I/O 缓冲区,由操作系统管理和维护,用于 TCP/IP 的运输层与上层应用进程的接口,具有标识应用进程的作用。应用层的源进程将报文发送给运输层的某个端口,而应用层的目的进程从端口接收报文。端口号:16bit 用来标识本计算机应用层中的各进程。216=65536 在协议栈层间的抽象的协议端口是软件端口,路由器或交换机上的端口是硬件端口。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。端口不是指物理硬件 I/o 端口,而是逻辑概念;IP 地址好比一间房子,端口就是出入该房子的门;端口是和协议相关的,即协议端口;UDP 和 TCP 的端口是独立的,即 TCP 有 200 号端口, UDP 也有 200 号端口;端口具有唯一性,同一主机的不同进程若采用相同协议,则其协议端口号必须是各不相同的;端口具有本地特性,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
传输层提供进程通信能力,对传输层对等实体而言,网络通信的地址不仅包括主机地址,还应包括可描述网络进程的某种标识。在 TCP/IP 的传输层,端口用于标识参与网络通信的进程。其作用有点类似 IP 地址在网络层作用或 MAC 地址在数据链路层的作用,只不过 IP 地址和 MAC 地址标识的是主机,而端口标识的是网络应用进程。作为通信协议端口,端口属于一种抽象的软件结构,包括一些数据结构和 I/O(输入输出)缓冲区,属于软件端口范畴。应用程序或进程通过系统调用与传输层某端口建立绑定(binding)后,传输层通过该端口与所绑定的进程进行数据交换。每个端口都拥有一个叫端口号的整数描述符,用来标识不同的端口或进程。端口在传输层的作用有点类似 IP 地址在网络层作用或 MAC 地址在数据链路层的作用,只不过 IP 地址和 MAC 地址标识的是主机,而端口标识的是网络应用进程。端口标识为 16Bit 长度的整数。共 216 个端口,其端口号从 0 到 216-1。端口号的基本分配方式:(1) 全局分配:由一个公认权威的机构根据用户需要进行统一分配,并将结果公布于众,这是一种集中分配方式;(2) 本地分配:当进程需要访问传输层服务时,向本地系统提出申请,系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口绑定起来端口号范围的划分:① 255 以下:规定作为公共应用服务的端口,又被称为著名端口(Well-known ports)。如 WWW、FTP、DNS 和电子邮件服务等。② 255-1023:被保留用作商业性的应用开发,如一些网络设备厂商专用协议的通信端口等。③ 1023 以上:作为自由端口,以本地方式进行分配。源主机在请求 TCP 服务时通常由此范围中选择。套接字 Socket(插口)的作用是标识通讯中的两个进程。由 IP 地址和端口号组成,共 48 bit,是 TCP 连接的方式。全相关:两个进程(协议,本地地址,本地端口,远程地址,远程端口) 半相关:一个进程(套接字) (协议,本地地址,本地端口)运输层通信的一对套接字必须唯一。 例如:(131.6.23.13,1500)
10. 插口(socket)TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP 地址的关系如图
1. 用户数据报协议 UDP在主机之间提供不可靠的(unreliable)面向无连接的(connectionless)数据报服务;不提供数据接收的确认、排序、差错控制以及流量控制等功能,数据传输可能会出现丢失、重复以及乱序等现象。不存在数据的分段或重组。使用 UDP 为传输层协议的网络应用其可靠性的问题需要由使用 UDP 的应用程序来解决。UDP 只在 IP 的数据报服务之上增加了端口的功能(有了端口,运输层就能进行复用和分用)和差错检测的功能。其特点是发送数据之前不需要建立连接(当然发送数据结束时也没有连接需要释放),因而减少了开销和发送数据之前的时延;UDP 没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表;UDP 用户数据报只有 8 个字节的首部开销,比 TCP 的 20 个字节的首部要短;由于 UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留报文的边界。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。应用程序必须选择合适大小的报
用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段很简单,只有 8 个字节,由 4 个字段组成,每个字段都是两个字节。
2. 传输控制协议 TCP 旨在向 TCP/IP 的应用层提供端到端的面向连接的可靠的数据流传输服务。以虚电路的方式提供应用程序或进程之间端到端的通信。常用于一次传输要交换大量报文的情形,如文件传输、远程登录等。为了实现端到端的可靠传输,TCP 协议必须规定传输层连接的建立与拆除方式、数据传输格式、确认方式、应用进程的识别以及差错控制和流量控制机制等。与所有网络协议类似,TCP 所要实现的功能集中体现在了 TCP 的协议数据单元中 。
TCP 段中的域(1) 窗口:窗口的大小表示发送方可以接收的数据量,以八位字长为计量单位。使用可变大小的滑动窗口来进行流量控制。(2) 校验和 :校验和 包括头和数据,用于差错控制。(3) 紧急指针:给出从当前顺序号到紧急数据位置的偏移量。(4) 任选项:提供一种增加额外设置的方法。 如设置最大 TCP 段的大小。 (5) 数据:来自高层的协议数据。(6) 源端口:主叫方的端口。(7) 目标端口:被叫方的端口。(8) 顺序号:分段的序列号。(9) 确认号:下一个期望的 TCP 分段号。(10) 顺序号和确认号共同用于 TCP 服务中的确认、差错控制。(11) TCP 头长:表示在 TCP 头中包含多少的 32 位字,相当于给出数据在数据段中的开始位置。(12) 保留:设置为 0(6 位未用)。(13) 编码位:给出关于分段的作用及处理的控制信息。TCP 连接是一条虚连接而不是一条真正的物理连接。TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。
1.运输层为高层用户屏蔽了通信子网的细节,把尽力交付的不可靠的网络服务演变成为可靠的网络服务。运输层除了为应用进程提供复用和分用,还要提供差错检测,流量控制,拥塞控制等。2.TCP/IP 协议蔟的运输层协议有两个:即 TCP 协议和 UDP 协议。