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

网工笔记-传输层

概述

主要有两个协议TCP(可靠)和UDP(不可靠)

工作位置

区分不同应用进程的时候,利用端口号来区分

端口号是16位的,只作用于本机的应用程序,互联网中不同计算机相同的端口号没有联系

服务器使用的端口号:

0-1023为熟知端口(一般不能用)

1024-49151为登记端口(一般可以用户指定)

客户端使用的端口号:

49152-65535(短暂端口,用完回收)

UDP协议

概述

UDP在ip数据报服务上多增加了两个功能

1.复用和分用

2.差错检测

特点

1.无连接

2.使用最大可能的交付

3.面向报文,一次传输一块完整的报文

4.没有拥塞控制

5.支持一对一,一对多,多对一,多对多通信

6.首部开销小,只有八个字节

发送方UDP对应用层交下来的报文,不合并也不拆分,原样发送

接收方UDP对IP层交上来的UDP数据报,去除首部后原封不动的交付给上层应用程序,一次交付一个完整的数据报。

首部格式

伪首部:防止传过来的数据的ip地址不对

TCP协议

概述

1.特点

TCP只能承载单播和IPv6的任播

2.TCP面向流概念

3.TCP的连接

套接字

TCP的首部格式

序号:指的是本报文段所发送数据的第一个字节的序号

确认号:告诉对方你接下来发给我的数据段的序号,以及确认号之前的数据段我都收到了

数据偏移:就是首部长度

窗口:用来描述我能接收多大的数据,经常是动态变化的

校验和:检查首部和数据两个部分,在计算校验和时,需要在TCP报文段的前面加上12字节的伪首部。

TCP伪首部

紧急指针:当URG=1的时候才有意义,指出本报文段中紧急数据的字节数,在这之前的都紧急,之后就不紧急了。

选项:

选项(2):最大报文段长度MSS:是每个TCP报文段中数据字段最大的长度。

选项(3):窗口扩大

选项(5):SACK

选项(8):时间戳

TCP的滑动窗口和流量控制

1.以字节为单位的滑动窗口

发送缓存和发送窗口

接收缓存和接收窗口

2.利用滑动窗口实现拥塞控制

流量控制:让发送方发送的速率不要太快,让接收方来得及接收

实现:可变窗口机制

发送方的发送窗口大小是由接收方来决定的

可能发生死锁

解决:持续计时器:只要TCP连接的一方收到对方的零窗口通知,就启动该持续计时器。

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),在对方确认这个探测报文段时给出当前窗口值。

若窗口任然为0,收到这个报文段的一方就重新设置持续计时器

若窗口不是0,则死锁僵局就可以打破

发送方糊涂窗口综合征

接收方糊涂窗口综合征

TCP的拥塞控制

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

拥塞控制:防止过多数据注入到网络中,避免网络中的路由器或链路过载,是一个全局性的过程

流量控制:抑制发送端发送数据的速率,以使接收端来得及接收,是一个端到端的过程

TCP的拥塞控制方法

控制拥塞窗口变化的原则

只要网络没有出现拥塞,拥塞窗口就可以增大些(提高网络利用率)

只要网络出现拥塞或可能出现拥塞,拥塞窗口就会减少些

判断网络出现拥塞或可能出现拥塞的情况:

出现:超时重传计时器超时

可能:收到3个重复的确认

TCP拥塞控制算法

1.慢开始

2.拥塞避免

3.快重传

4.快恢复

1.慢开始

2个控制变量:拥塞窗口cwnd、慢开始门限ssthresh(按照经验设置的)

当cwnd<sshresh就会使用慢开始算法

cwnd实现指数级别的增长

2.拥塞避免算法

cwnd>=sshresh

当网络出现拥塞

3.快重传算法

出现快重传的情况,就要迅速采取措施,措施就是快恢复算法

4.快恢复算法

TCP拥塞控制流程图

TCP的连接管理

TCP的连接建立

TCP的建立连接过程叫握手,采用三次握手

主动发起连接建立的应用进程叫客户

被动等待连接建立的应用进程叫服务器

TCP的连接释放

数据传输结束后,通信双方都可以释放连接

采用四次挥手

MSL:报文最大生存时间

RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。

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

相关文章:

  • 插值算法 - 双三次插值(Bicubic Interpolation)
  • 【无标题】四色定理研究团队的构建与实施路径——跨学科建模、编程与理论拓展的全流程方案
  • 实现一个简单回调列表
  • 代理对象的mock
  • 数据库所有知识
  • 随机游走之 个人的简单理解
  • 通义千问Qwen3全维度解析
  • Windows系统下,导入运行 RuoYi-Vue3 项目
  • 批量打印工具使用全攻略
  • 深度循环神经网络
  • 链表反转操作经典问题详解
  • python之数字类型的操作
  • 【linux网络】网络基础概念
  • 从零构建Dagster分区管道:时间+类别分区实战案例
  • 企业的AI转型:生死时速的进化之路
  • 再学GPIO(三)
  • 系统设计中三高指什么
  • OpenGL学习笔记(PBR)
  • LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding
  • 大模型与MCP:重塑AI应用的新篇章
  • 手动安装OpenSSL1.1.1
  • 【深度解析】YOLOE登场:CNN路线的开放世界新答卷,超越YOLO-World与Transformer
  • 去哪儿旅行 Bella Pre 分析
  • (003)Excel 在滚动的时候,保持标题栏可见
  • 论文阅读的三个步骤
  • nextcloud私有网盘系统搭建
  • 【AI提示词】第一性原理
  • Laravel基础
  • 基于PLC的图书管理识别系统设计
  • 修复典籍知识问答典籍管理界面典籍不能正确加载的问题