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

(运输层)TCP协议、滑动窗口机制、TCP连接建立(三次握手)

2017-09-11 17:23 465 查看

一 、应用进程之间的通信

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

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

Ø  运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。

Ø  “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。

二、运输层的主要功能



Ø  运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。

Ø  运输层还要对收到的报文进行差错检测。

Ø  运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。 

Ø TCP的特点:

=》 TCP 是面向连接的运输层协议。

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

=》TCP 提供可靠交付的服务。

=》TCP 提供全双工通信

=》面向字节流

注意:

==TCP 连接是一条虚连接而不是一条真正的物理连接。

==》TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。

==》TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。

==》TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

Ø  UDP 是面向报文的:

=》发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交付下来的报文,既不合并,   也不拆分,而是保留这些报文的边界。

=》应用层交给 UDP多长的报文,UDP就照样发送,即一次发送一个报文。

=》接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整 的报文。

=》应用程序必须选择合适大小的报文。

 

三、 TCP的端口

Ø  端口用一个 16
位端口号进行标志。

Ø  端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

四、TCP的连接

Ø  TCP 把连接作为最基本的抽象。

Ø  每一条 TCP 连接有两个端点。

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

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

              套接字 socket = (IP地址: 端口号) 

 每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

              TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}   

 

五、可靠传输的工作原理

1、停止等待协议

     




请注意:

1) 在发送完一个分组后,必须暂时保留已发送的分组的副本
2) 分组和确认分组都必须进行编号
3) 超时计时器的重传时间应当比数据在分组传输的平均往返时间一些。

可靠通信的实现:

Ø  使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。
Ø  这种可靠传输协议常称为自动重传请求ARQ(Automatic Repeat reQuest)。
Ø  ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

2、流水线传输

Ø  发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。
Ø  由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

                 


六、TCP 的流量控制——滑动窗口机制

      流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。而TCP控制流量则是利用滑动窗口机制实现的。
     滑动窗口协议原理:对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有落在接收窗口内的帧才允许接收。
      开始的时候窗口比较小,然后开始增长直到有错误发生时为止;-窗口的滑动依赖于网络性能。通过调整发送方窗口和接收方窗口的大小可以实现流量控制,就象通过阀门控制水流速度一样。也就是说 TCP协议通过滑动窗口来实现流量控制差错控制以至于实现可靠传输。
 
     解释:TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间数据传输。每个TCP/IP主机支持全双工数据传输,因此TCP有两个滑动窗口:一个用于接收数据,另一个用于发送数据。TCP使用肯定确认技术,其确认号指的是下一个所期待的字节
      假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据。当接收方设备要求降低或者增大网络流量时,可以对窗口大小进行减小或者增加,本例降低窗口大小为2,每一次发送两个数据包。当接收方设备要求窗口大小为0,表明接收方已经接收了全部数据,或者接收方应用程序没有时间读取数据,要求暂停发送。发送方接收到携带窗口号为0的确认,停止这一方向的数据传输。
      滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。
 

七、 TCP 的运输连接管理

1、运输连接的三个阶段

       运输连接就有三个阶段,即:连接建立数据传送连接释放。运输连接的管理就是使运输连接     
的建立和释放都能正常地进行。

连接建立过程中要解决以下三个问题:

Ø  要使每一方能够确知对方的存在
Ø  要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
Ø  能够分配运输实体资源(如缓存大小,连接表中的项目等)。

TCP连接的建立都是采用客户/服务器方式。

2.TCP 的连接建立—三次握手









三次握手传送的内容:

       第一次握手:建立连接时,客户端A向服务端B发送请求报文段,这时首部中的同步位SYN =1,同时选择一个初始序号seq= x.TCP规定SYN=1报文段不能携带数据,但是要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态,等待服务器确认。

       第二次握手:服务器收到请求报文后,如同意连接,则向A发送确认,同时自己也发送一个确认报文段,确认报文段中SYN和ACK都置1,确认号ack = x+1,同时自己也为自己选择一个初始序号seq =y。注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。

       第三次握手:客户端A收到B的确认后,还要向B给出确认报文段。确认报文段的ACK=1,确认号ack =y+1,而自己的序号seq=x+1.此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

    完成三次握手,客户端与服务器开始传送数据。为什么客户端A还要发送一次确认呢?主要是为了防止已失效的连接请求报文段突然又传送到了服务端B,因而产生错误。

3、三次握手建立 TCP 连接的状态

                        


4、连接的释放

     数据传输结束后,双方都可释放连接,但一方(设为A)释放连接前需获得另一方(设为B)的允许,如果此时B方仍有数据要传输,则连接不得释放,A仍要接收B的数据,直至B方数据传输完毕后,B方发出释放连接的要求,得到A方的许可确认后,B释放连接,A等待2SML后释放连接,此时通信结束。
如下图所示:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息