当前位置: 首页 > news >正文

TCP的连接建立

面向连接

        定义:在发送数据之前,需要建立一条点到点的连接 

        (参数协商的过程。因为tcp要保证可靠,所以tcp通信是发生在双方之间、两端之间的,两端在正式发送数据之前需要约定一些初始参数,这个过程就是面向连接的过程。)

        如何区分tcp连接(4个参数)

                源IP地址、目标IP地址、源端口、目标端口 --- TCP四元组可以唯一区分和标识一条TCP的连接。

TCP报文结构

序列号

        tcp是基于字节流”的协议。每发送一个字节,序列号+1,所以序列号就是字节流的编号。

确认序列号

        表明接收方希望收到发送方发送的下一个字节的序号。

首部长度

        单位为字节。TCP报文头部长度,因为TCP报文存在选项字段,我们称为可变长头部,TCP头部最短位20个字节。

保留

        6位,暂时没有启用的字段。

6个标记位:

        URG---紧急标记位。如置1,代表此tcp报文数据部分中包含需要紧急处理的数据(用上层应用层定义)并将需要紧急处理的数据放在正常数据最前面同时紧急指针被激活。 

        ACK---确认标记位。如置1,表示这个tcp报文段它具有确认功能同时确认序列号被激活。

        FIN---结束标记位。如置1,表示正常协商断开tcp连接的过程。

        RST---重置连接。如置1,表示异常断开,如直接断开或单方面强制断开

        SYN---建立TCP连接时需要置1,代表希望与之建立tcp连接,同时会给序列号设置一个随机的初始值。

窗口大小

        tcp间实现流控的关键参数,对流量传输的速率进行控制。流控是tcp保证可靠的一个机制。

校验和:伪头部校验

TCP的三次握手

        TCP状态变化

        

        客户端

                1、关闭状态 --- 在发送SYN请求建立连接之后,进入到下一个状态

                2、SYN_SENT --- 客户端等待服务器返回SYN_ACK报文

                3、建立完成 --- 收到服务器返回的SYN_ACK报文,因为此时客户端指向服务器的会话已经建立完成,所以客户端发送给服务器的最后一个ACK报文,是允许携带数据的。

        服务器

                1、关闭状态 ,当服务器的应用程序创建一个监听的套接字之后,将进入下一个状态。 

                2、Listen(侦听状态),当接收到客户端发送的SYN报文之后,为TCP连接分配缓存空间,同时发送SYN_ACK报文段,进入到下一个状态。

                3、SYN_RCVD状态,等待客户端回复ACK,收到之后,进入下一个状态

                4、建立完成状态 --- TCP双向会话均建立完成。

        

        

SYN泛洪攻击

        

        解决办法

                1、防火墙代理

                2、SYN Cookie

                服务器在收到SYN请求报文后不会立即分配缓存空间,他会将四元组(源ip、目

        标ip、端口号、随机数)提取做hash哈希运算,输出得出摘要值即SYN Cookie。服务

        器回复客户端时将SYN Cookie充当初始序列号,等待客户端回复ACK,收到后将客

        户端回复的ACK四元组中的源ip、目标ip、端口号加上之前的随机数再次进行hash,

        得出结果+1,与客户端回复的ACK Num对比,如果相同则为其分配缓存空间。

 为什么必须是三次握手,而不是两次或者四次??  

不是四次 --- 节省资源,防止资源浪费

不是两次 --- 三次握手可以防止旧的重复连接造成混乱

相关文章:

  • 解释一下Unity碰撞的触发条件
  • 【LeetCode Solutions】LeetCode 121 ~ 125 题解
  • Unity中根据文字数量自适应长宽的对话气泡框UI 会自动换行
  • 助力 Windows 文件管理:重命名与清理重复文件软件精选
  • leetcode刷题日记——罗马数字转整数
  • 基于SpringBoot + HTML 的心理健康管理系统
  • PHY——LAN8720A 代码解析 (三)
  • HttpClient-01.介绍
  • Libevent UDP开发指南
  • 基于动态渲染与反检测技术的爬虫框架设计
  • Spring笔记05-面向切面编程
  • 每日一题(小白)暴力娱乐篇9
  • 【AI4CODE】4 Trae 锤一个数据搬运工的小应用
  • fpga:分秒计时器
  • 创建虚拟机
  • ChatGPT 的新图像生成器非常擅长伪造收据
  • 3dmax批量转glb/gltf/fbx/osgb/stl/3ds/dae/obj/skp格式导出转换插件,无需一个个打开max,材质贴图在
  • vue实现俄罗斯方块
  • MMD 转 STL,拓宽 3D 模型应用边界:方法与门道
  • 《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
  • 体验中国传统文化、采购非遗文创,波兰游客走进上海市群艺馆
  • 广西百色通报:极端强对流天气致墙体倒塌,3人遇难7人受伤
  • 深圳市政协原副主席王幼鹏被“双开”
  • 山东14家城商行中,仅剩枣庄银行年营业收入不足10亿
  • 眉山“笑气”迷局:草莓熊瓶背后的隐秘与危机
  • 美联储主席:不打算先发制人地降息,将继续观望