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

tcp基础协议

网络层

  • 可路由协议:可跨越三层设备进行路由转发的协议,如 IPIPX

  • 不可路由协议:不可跨越三层设备,也不能进行路由转发的协议,如 NETBEUI

  • 路由协议:在路由器之间传递路由信息并计算路由,为可路由协议选择转发路径的协议,如 RIPOSPFBGP

IP协议

IP协议特点

  • 无连接性:IP协议在传输数据之前不需要建立连接。这意味着每个数据包都是独立发送的,不会受到其他数据包的影响。

  • 尽力而为的服务:IP提供的是尽力而为的服务,即超过转发能力时直接丢弃数据包,不保证数据的可靠传输。

  • 无序传输:IP数据包在网络中的传送是无序的,在转发过程中,不考虑到达接收端的顺序,每个数据包单独进行路由(即单独选择到达目的地的路径)。

  • 不可靠性:IP分组传送是不可靠的,发送端只管发送数据,不关心接收端是否收到数据,IP的可靠性需要上层协议(如TCP)来解决。

IP包头结构

版本号:4位,IPv4:值为4。 包头长度:4位,IP包头长度,单位为4字节。 包头长20字节,值为5;带选项的包头长24字节,值为6。 服务类型:8位,QOS使用;前3位为IP优先级,前6位为DSCP。 报文长度:16位,IP包总长度(包头+数据),单位为字节。

标识符:16位 同一IP数据包的各个分片的标识符相同。

标志位(Flags):3位 第1位:未使用。 第2位:DF位(Don't Fragment),DF=1表示不允许对该包进行分片,DF=0表示允许分片。 第3位:MF位(More Fragment),MF=1表示后面还有分片,MF=0表示这是最后一个分片。

分段偏移量:13位 本分片数据载荷在原IP包数据载荷中的相对位置,单位为8字节。

例如,一个4000字节的IP包在MTU=1500字节下的分片: 4000字节IP包的内容长3980字节,内容的第一个字节偏移量为0。 第1个分片长1500字节,MF=1,分段偏移量0,含原包内容1480字节; 第2个分片长1500字节,MF=1,分段偏移量185,含原包内容1480字节; 第3个分片长1040字节,MF=0,分段偏移量370,含原包内容1020字节。

TTL,8位,每路由转发一次减1,用于防环。 协议:8位,标识上层协议。如TCP协议号6,UDP协议号17。 包头校验和:16位,因IP包头长度可变,用于IP包头完整性校验。

MTU(最大传输单元) 链路层MTU: 链路层能传的最大的帧,含链路层头部。 网络层MTU: 网络层能传的最大的包,含网络层头部。

路由器IP分片 数据包大于入接口MTU,Cisco设备将丢弃该包。 数据包大于出接口MTU 该包的DF=1时,丢弃该包;该包的DF=0时,将该包分片。 IP分片只在目标主机上重组。

tcp协议

TCP协议概述

Transmission Control ProtocolTCP TCP 是面向连接的,数据传输需要经过建立连接、传输数据、断开连接三个阶段。 全双工通信,数据可在同一连接上同一时间内双向流动。 TCP 提供有序的数据传输,接收端按字节对数据进行确认。 TCP 数据传输是可靠的,包头中含有校验和可对数据进行校验,并具有超时重传机制重传丢失的数据。 TCP 提供高质量的传输服务,通过滑动窗口机制实现流量控制。 TCP 适合于可靠性要求高的应用。

TCP包头结构

端口号:16位,0——65536,1024以下为知名端口号。 窗口:16位,滑动窗口的大小,单位为字节,即能接收的字节数。 报头长度:4位,TCP包头长度,单位为4字节。 校验和:16位,TCP报头和数据的校验和。

字节号 TCP把要在一个连接上发送的数据都按字节编号。通信双方的编 号是相互独立的,编号不一定要从0开始,TCP选择0~(2的32次方-1)之间的一个随即数作为第1个字节的编号。 序号 TCP把要在一个连接上发送的数据分成若干报文段,然后给每个 报文段指派一个序号,序号就是该报文段第一个字节的编号。 确认号 期望接收到的下一个字节的编号。

序号案例 假设一条TCP连接要传送一个5000字节的文件。第一个字节的编号是10001。如果该数据用5个报文段来发送,且每个报文段携带1000字节的数据,那么每个报文段的序号分别是什么?

tcp包头结构

编码位(TCP Flag) FIN:结束标志;为1时,请求断开连接。 SYN:同步标志;为1时,请求建立连接。 RST:复位标志;为1时,请求重新建立TCP连接。 PSH:通知接收端立即将数据交给用户进程,不要停留在缓存中,等待更多的数据。 ACK:确认标志;确认号有效位,表明该数据包包含确认信息。 URG:紧急标志;紧急指针有效位,与16位紧急指针配合使用。

tcp工作机制

TCP连接建立——TCP MSS TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数在三次握手时发给对方。

tcp连接断开--四次断开机制

TCP流量控制

滑动窗口机制

TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收窗口),共4个窗口。

