传输控制协议TCP(20)

 TCP的特点

1、TCP 是面向连接的运输层协议。

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

3、TCP 提供可靠交付的服务。

4、TCP 提供全双工通信。

5、面向字节流。  

TCP 面向流的概念

TCP 的连接

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

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

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

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

套接字 (socket)

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

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

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

可靠传输的工作原理

停止等待协议

(a)无差错情况

(b)超时重传

注意

1、在发送完一个分组后,必须暂时保留已发送的分组的副本。

2、分组和确认分组都必须进行编号。

3、超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

确认丢失和确认迟到

(a)确认丢失

(b)确认迟到

可靠通信的实现

1、使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。

2、这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。

3、ARQ 表明重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组 。

流水线传输

1、发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。

2、由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

TCP 报文段的首部格式

TCP 的运输连接管理 

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

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

1、要使每一方能够确知对方的存在。

2、要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。

3、能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。 

客户服务器方式

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

主动发起连接建立的应用进程叫做客户(client)。

被动等待连接建立的应用进程叫做服务器(server)。

TCP 的连接建立(用三次握手建立 TCP 连接)

1、A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。

2、B 的 TCP 收到连接请求报文段后,如同意,则发回确认。

  B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq = y。

3、 A 收到此报文段后向 B 给出确认,其 ACK = 1,    确认号 ack = y  + 1。

  A 的 TCP 通知上层应用进程,连接已经建立。

4、  B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。

5、用三次握手建立 TCP 连接的各状态

TCP 的连接释放

1、数据传输结束后,通信的双方都可释放连接。    

现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP    连接。

A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。

2、B 发出确认,确认号 ack = u+ 1,而这个报文段自己的序号 seq = v。

  从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B 若发送数据,A 仍要接收。

3、 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。

4、 A 收到连接释放报文段后,必须发出确认。

在确认报文段中 ACK = 1,确认号 ack = w +1,自己的序号 seq = u + 1。

5、TCP 连接必须经过时间 2MSL 后才真正释放掉。

发布了113 篇原创文章 · 获赞 94 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_44762986/article/details/104648042
今日推荐