1 进程之间的通信
- 运输层为应用进程之间提供端到端的逻辑通信。
- 运输层还要对收到的报文进行差错检测。
- 运输层的一个很重要的功能就是复用和分用。
2 运输层的两个主要协议
- TCP 传输控制协议
- 面向连接,全双工可靠信道
- 有流量控制,拥塞控制,面向字节流
- 只能点对点(一对一),不提供广播或多播服务。
- UDP 用户数据报协议
- 面向报文,无连接,不可靠信道
- 尽最大可能交付,没有拥塞控制。
- 支持一对一、一对多、多对一和多对多的交互通信。
使用 UDP 和 TCP 协议的各种应用和应用层协议
应用 | 应用层协议 | 运输层协议 |
---|---|---|
名字转换 | DNS(域名系统) | UDP |
文件传送 | TFTP(简单文件传送协议) | UDP |
路由选择协议 | RIP(路由信息协议) | UDP |
IP地址配置 | DHCP(动态主机配置协议) | UDP |
网络管理 | SNMP(简单网络管理协议) | UDP |
远程文件服务器 | NFS(网络文件系统) | UDP |
IP电话 | 专用协议 | UDP |
流式多媒体通信 | 专用协议 | UDP |
多播 | IGMP(网际组管理协议) | UDP |
电子邮件 | SMTP(简单邮件传送协议) | TCP |
远程终端接入 | TELNET(远程终端协议) | TCP |
万维网 | HTTP(超文本传送协议) | TCP |
文件传送 | FTP(文件传送协议) | TCP |
3 运输层的端口
- 端口用一个十六位端口号进行标志
- 软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址
- 服务器端口号
- 熟知或系统端口号 0~1023
- 登记端口号 1024~49151。为没有熟知端口号的应用程序使用的,必须在 IANA 登记,以防止重复
- 客户端端口号(短暂端口号):49151~65535,仅在客户进程运行时才动态选择
4 本章的重要概念
- 运输层提供应用进程间的逻辑通信,也就是说,运输层之间的通信并不是真正在两个运输层之间直接传送数据。运输层向应用层屏蔽了下面网络的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
- 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
- 运输层有两个主要的协议:TCP和UDPO它们都有复用和分用,以及检错的功能。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工通信的可靠信道。当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
- 运输层用一个16位端口号来标志一个端口。端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在互联网的不同计算机中,相同的端口号是没有关联的。
- 两台计算机中的进程要互相通信,不仅要知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
- 运输层的端口号分为服务器端使用的端口号(0、1023指派给熟知端口,1024、 49巧1是登记端口号)和客户端暂时使用的端口号(49152、65535)。
- UDP的主要特点是:(l)无连接;(2)尽最大努力交付;(3)面向报文;(4)无拥塞控制;(5)支持一对一、一对多、多对一和多对多的交互通信;(6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。
- TCP的主要特点是:(I)面向连接;(2)每一条TCP连接只能是点对点的(一对一);(3)提供可靠交付的服务;(4)提供全双工通信;(5)面向字节流。
- TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点。这样的端点就叫做套接字(socket)或插口。套接字用()P地址:端口号)来表示。
- 停止等待协议能够在不可靠的传输网络上实现可靠的通信。每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。分组需要进行编号。
- 超时重传是指只要超过了一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为自动重传请求ARQO
- 在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。
- 连续ARQ协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。接收方一般采用累积确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都己正确收到了。
- TCP报文段首部的前20个字节是固定的,后面有字节是根据需要而增加的选项(是整数)。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。
- TCP首部中的确认号是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明:到序号一1为止的所有数据都己正确收到。
- TCP首部中的窗口字段指出了现在允许对方发送的数据量。窗口值是经常在动态变化着的。
- TCP使用滑动窗口机制。发送窗口里面的序号表示允许发送的序号。发送窗口后沿的后面部分表示己发送且己收到了确认,而发送窗口前沿的前面部分表示不允许发送。发送窗口后沿的变化情况有两种可能,即不动(没有收到新的确认)和前移(收到了新的确认)。发送窗口前沿通常是不断向前移动的。
- 流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
- 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
- 流量控制是一个端到端的问题,是接收端抑制发送端发送数据的速率,以便使接收端来得及接收。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
- 为了进行拥塞控制,TCP的发送方要维持一个拥塞窗口cwnd的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口取为拥塞窗口和接收方的接收窗口中较小的一个。
- TCP的拥塞控制采用了四种算法,即慢开始、拥塞避免、快重传和快恢复。在网络层,也可以使路由器采用适当的分组丢弃策略(如主动队列管理AQM),以减少网络拥塞的发生。
- 运输连接有三个阶段,即:连接建立、数据传送和连接释放。
- 主动发起TCP连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。TCP的连接建立采用三报文握手机制。服务器要确认客户的连接请求,然后客户要对服务器的确认进行确认。
- TCP的连接释放采用四报文握手机制。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后就进入半关闭状态。当另一方也没有数据再发送时,则发送连接释放通知,对方确认后就完全关闭了TCP连接。