TCP通过强制发送方和接收方不断调整窗口大小,来实现流量控制。

出现拥塞时,窗口减半;

传输稳定时,窗口慢慢变大。

tcp的可靠性主要是通过确认应答+超时重传来实现的。

1 确认应答机制

先看发送方:在没有滑动窗口机制之前,发送方一次只能发送一段报文,且每次发送完后要等待接收方的ACK确认,只有在收到接收方的ACK确认应答后,才能将发送缓冲区里对应的数据释放掉,并开始发送第二段报文。如果在规定时间内未收到ACK确认,则尝试重传这段报文(超时重传机制)。
​再看接收方:接收方每次接收到报文后,都要给发送方返回一个确认应答报文ACK,告知对方已正确接收数据,期望下次收到报文段的起始序列号是ack。

udp协议

UDP包头结构

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

相关文章:

  • 字节的机器人模型 GR-3
  • 高可用架构模式——如何应对接口级的故障
  • uni-app支付宝小程序样式穿透失效
  • C51:用DS18B20传感器读取温度
  • 如何将拥有的域名自定义链接到我的世界服务器(Minecraft服务器)
  • 【Rust线程】Rust高并发编程之线程原理解析与应用实战
  • 【unity游戏开发入门到精通——组件篇】unity的粒子系统力场 (Particle System Force Field)实现如旋风、吸引力、风吹效果等
  • 数据库垂直拆分和水平拆分
  • 【​I2S:芯片设计中的“音频桥梁”​】
  • Android Service 全解析:从基础原理到实战优化
  • Windows11 本地安装docker Desktop 部署dify 拉取镜像报错
  • 【DataWhale】快乐学习大模型 | 202507,Task06笔记
  • 游戏装备被盗,运营商赔不赔
  • Petalinux的常用指令
  • 【Linux | 网络】应用层(HTTPS)
  • Python 程序设计讲义(7):Python 的基本数据类型——整数类型
  • Linux 或者 Ubuntu 离线安装 ollama
  • Paimon的部分更新以及DeleteVector实现
  • 使用阿里云 ESA 边缘函数转发代理 docker registry
  • Vue TodoList案例
  • day060-zabbix监控各种客户端
  • Android网络请求,Retrofit,OKHttp学习
  • 在AI深度嵌入企业业务的当下——AI时代的融合数据库
  • 【Vue3】ECharts图表案例
  • 跟著Qcadoo MES系统学习产品设计001
  • [CH582M入门第十步]蓝牙从机
  • Redis的key过期策略
  • 基于多种机器学习的水质污染及安全预测分析系统的设计与实现【随机森林、XGBoost、LightGBM、SMOTE、贝叶斯优化】
  • 【前沿技术动态】【AI总结】RustFS:从 0 到 1 打造下一代分布式对象存储
  • Linux网络-------1.socket编程基础---(UDP-socket)