计算机网络运输层协议简介
最近在梳理计算机网络相关知识时,发现好多网络协议理解不到位,协议的层次概念模糊,后来查了一些资料,在此梳理一下运输层相关的网络协议。
首先,我们在实际应用中使用的是TCP/IP四层体系结构。它包含应用层,运输层,网际层,网络接口层。
应用层是体系结构中的最高层。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议是指应用进程间通信和交互规则。应用层交互的数据单元称为报文(message)。
运输层的任务是负责向两台主机中进程间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。运输层主要使用以下两种协议:
- 传输控制协议TCP(Transmission Control Protocol)-----提供面向连接的,可靠的数据传输服务,其数据传输的单位是报文段(segment).
- 用户数据报协议UDP(User Datagram Protocol)-------提供无连接的,尽最大努力交付的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
网络层负责为分组交换网上的不同主机提供通信服务。网络层使用IP(Internet Protocol)协议。网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。分组也叫IP数据报。
下图是沙漏计时器形状的TCP/IP协议族示意:
下面着重介绍一下运输层的协议。
运输层是整个网络体系结构中的关键层次之一。它属于面向通信部分的最高层,同时也是用户功能中的最底层。运输层有以下一些重要概念:
- 运输层为相互通信的应用进程提供逻辑通信。
- 端口和套接字的意义。
- 无连接的UDP的特点。
- 面向连接的TCP的特点。
- 在不可靠的网络上实现可靠传输的工作原理,停止等待协议和ARQ协议。
- TCP的滑动窗口,流量控制,拥塞控制和连接管理。
运输层向它上面的应用层提供通信服务。运输层有一个很重要的功能------复用(multiplexing)和分用(demultiplexing)。
- 复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据(需要加上首部)。
- 分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
网络层为主机之间提供逻辑通信,而运输层为应用进程间提供端到端的逻辑通信。根据应用程序的不同需求,运输层需要有两种不同的运输协议。即面向连接的TCP和无连接的UDP。运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信通道。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但是这种逻辑通信信道就相当于一条全双工的可靠通道。当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。
下图给出一些应用和应用层协议主要使用的运输层协议:
端口:
运输层为了使不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。但是进程的创建和撤销都是动态的。为了要解决通信一方无法识别对方机器上的进程的问题。运输层采用了协议端口号(protocol port number)。
TCP/IP的运输层用一个16位端口号来标志一个端口。端口号只具有本地意义。不同的计算机中,相同的端口号是没有关联的。由此可见,两个计算机中的进程要互相通信,不仅要知道对方的IP地址(为了找到对方的计算机)。而且要知道对方的端口号(为了找到对方计算机中的应用进程)。
运输层的端口号分为两类:一类是服务器使用的端口号,一类是客户端使用的端口号。
服务器使用的端口号又分为两类:一类是熟知端口号或系统端口号:数值是0-1023.下表有一些常用的端口号:
客户端使用的端口号仅在客户进程运行时太动态选择,又叫短暂端口号。数值为49152-65535。
用户数据报协议UDP
UDP协议只在IP的数据报服务上增加了很少的一点功能,就是复用和分用以及差错检测的功能。UDP有以下特点:
- UDP是无连接的,即发送数据之前不需要建立连接,减少了开销和发送数据前的延迟。
- UDP使用尽最大努力交付,即不可靠交付,因此主机不需要维持复杂的连接状态。
- UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。
- UDP没有拥塞控制。
- UDP支持一对一,一对多,多对一和多对多的交互通信。
- UDP的首部开销小。
UDP的首部格式
UDP的首部由四个字段组成,每个字段的长度是2个字节。
- 源端口 源端口号。在需要对方回信时选用。不需要时可用全0。
- 目的端口 目的端口号。在终点交付报文时必须使用。
- 长度 UDP用户数据报的长度,其最小值是8。
- 校验和 检测UDP用户数据报在传输中是否有错。有错就丢弃。
UDP用户数据报的首部和伪首部如下示意图:
由于TCP内容比较多,关于TCP协议的介绍,单独放在一篇blog里。