传输层(一): 传输层与传输层协议
1、传输层的基本概念
网络层、数据链路层与物理层实现了网络中主机之间的数据通信。
计算机网络的本质活动是实现分布在不同地理位置的主机之间的进程通信,以实现应用层的各种网络服务功能。
传输层的主要功能是要是要实现分布式进程的通信,因此,传输层是各种网络应用的基础。
传输层的基本功能示意图如下:
1、网络层的IP地址标识了主机、路由器的位置信息;路由选择算法可以再Internet中选择一条源主机-路由器、路由器-路由器、路由器-目的主机的多段"点-点"链路组成的传输路径;IP协议通过这条传输路径完成IP分组数据的传输。传输层协议是利用网络层所提供的服务,在源主机的应用进程与目的主机的应用进程之间建立"端-端"连接,实现分布式进程通信。
2、Internet中的路由器与通信线路构成了传输网(或承载网)。传输网一般是由电信公司运营和管理的。若传输网提供的服务不可靠(如频繁丢失分组),用户无法对传输网加以控制。解决这个问题需要从两个方面入手:一是电信公司进一步提供传输网的服务质量;而是传输层对分组丢失、线路故障进行检测,并采取相应的差错控制措施,以满足分布式进程通信对服务质量(QoS)的要求,因此,在传输层要讨论如何改善QoS,以达到计算机进程通信所要求的服务质量问题。
3、传输层可以屏蔽传输网实现技术的差异性,弥补网络层所提供服务的不足,使得应用层在设计各种网络应用系统时,只需要考虑选择什么样的传输层协议可以满足应用进程通信的要求,而不需要考虑数据传输的细节问题。
2、传输协议数据单元的基本概念
传输层中实现传输层协议的软件称为传输实体(transport entity)。传输实体可以再操作系统内核中,可以再用户程序中。
传输协议数据单元示意图:
传输层之间传输的报文称为 传输协议数据单元(transport protocol data unit,TPDU)。
TPDU结构与IP分组、帧结构的关系:
TPDU有效载荷是应用层的数据,传输层在有效荷载TPDU之前加上RPDU头,就形成了TPDU传输协议数据单元。
TDPU传送到网络层后,加上IP分组头后形成IP分组;IP分组传送到数据链路层后,加上帧头、帧尾形成帧。
帧经过物理层传输到目的主机后,经过数据链路层与网络层处理,传输层接收到TPDU后,读取TPDU头,按照传输层协议的要求完成相应的动作。和数据链路层、网络层一样,TPDU头用于传达传输层协议的命令和响应。
3、应用进程、传输层接口与套接字
应用进程、套接字与IP地址关系示意图:
3.1、应用程序、传输层软件与本地主机操作系统的关系
应用程序与传输层的TCP或UDP协议都是在主机操作系统控制下工作的。应用程序的开发者只能根据需要,在传输层选择TCP或UDP协议,设置相应的最大缓存、最大报文长度等参。
一旦传输层协议的类型和参数被设定后,实现传输层协议的软件就在本地主机操作系统的控制之下,为应用程序提供进程通信服务。
3.2、进程通信、传输层端口号与网络层IP地址的关系
根据IP地址找到目的主机,根据传输层端口号找到运行的进程,找到进程后才能进行数据的交互,完成进程间的通信。
在计算机网络中,只有直到IP地址与端口号,才能唯一的找到准备通信的进程。
3.3、套接字的概念
传输层需要解决进程标识问题。在一台计算机中,不同进程需要用进程号(Process ID)唯一的标识。
进程号也称为端口号,在网络环境中,标识一个进程必须同时使用IP地址与端口号。
RFC793定义的套接字(Socket)是由IP地址与对应端口号(IP地址:端口号)组成。例如,一个IP地址为202.1.2.5的客户端使用30022端口号,与一个IP地址为151.8.22.51、端口号为80的Web服务器建立TCP连接,那么标识客户端的套接字为"202.1.2.5:30022",标识服务器端的套接字为"151.8.22.51:80"。
术语Socket有多种不同的含义:
1、在网络原理的讨论中,RFC793中socket=IP地址:端口号;
2、在网络软件编程中,API(application programming interface)是网络应用程序的可编程接口,也称为Socket。
4、网络环境中分布式进程标识方法
实现网络环境中分布式进程通信首先要解决两个基本问题:进程标识与多重协议的识别。
4.1、进程标识的基本方法
TCP/IP传输层的寻址是通过TCP与UDP的端口号来实现的。Internet应用程序类型很多,例如基于客户-服务器(C-S)工作模式的FTP、E-mail、Web、DNS与SNMP应用,以及基于对等(P2P)工作模式的应用。
这些应用程序在传输层分别选择了TCP或UDP。为了区别不同的网络应用程序,TCP与UDP规定用不同的端口号来表示不同的应用程序。
4.2、端口号的分配方法
端口号数值范围的划分:
4.2.1、端口号的数值范围
在TCP/IP协议中,端口号的数值取0 ~ 65535之间的整数。
4.2.2、端口号的类型
Internet赋号管理局(IANA)定义的端口号有三种类型:熟知端口号、注册端口号和临时端口号。
临时端口号,数值范围在49152~65535。客户进程使用临时端口号,它是由运行在客户上的TCP/UDP软件随机选取的。临时端口号只对一次进程通信有效。
熟知端口号,TCP/UDP给每种标准的Internet服务器进程分配一个确定的全局端口号,称为熟知端口号(well-known port number)或公认端口号。每个客户进程都知道相应的服务器进程的熟知端口号。熟知端口号数值范围在0~1023,是由IANA统一分配的。Internet标准协议规定的熟知端口列表可以在http://www.iana.org中查询。
注册端口号,注册端口号数值在1024~49151,当用户开发了一种新的网络应用程序时,为了防止这种应用在Internet上使用时出现冲突,可以为这种新的网络应用程序的服务器程序在IANA登记一个注册端口号。
4.3、熟知端口号的分配方法
4.3.1、UDP的熟知端口号
UDP服务于端口号的映射表定期在RFC768等文本中公布,并可以在大多数UNIX主机的/etc/services文件中得到。
DHCP与SNMP的熟知端口号的使用与DNS协议不同。DHSP、SNMP的客户端与服务器端在通信时都使用熟知端口号。
4.3.2、TCP的熟知端口号的分配
TCP常用的熟知端口号:
4.4、多重协议的识别
实现分布式进程通信要解决的另一个问题是多重协议的识别。以UNIX操作系统为例,它在传输层采用了TCP和UDP协议。
网络中的两台主机要实现进程通信,必须事先约定好传输层协议类型。若一台主机的传输层使用TCP,另一台主机的传输层使用UDP,由于两种协议的报文格式、端口号分配的规定,以及协议执行过程都不相同,而使得两个进程无法正常的交换数据。因此两台主机必须在通信之前就确定都采用了TCP,还是都采用UDP。
网络环境中一个进程的全网唯一的标识就应该用三元组表示:协议、本地地址与本地端口号。在UNIX操作系统中,这个三元组又称为半相关(half-association)。
网络环境中分布式进程通信要涉及两个不同主机的进程,因此一个完整的进程通信标识需要一个五元组表示。这个五元组是:协议、本地地址、本地端口号、远程地址与远地端口号。
例如,一个客户端的套接字为"202.1.2.5:30022",服务器端的套接字为"121.5.21.2:80",则从客户端标识与服务器TCP连接的五元组应该是"TCP、202.1.2.5:30022,121.5.21.2:80"。
5、传输层的多路复用与多路分解
一台运行TCP/IP协议的主机可能同时运行不同的应用程序。若客户端同时运行4个应用程序,分别是域名服务(DNS)、Web服务、电子邮件(STMP)与网络管理(SNMP)。其中HTTP、SMTP使用TCP协议,DNS、SNMP使用UDP协议。
TCP/IP协议允许多个不同的应用程序的数据,同时使用同一个IP地址和物理链路来发送和接收数据。
传输层多路复用与多路分解过程示意图:
在发送端,IP协议将TCP或UDP协议的传输协议数据单元TPDU都封装成一个IP分组发送出去;在接收端,IP协议将从IP分组中拆开的传输协议数据单元TPDU传送到传输层,由传输层根据不同的TPDU的端口号,区分出不同TPDU属性,分别传送给对应的4个应用进程。这个过程称为多路复用(multiplexing)与多路分解(demultiplexing)。
6、TCP、UDP协议与应用层协议的关系
传输层协议与应用层协议关系如下:
应用层协议与传输层协议的关系有三种类型:·应用层依赖于TCP协议;·依赖于UDP协议;·依赖于UDP协议又依赖于TCP协议。
依赖于TCP协议的主要是需要大量传输交互报文的应用层协议,如虚拟终端协议(TELNET)、电子邮件协议(SMTP)等。
简单网络管理协议(SNMP)依赖于UDP协议。
域名服务(DNS)协议既可以使用TCP协议,也可以使用UDP协议。但所有的TCP报文与UDP报文在网络层都使用IP协议。
UDP协议简洁、效率高、处理速度快的优点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)