TCP协议

TCP协议的特点:

  1. TCP是面向连接(虚连接),是一种点对点的连接。
  2. 每一条TCP只能有两个端点。
  3. TCP连接是可靠的交付,无差错、不丢失、不重复、按顺序到达。
  4. TCP提供全双工通信(双向通信)。因此发送方和接受方都会有发送缓存和接收缓存。
  5. 发送缓存:准备发送的数据&已发送但尚未确认的数据。
  6. 接收缓存:按序到达但尚未被接受应用程序读取的数据&不按序到达的数据。
  7. TCP面向字节流:TCP把应用交下来的数据看成仅仅是一连串无结构的字节流。

TCP首部格式

 

 

 

  • 填充字段:TCP头部要保证长度是4字节(32位)的整数倍
  • 序号: 在一个TCP 连接中传送的字节流中的每一个字节都按顺序编号, 本字段表示本报文段所发送数据的第一个字节的序号。
  • 确认号:期望收到对方下一个报文段的 第一个数据字节的序号。若确认号为N, 则证明到序号N-1为止的所有数据都已正 确收到。
  • 数据偏移(首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远, 以4B位单位,即1个数值是4B。
  • 紧急位URG: URG=1时, 标明此报文段 中有紧急数据,是高优先级的数据,应 尽快传送,不用在缓存里排队,配合紧 急指针字段使用。
  • 确认位ACK: ACK=1时 确认号有效,在连接建立后所有传送的报文段都必须把 ACK置为1。
  • 推送位PSH: PSH=1时, 接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
  • 复位RST: RST=1时, 表明TCP连接中出现 严重差错,必须释放连接,然后再重新 建立传输链接。
  • 同步位SYN: SYN=1时, 表明是一个连接请求/连接接受报文。
  • 终止位FIN: FIN=1时, 表明此报文段发送方数据已发完,要求释放连接。窗口:
  • 指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
  • 检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6。紧急指针: URG=1时才有意义,指出本报文段中紧急数据的字节数。
  • 选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认...

TCP连接管理

  • TCP传输的三个阶段:
  1. 连接建立
  2. 数据传送
  3. 连接释放

A:我有句话不知当不当讲

B:你讲吧

C:#@#@¥

三次握手

 

 

 

泛洪攻击:

SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。攻击者发送TCP SYN, SYN是TCP三次握 手中的第一个数据包,而当服务器返回ACK后,该攻击者不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给攻击者。这样更加会浪费服务器的资源。攻击者就对服务器发送非常大量的这种TCP连接,由于每-一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。

怎么解决泛洪攻击呢?

 

A:我讲完了。

B:好的。

B:我也有要说的话:#@%#……@

A:好的

四次挥手

 

 

 

重传:

 TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。

冗余ACK(冗余确认)

每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。 

 

TCP流量控制:

TCP利用滑动窗口机制实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd (接收方设置确认报文段的窗口字段来将rwnd通知给发送方), 发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。

 

TCP拥塞控制:

拥塞控制和流量控制的区别

 

 

拥塞控制的四种算法

1.慢开始与拥塞避免

 

 从1开始,2,4,8....到达门限值后,开始17.18.19...等到拥塞的时候重新从1慢开始

 

2.快重传和快恢复

 

 快恢复的时候,从24(每次不一定)的一半12作为新的门槛值,开始加法增大。

 

posted @   冬日寻雾记  阅读(223)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示