计算机网络——传输层

一、传输层概述

网络层通过寻址的方式,将数据从源主机发送到目标主机,最终需要传递给应用程序

两个主机进行通信实际上就是两个主机中的应用进程互相通信。

应用进程之间的通信又称为端到端的通信。

不同进程的报文通过不同的端口向下交到传输层,再往下就共用网络层提供的服务。

传输层提供应用进程间的逻辑通信。“逻辑通信”的意思是:传输层实现的应用进程之间的通信,数据的物理传输是由下三层通信子网实现的。

1.传输层的功能

1)端到端的传输

传输层针对的是报文而不是单个数据包。端到端是指从源端到目的端,中间可以有一个或多个交换节点。传输层监视的是整个报文端到端的传递。

2)寻址

传输层地址为端口号,它描述通信的进程,用于区分各种应用程序。例如,HTTP的端口号为80。

3)可靠传递

网络层数据包可能出错、丢失和重复等。传输层必须要进行端到端的传输进行检查,以保证每个包正确的到达

2.传输层有两个不同的协议:

(1) 用户数据报协议 UDP(User Datagram Protocol)

(2) 传输控制协议 TCP(Transmission Control Protocol)

3.端口与套接字

1)端口

运行在计算机中的进程是用进程标识符来标志的。

运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在因特网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

解决这个问题的方法就是在传输层使用协议端口号(protocol port number),通常简称为端口(port)。

与交换机或路由器上的硬件端口不同,协议端口是应用进程进行通信的一种地址。

公认端口,也称熟知端口,数值一般为 0~1023。

注册端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。

私有端口号或动态端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

2)套接字

TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口

端口号拼接到(contatenated with) IP 地址即构成了套接字。

套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的lP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。例如:如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)

二、UDP协议

UDP是一种无连接的传输层协议,它利用IP提供面向事务的简单不可靠信息传送服务。UDP不提供复杂的控制机制,它将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上。

UDP 是无连接的,即发送数据之前不需要建立连接。目标主机的传输层在收到UDP数据报后,也不需要给出任何应答。

UDP 对应用层交下来的报文,既不合并,也不拆分,在添加首部后就向下交付 IP 层。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。应用程序必须选择合适大小的报文。

UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。UDP 支持一对一、一对多、多对一和多对多的交互通信。

三、TCP协议

传输控制协议(Transmission Control protocol,TCP)是面向连接的传输层协议,是为了在不可靠的互联网上提供一个可靠的端到端传输,面向字节流连接而设计的。

每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)

TCP协议中所谓的连接是指网络中进行通信的两个应用程序为了相互传递消息而建立的专有的、虚拟的通信线路,也叫做虚拟电路,不是一条真正的物理连接。TCP负责连接的建立、断开、保持等管理工作。

四、TCP的连接管理

1.TCP的连接建立

每一次数据传输之前,首先需要在应用进程间建立传输连接,也就是在源进程和目的进程之间建立一条逻辑上的通道,简称虚电路

在TCP中,建立连接采用3次握手的方式实现。

2.TCP的连接释放

在数据传输结束后,通信的双方都可以发出释放连接的请求。因为TCP连接是全双工的,所以每个方向的连接都必须单独地进行关闭。

在TCP中,释放连接采用4次握手的方式实现。

五、TCP可靠传输的实现

TCP可靠传输的基础是滑动窗口协议连续ARQ协议,配合着流量控制拥塞控制,使得整个传输过程保证传输信道不产生差错;不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。

1)停止等待协议

所谓停止等待协议就是每发送完一个分组就停止发送等待对方的确认。在收到确认后再发送下一个分组。如果没有在规定时间内收到对方的确认,就认为刚才发送的报文段丢失了,便会对丢失的报文段进行重发。

缺点:使用停止等待协议的缺点是每次发送分组时必须等到分组确认后才能发送下一个分组,这样会造成信道的利用率过低。

2)连续ARQ协议

连续 ARQ 协议是为了解决停止等待ARQ协议对信道的利用率过低的问题。它通过连续发送多组数据,然后再等待对此多组报文段的确认回答

连续ARQ协议可以提高信道的利用率。它引入了滑动窗口,通过滑动窗口可以批量发送数据,发送方维持一个发送窗口,凡位于发送窗口内的分组都可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。

累积确认机制虽然容易实现,但不能正确反映收到的所有分组,容易出现数据丢失却不重发的情况。连续ARQ协议采用回退机制。比如,发送端发送到5个数据分组,而中间的第3个分组丢失了,接收方只能对前面2个分组发出确认,发送方只好把后面的3个分组重发。

当通信线路质量不好时,连续ARQ协议会带来负面的影响,可能还不如传统的停止等待协议。此时,可以使用选择重传协议。选择重传协议只重新发送丢失的数据,不用重新发送后续已经收到的数据。

3)滑动窗口实现流量控制

TCP协议里窗口机制有2种:一种是固定的窗口大小;一种是滑动的窗口。滑动窗口协议定义了在缓存上的窗口。TCP在发送端和接收端分别设定发送窗口和接收窗口大小。通过调整发送方窗口和接收方窗口的大小可以实现流量控制。

4)超时重传时间的选择

超时重传是TCP协议保证数据可靠的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到它发送成功为止。这里的关键是重传超时时间(Retransmission TimeOut,RTO)的选择。

报文段的往返时间RTT、报文段的平均往返时间RTTS与重传超时时间RTO的关系为:

RTO=RTTS+4×RTTD

上式中的RTTD是RTT的偏差的加权平均。

5)拥塞控制

拥塞是由于网络中的路由器或链路过载而引起的严重延迟现象,拥塞的发生会造成数据的丢失,数据的丢失会引发超时重传,超时重传的数据又会进一步加剧网络拥塞,若不控制,最终会导致系统崩溃。

TCP的拥塞控制是利用发送方的窗口来控制注入网络的数据流的速度,减缓注入网络中的数据流后,拥塞就会自然解除。

发送方设置变量拥塞窗口,一旦发现拥塞,TCP将减小拥塞窗口,进而控制发送窗口。TCP采用4种策略来控制拥塞窗口的大小,分别是慢启动策略、拥塞避免、快速重传、快速恢复。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值