TCP协议学习总结

TCP协议的特点

TCP协议是基于IP协议实现的传输层协议。实现了可靠面向连接字节流传输的全双工通信。

面向连接:三次握手建立连接,四次挥手结束连接握手成功才能传输数据。(作用是为了之后的有序传输,传输的一些参数可在连接时确定)

字节流:基本单位是字节(8bit),任意个字节

可靠:TCP通过差错检验停等协议,滑动窗口协议等机制实现可靠性传输。

全双工:双方可以同时向对方发送数据

传输效率:拥塞控制 

 

各类机制的实现方法

我们知道可靠要实现的根本上是传输内容是否会出错,出错怎么处理,数据是否会丢失,数据如何稳定传输等问题的解决。

差错检验(判断是否出错):CRC校验,采用循环冗余校验码。在链路层和网络层也使用了该方法检验差错,不属于TCP独有的特性。

CRC校验原理:实际上 CRC是一种散列函数。计算步骤

1.确认 n 位 二进制多项式

2.在原始消息(二进制格式)后加上 n-1 位 0

3. 二进制除法 原始消息除以二进制多项式,得余数

余数极为散列值,添加到原始消息末尾

停止等待(确认应答,确认迟到,确认丢失):

当发送方A发送数据(1-100)后,将会在规定时间内等待接收方B回送应答报文(101)。在规定时间内应答则继续发送下一个报文(101-200),如果回送超时或丢失。

超时(迟到):由于发送方A没有在规定的时间内接受到应答报文,则会重新发送报文(1-100)。在之后A收到重复的应答报文会将重复的丢弃,接受方B亦如是。

丢失:报文在传输中意外丢失,根据超时重传机制,将会再次发送报文。AB都将仅接收到一次对方的报文,对B来说没有影响。

超时时间:超市时间随重传的次数发生变化,初始超时时间为系统定义。之后按倍数或指数递增。重传超过规定的次数则认为对端B故障无法连接,发送端A将强制关闭连接并递交异常关闭消息到应用。

乱序:如果发送端A发送序号 1-100 101-200 201-300 301-400 ,接收方B接收到 1-100 101-200 301-400。则B将会组装1-200递交到上层应用。将301-400放到缓冲区,直到201-300到来。

滑动窗口协议:根据停止等待原理,我们清楚了通信双方分别具有发送窗口和接受窗口。发送时将数据分成多个单位,每个单位的数据标山序号1,2,3.。。。发送方发送 m-n 的数据到接收方时,接收方应回送序号 n+1 确认。发送方从 n+1 起始发送。 

1.发送方A确定窗口大小,发送窗口大小的数据包到接收方B。

2.接受方B确定窗口大小,如果B的接收窗口大小<A的发送窗口大小。则B接收自身接收窗口大小的数据包,其余丢弃。回送下一个序列起始数据包 n+1。

3.发送方发送序号起始为 n+1 的数据包到接收方。

以上可以看出,接受方规定了发送方的发送窗口大小和自身的接收窗口大小。

拥塞控制:发送方发送开始时,会有一个初始拥塞窗口,发送窗口 <= 拥塞窗口(由对端接收能力限制)。

1.发送方发送之前会探测网络拥塞程度,由指数级增加拥塞窗口大小(慢开始)

2.当拥塞窗口到达门限值,拥塞窗口将单步增加窗口大小(即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1) (拥塞避免)

3.当出现网络拥塞,拥塞窗口将变为1,同时门限值变为(拥塞值/2)开始第一步 (乘法减小)

三次握手

建立连接需要进行三次握手,三次握手过程详解

1.客户端发送数据,SYN标志位置1, 对应的值为 j 。状态为SYN_SENT,等待服务器应答。

2.服务器收到数据,回送数据,SYN ACK标志位置1。SYN = k, ACK = j+1。状态为SYN_RECV 等待客户端应答

3.客户端收到数据,回送数据, ACK标志位置1. ACK = k+1。连接建立 ESTABLISHED

四次挥手

1.客户端A向服务器B发送数据, FIN标志位为1 。通知服务器关闭连接。

2.服务器B向客户端A回送数据,ACK标志位位1,通知A接收到通知。

3.服务器B向客户端A发送数据,FIN标志位位1 , 通知A关闭连接。

4.客户端A向服务器B发送数据,ACK标志位为1,表示接受通知,连接关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值