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

[传输层]TCP协议

文章目录

  • 报文格式
  • 连接管理
  • 可靠传输

面向连接的传输层协议
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
TCP提供可靠有序,不丢不重
TCP是面向字节流的

TCP工作模型:
在这里插入图片描述
发送方有一个缓存,缓存:
1.待发送
2.已发送但未得到确认
接收方也有一个缓存,缓存:
收到但未确认的
不按序到达的

TCP提供全双工的通信方式

报文格式

MSS:Maximum Segment Size,一个TCP报文中最大可携带多少有效数据

在这里插入图片描述
数据偏移:首部长度,4B为单位,有4位,表示TCP首部长度,所以TCP首部长度范围在20B到4*15=60B

连接管理

在这里插入图片描述

三个阶段:
连接建立-数据传送-连接释放

方式:
客服/服务器方式,主动发起连接的叫客户,被动等待连接建立的叫服务器
客户和服务器都是进程

连接建立:
三次握手
有件事不知当讲不当讲 (询问)
当讲你说吧 (确认)
好的,,巴拉巴拉 (对确认再确认)

在这里插入图片描述
ROUND1:
客户端发送连接请求报文段,无应用层数据
SYN=1,seq=x(随机)

ROUND2:
服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据
SYN=1, ACK=1, seq=y(随机), ack=x+1

ROUND3:
客户端为该TCP连接分配缓存和变量,并向服务器返回确认的确认,并可以携带数据
SYN=0,ACK=1,seq=x+1, ack=y+1

SYN洪泛攻击

连接释放:
四次挥手
我说完了
好的那我想说巴拉巴拉
好我也说完了
好的

在这里插入图片描述
ROUND1:
FIN=1, seq=u

ROUND2:
ACK=1, seq=v, ack=u+1

经过ROUND1和ROUND2,已经单方面断开了A到B的连接,A已经不能向B发送数据了,但B还能向A发送数据

ROUND3:
FIN=1, ACK=1, seq=w(w取决于ROUND2之后服务器端又发了多少), ack=u+1

ROUND4:
客户端回一个确认报文段,再等到2MSL(最长报文段寿命)后,连接彻底关闭
ACK=1,seq=u+1,ack=w+1

但是不一定非要首先客户端去释放连接,也可以服务器首先去释放连接,但是发起连接必须要客户端去发起

ACK报文,握手3,挥手2,挥手4,还有数据传输中的确认报文(你传过来一个,我回一个确认报文),这些确认报文,都不消耗序号

可靠传输

网络层提供的是best-effort,不可靠传输,那么传输层,就要用TCP协议实现可靠传输

校验
报文格式里的校验字段

序号
序号字段

确认
确认报文段
如果由于传输速度等原因失序,那么会发送应到达的报文的确认报文,然后发送方收到以后知道失序,重传

重传
TCP的发送方如果在规定时间内没有收到确认,就要重传已发送的报文段,

重传时间,如果过短,就会导致有些报文还没到就要重传
如果过长,网络空闲又过大

自适应算法RTTs(加权平均往返时间)
冗余确认(冗余ACK)

在这里插入图片描述

http://www.xdnf.cn/news/431101.html

相关文章:

  • Python Day 24 学习
  • Docker疑难杂症解决指南
  • 一个电源上 有+ - 接地的符号
  • kubernetes-harbor镜像仓库使用自签https证书
  • Linux干货(一)
  • 动态规划问题 -- 多状态模型(打家劫舍II)
  • 磁光克尔效应在量子计算中的应用
  • GNSS数据自动化下载系统的设计与实现
  • udp多点通信和心跳包
  • 在scala中使用sparkSQL读入csv文件
  • python中的进程锁与线程锁
  • Mysql 事物
  • React状态管理-对state进行保留和重置
  • FCB文件疑问+求助:01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待详解
  • FFmpeg3.4 libavcodec协议框架增加新的decode协议
  • INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行
  • 深入理解 C++ 标准模板库(STL):从基础到实践
  • 不用mathtype将word中的公式修改成新罗马字体(加编号)
  • Android设备是否满足硬件要求
  • R-tree详解
  • 快速幂算法详解
  • 【前端】【JavaScript】【总复习】四万字详解JavaScript知识体系
  • 【C++进阶篇】二叉搜索树的实现(赋源码)
  • 国产大模型「五强争霸」,决战AGI!
  • upload-labs通关笔记-第3关 文件上传之黑名单绕过
  • 数据结构(2)线性表-顺序表
  • 二次封装 el-dialog 组件:打造更灵活的对话框解决方案
  • VUE_UI组件的二次封装
  • Redis Cluster 集群搭建和集成使用的详细步骤示例
  • 微信小程序分包策略:优化加载性能与用户体验