您的位置:首页 > 理论基础 > 计算机网络

计算机网络——自顶向下方法之运输层

2018-02-13 22:02 344 查看

概述

运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能。应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础设施细节。
运输层协议实在端系统而不是路由器中实现的。
网络路由器仅作用在该数据包的网络层字段,即它们不检查封装在该数据举报的运输层报文段的字段。
网络层提供了主机之间的逻辑通信,而运输层为运行在不同主机上的进程之间提供了逻辑通信。
在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层),反过来也是一样,但对有关这些报文在网络核心如何移动不做任何规定。
IP为主机之间提供了逻辑通信,服务模型为尽力而为交付服务,且为不可靠服务。
UDP流量是不可调节的,使用UDP传输的应用程序可以根据其需要以其愿意的任何速率发送数据。

多路复用和多路分解

接收主机中的运输层实际上并没有直接将数据交付给进程,而是将数据交给了一个中间的套接字。由于在任意时刻,在接收主机上可能有不止一个套接字,所以每个套接字都有唯一的标识符。标识符的格式取决于它是UDP还是TCP套接字。
将运输层报文段中的数据交付给正确的套接字的工作称为多路分解。在源主机从不同套接字中生成数据段,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传递到网络层,称为多路复用。
套接字都有唯一标识符,每个报文段有特殊字段来只是该报文段所要交付到的套接字。比如源端口号字段和目的端口字段。
0-1023范围的端口号称为周知端口号。
在主机上的每个套接字能够分配一个端口号,当报文段到达主机时,运输层检查报文段中的目的端口号,并将其定向到对应套接字。报文段的数据也通过套接字进入相应进程。
如果是一个周至协议的服务器端,那么必须为其分配一个周知端口号。通常,应用程序的客户端运输层自动获得一个端口号,而服务器端则分配一个特定的端口号。
一个UDP套接字是由一个二元组来全面标识的,该二元组包含一个目的IP地址和一个目的端口号。
TCP套接字是由一个四元组(源IP地址,源端口号,目的IP地址,目的端口号)来表示的。

UDP

使用UDP的应用是可以实现可靠数据传输的。
如果端到端数据传输服务要提供差错检测,UDP就必须在端到端基础上在运输层提供差错检测。
虽然UDP提供差错检测,但是对差错恢复无能为力。UDP的某种实现只是丢弃受损的报文段,其它实现是将受损的报文段交给应用程序并给出警告。

可靠数据传输原理

流水线的效率要比停等高得多,不过流水线要求必须增加序号范围,而解决差错由回退N步(GBN)和选择回传(SR)两种放方法
流量控制是对发送方进行限制的原因之一
TCP有一个32比特的序号字段,其中的TCP序号是按照字节流中的字节进行计数的,而不是按照分组计数的。
SR接收方将确认一个正确接收的分组而不管是否按序,时许的分组将被缓存直到序号更小的分组被收到位置,这时才可以将一批分组按序交付给上层。
对于SR协议,发送方和接收方的窗口并不总是一致
对于SR协议,窗口长度必须小于等于序号空间的一般

面向连接的运输:TCP

TCP在一个应用进程开始向另一个应用进程发送数据之前,两个进程必须先相互握手,即它们必须相互发送某些预备报文段,以建立确保数据传输的参数。
TCP连接只存在域端系统中,中间的网络元素不会维持TCP的连接状态,中间路由器看到的是数据报而不是连接。
TCP连接总是点对点的。
客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来响应,最后,客户再用第三个特殊报文段作为相应。前两个报文段不承载有效载荷,第三个报文段承载有效载荷(应用层数据),所以这种连接建立过程常被称为三次握手。
TCP将把从套接字获得的数据引导在该连接的发送缓存里,发送缓存是三次五首初期设置的缓存之一,之后会不时从发送缓存里取一块数据。
TCP可从缓存中取出并放入报文段中的数据数量受限于最大报文段长度(MSS)。MSS通常根据最初缺点的由本地发送主机发送的最大链路层帧长度(MTU)。设置该MSS要保证一个TCP报文段要适合单个链路层帧。
TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段。而TCP另一端接收到一个报文段后,该报文段的数据就放入该TCP连接的接受缓存中,应用程序从缓存中读取数据流。
TCP报文段由首部字段和一个数据字段组成。数据字段包含一块应用数据。MSS限制了报文段数据字段的最大长度。交互式应用通常传送长度小于MSS的数据库。

TCP报文段首部最重要的字段是序号字段和确认好字段,这两个字段是TCP可靠传输服务的关键部分。而序号建立在传送的字节流上,而不是建立在传送的报文段的序列之上。一个报文段的序号,因此是该报文段收字节的字节流编号。
从B主机到达的每个报文段中都有一个序号用于从B流向A的数据。主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号。
TCP只确认该流中至第一个丢失字节为止的字节,所以TCP被称为累计确认。
Telnet是一个用于远程登陆的应用层协议。
对客户到服务器的数据的确认被装在在一个成在服务器到客户的数据的报文段中,这种确认被称为是被捎带在服务器到客户的数据报文段中的。
TCP采用超时回传机制来处理报文段的丢失问题。
TCP为它的应用程序提供了流量控制服务以消除发送方使接收方缓存溢出的可能性。TCP因为IP网络的拥塞而被控制则被称为拥塞控制。
TCP通过让发送方维护一个称为接收窗口的变量来提供流量控制,接收窗口告诉发送方该接收方还有多少可用的缓存空间。
主机B通过吧当前到达rwnd值放入它发给主机A的报文段接收窗口字段中,通知主机A他在该练级的缓存中还有多少可用空间。
TCP规范要求,当主机B的接收窗口为0时,主机A继续发送只有一个字节数据的报文段。这些报文段将会被接收方确认。最终缓存将开始清空,并且确认报文里包含一个非0rwnd值
参加一条TCP连接的两个进程的任何一个都能终止该资源。
若客户端要终止连接,则向服务器进程发送一个特殊的TCP报文段(FIN字段置为1),服务器收到,发送ACK。然后服务器发送自己的终止报文段,然后客户端发送确认。
当客户端向某个端口发起TCP连接而目标主机的目标端口不接受该链接,则发送一个特殊重置报文段(RET为1)
当一台主机接收到一个UDP分组,其目的端口域进行中的UDP套接字不匹配,则发送一个特殊的ICMP数据报。

TCP拥塞控制

TCP必须使用端到端拥塞控制而不是是网络辅助的拥塞控制。
TCP所采用的方法是让每一个发送方根据所感知到的网络阻塞程度来限制其能相连接发送流量的速率。
通过约束发送方未被确认的数据流,可以间接的限制发送方的发送速率。
TCP丢包事件定义为:要么出现超时,要么接收到3个冗余ACK。
因为TCP使用确认来出发(或计时)增大它的阻塞窗口长度,TCP被说是自计时的。
在TCP中,具有较小RTT的链接能够在链路空闲时更快地抢到可用宽带,因而将比那些较大RTT的链接享受到更大的吞吐量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCP UDP 运输层