首页 > 其他分享 >TCP协议

TCP协议

时间:2023-04-12 14:25:20浏览次数:44  
标签:协议 字节 ACK 报文 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作为新的门槛值,开始加法增大。

 

标签:协议,字节,ACK,报文,TCP,发送,连接
From: https://www.cnblogs.com/wintermist/p/17309619.html

相关文章

  • 以太网通信控制板-控制板连接电脑网线然后作为TCP客户端和电脑端的TCP服务器通信
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/CH579_DTU_PBX/index1.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明这节......
  • centos编译安装tcpdump
    环境CentOSLinuxrelease7.9.2009(Core)准备安装包libpcap-1.5.3.tar.gztcpdump-4.9.2.tar.gz下载地址:https://www.tcpdump.org/release/开始安装安装libpcap[root@localhost~]#tarzxvflibpcap-1.5.3.tar.gz[root@localhost~]#cdlibpcap-1.5.3[root@localhost......
  • 嵌入式软件架构设计协议定义
    在嵌入式软件架构设计中,协议定义是非常重要的。协议定义规定了通信双方之间的消息格式以及通信方式,保证了系统之间的可靠性、安全性和互操作性。以下是一些常见的嵌入式软件架构设计协议定义:UART协议:UART是一种简单的串行通信协议,适用于低速、短距离的通信。UART不需要外部时钟信号......
  • m基于GA遗传优化和OSPF协议的WSN最短路由算法matlab仿真,并输出节点的不同层域
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要2.1GA遗传优化        GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按......
  • 一个TCP 连接可以发送多少个HTTP请求?
    一、现代浏览器与服务器建立了一个TCP连接后是否会在一个HTTP请求完成后断开?什么情况下会断开?默认情况下建立TCP连接不会端口,只有再请求报头中声明Connection:close才会再请求完成后关闭连接 二、一个TCP连接可以对应多少个HTTP请求?一个TCP连接时可以发送多个HTTP请求的......
  • 重新理解RocketMQ Commit Log存储协议
    本文作者:李伟,社区里大家叫小伟,ApacheRocketMQCommitter,RocketMQPython客户端项目Owner,ApacheDorisContributor,腾讯云RocketMQ开发工程师。最近突然感觉:很多软件、硬件在设计上是有rootreason的,不是bydesgin如此,而是解决了那时、那个场景的那个需求。一旦了解后,就会感觉在......
  • 什么是文件传输协议,文件传输协议又是怎么工作的
    文件传输协议FTP是一种仍在使用的协议,在上载和下载文件时仍然比较流行,通常是那些太大的文件,需要花费很长时间才能通过常规电子邮件程序作为附件下载进行传输。从技术上讲,它是“文件传输实用程序”,是许多TCP/IP(传输控制协议/Internet协议)实用程序之一。这是很多技术术语:大多......
  • EasyCVR平台基于GB28181协议的语音对讲配置操作教程
    EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能。其中,语音对讲功能在视频监控场景中具有......
  • SPI协议
    SPI协议简介SPI协议是由摩托罗拉公司提出的通讯协议(SerialPeripheralInterface),即串行外设接口。广泛用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。区分它与I2C协议差异以及FLASH存储器与EEPROM存储器的区别。下面我们分别对SPI协议的物理层及协议层进行讲解。SS低电平......
  • [网络]应用层协议:HTTP / HTTPS
    1HTTP/HTTPS概述2HTTP/22.1HTTP/2辉煌不在?虽然HTTP/2标准在2015年5月就以RFC7540正式发表了,并且多数浏览器在2015年底就支持了。但是,真正被广泛使用起来要到2018年左右,但是也是在2018年,11月IETF给出了官方批准,认可HTTP-over-QUIC成为HTTP/3。2018年的时候,我写过一篇......