运输层分用和复用

来源:互联网 发布:linux 打包tar命令 编辑:程序博客网 时间:2024/05/16 00:25

传输层分用和复用就是把网络层提供的host-to-host传输服务扩展到运行于计算机上的应用进程间的传输服务

分用是把运输层segment中的信息发送给正确的socket的服务

复用是把所有socket中的数据集中并加头信息封装,然后发送到网络层的服务

在接收方计算机中,运输层从下面的网络层收到segment,运输层的工作是把这些segment中的数据传输给正在运行的适合的应用进程,举个例子,你坐在你的电脑前,当你正在运行一个FTP会话和两个Telnet会话的同时还在下载一个网页,因此你又四个正在运行的进程,当你计算机上的运输层从网络层收到数据的时候,它需要把数据发送给这四个进程中的一个,那么是它是如何完成呢?
首先一个进程中是可以有一个或者多个socket(所谓socket就是数据从网络进入到进程或者从进程进入到网络的门户)

如3.2图所示,接收方的运输层并不是直接把数据传输给某个进程,而是发送给一个中间的socket,因为在任何时刻在接收方计算机上都不止一个socket,每个socket都有一个独一无二的标识符,这个标识符的格式取决于这个socket是使用TCP还是UDP协议,
现在我们看接收方计算机是怎么把收到的运输层segment发送给合适的socket,为了这个目的,运输层segment会有一系列fields,在接收方,运输层会查看这些fields来确定目标socket并把它发送给这个socket,这个将运输层数据传输到正确的socket的工作叫做分用。 从源计算机的不同socket中收集data chunks,然后为每个data chunk加上头信息构成segment并把这些segment发送到网络层叫做复用

Note :中间计算机的运输层必须要把从网络层上来的segments分发到P1或者P2进程,这是通过直接将segment中的数据发送到对应的进程的socket中是实现的,这个计算机的运输层还必须从sockets中收集需要发送出的数据,组成运输层segments,并把这些segment发送到网络层,虽然我们在互联网运输层协议的背景下介绍完了分用和复用,但是我们需要重点指出的是: 一旦一个单一的协议要服务于上边更高层级的多个协议的时候就会涉及到分用和复用

为了说明分用问题,上篇博客讲到一个例子每个孩子都是通过名字来识别的,当Bill从邮差那里收到一批信件,他就会进行一个分用工作——看每封信是邮寄给谁并且送到收信人手上,Ann会进行一个复用工作——从孩子们那里收集信件并把这些信件交给邮差

上边的学习我们知道运输层复用需要(1).socket都有唯一的标识符(2).每个segment都有特殊字段(fields)来声明它需要被发往哪socket,

特殊字段包括:source port number field和destination port number field,每个端口数字都是一个16-bit的数字,数码从0到65535,从0到1023都称作well-known port number,也就是说它们是用来保留给有名的应用层协议比如HTTP(使用80端口)和FTP(使用21端口)等来使用的,当我们开发一个应用的时候,必须要分配给应用一个端口号

现在运输层是怎么执行分用就很明了了,计算机上的每个socket都分配一个端口号,当一个segment到达计算机,运输层查看它的destination port number并把它发送到那个socket,然后segment中的数据就通过socket发送到匹配的进程,

0 0
原创粉丝点击