传输层(TCP/IP 协议)未完待续

来源:互联网 发布:超级优化基因液txt免费 编辑:程序博客网 时间:2024/06/07 05:09

以下内容摘自《计算机网络》

通信的端点并不是主机,而是主机中的进程

TCP的特点
1.TCP面向连接的运输层协议
2.每条TCP连接只能有两个端点,每一条tcp连接只能点对点
3.TCP是可靠的交付,通过tcp连接传送数据,无差错,不丢失,不重复,并且按序到达
4.TC提供全双工通信
5.面向字节流

tcp并不关心应用进程一次把多长的报文发送到TCP缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文应该包含多少个字节

tcp把连接作为基本的抽象,每一条tcp连接的端点的端点是套接字(socket socket = ip地址:端口号),每一条tcp连接唯一地被通信两端的两个端点所确定

停止等待协议
如图
这里写图片描述

发送端每次发送数据后,就会暂停,等对接受端的接受确认信息,当接受端接受出现问题时,就会将数据丢弃,不发送接收确认给发送方,则当发送方超过一段时间没有收到接受方的确认信息后,会重新发送刚刚的数据,这种机制叫做超时重传
在这种情况下,
1.发送方发送一组数据后,必须暂时保留已发送的分组的副本,只有在收到相应的确认信息后才能清除分组副本
2.分组和确认分组都会有编号
3.超时计时器设置的重传时间应该比数据在分组传输的平均往返时间更长

当接受端发送确认数据没有传到发送端情况
这里写图片描述
发送端由于没有收到确认信息,在超时重传的机制下,会不断的发送数据,这时接受端会丢弃重复的数据并且发送确认信息。

连续ARQ协议(滑动窗口协议)
发送方每收到一个确认,就吧滑动窗口向前滑动一个分组的位置
这里写图片描述
接受方一般采用累积确认的方式,收到几个分组后,对按序到达的最后一个分组发送确认,这样,到这个分组为止的所有分组都正确收到了。

TCP报文格式
这里写图片描述

常用字段解析
序号:tcp的面向字节流的。在一个tcp连接中传送的字节流中的每一个字节按顺序编号。整个要传送的字节流的起始序号必须在连接建立是设置,首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号
确认号:期望收到对方下一个报文段的第一个数据字节的序号
确认ACK:仅当ACK=1时确认号字段才有效,当ACK=0时,确认号无效,tcp规定,在新建立后所有传送的报文段都必须吧ACK=1;
同步SYN:在连接建立时用来同步序号,当SYN = 1而ACK = 0时,表明这是一个连接请求报文段,对方若同意建立连接,则应在响应的报文段中使用SYN=1.ACK = 1
终止FIN:用来释放一个连接,当FIN=1时,表明此报文段的发送方的数据已经发送完毕,并且要求释放运输连接
窗口:指的是发送本报文段的一方的接收窗口(不是字节的发送窗口),窗口值作为接收方让发送方设置其发送窗口的依据

TCP可靠传输的实现

以字节为单位的滑动窗口
这里写图片描述

发送方没有收到接收方的确认的情况下,发送方可以连续的把窗口内的数据全发送出去,凡是已经发送的数据在,在末尾收到确认之前必须暂时保留,用于超时重传

发送方的窗口可能向后收缩,

原创粉丝点击