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

五层协议介绍

层次核心功能典型协议/设备
应用层为用户应用程序提供网络服务接口(如文件传输、电子邮件、网页浏览)HTTP、FTP、SMTP、DNS、SSH
传输层提供端到端的可靠或不可靠数据传输,处理流量控制和差错恢复TCP(可靠)、UDP(不可靠)
网络层负责数据包的路由选择和跨网络传输,处理逻辑寻址(如IP地址)IP、ICMP、ARP、路由器
数据链路层将比特流封装为帧,提供物理寻址(如MAC地址)和错误检测,管理链路访问控制Ethernet、Wi-Fi(802.11)、PPP、交换机
物理层定义物理介质的电气、机械特性,传输原始比特流(0/1信号)双绞线、光纤、无线信号、中继器

一、应用层

1.作用:直接为用户应用程序提供网络服务,定义数据格式和交互规则

2.主要协议:HTTP协议,HTTPS协议

3.储备知识

1)日常我们在浏览器上见到的url(统一资源定位符)中包括协议,域名,资源路径

2)表现形式:协议://域名/资源路径

3)域名会被解析成IP地址

4)使用域名的原因:域名具有更强的表义性,便于用户了解自己访问的是哪个服务器

5)DNS(域名系统):存储IP地址和域名的映射关系

4.HTTP协议的介绍

4.1HTTP请求

1)HTTP以空行为分隔符做到了报头与有效载荷的分离

2)client和server如何保证自己读到的报文是完整的?

答:step1:读取字节流,分析读到的字节流是否存在空行

step2:提取content-length,获得正文长度,然后再读取或截取指定长度的内容

注:如果接收方的应答内携带数据,他的response中的响应报头中携带content-length:xx

4.2HTTP响应

1)content-type:数据类型

2)一张网页内可能有多种资源(如:网页自己+图片),这就导致了如果想获得网页,除识别网页外,还要识别其他类型,故而浏览器会发送第二次请求

3)临时重定向和永久重定向

临时重定向:不改变任何信息,多用于登录,跳转,状态码多为302/307

永久重定向:多用于网站更换域名或更换网址,状态码多为301/308

4)方法:Get和Post

Get:获取资源,如果进行参数提交通过uri进行提交

Post:上传资源,如果进行参数提交通过httprequest正文提交

GetPost(相较于Get比较安全)
提交的参数不宜过长可以传送长数据
会回显参数不会回显参数

注:Get和Post都不安全,二者皆为明文传送

5)为了在一定程度上解决安全问题,引入session和cookie

3.协议数据单元(PDU):数据

二、传输层

1.作用:确保数据从源进程可靠传输到目标进程(通过端口号标识)

2.主要协议:TCP和UDP

特性TCPUDP
设计目标提供可靠、有序、无差错的数据传输提供高效、低延迟的简单数据传输
连接管理面向连接(需建立和释放连接)无连接(直接发送数据,无需握手)
传输方式字节流(无边界,需应用层自行分帧)数据报(保留消息边界,每个UDP包独立)

3.TCP协议

1)报头和有效载荷如何分离?

答:读取报文段的前20个字节,提取前4位首部长度,计算有效载荷长度

2)可靠性的原因:对于每一次请求都会有对应的应答,保证了历史消息的可靠性(即保证可靠的核心机制是确认应答机制)

3)面试题:为什么报文段里需要包含两个序号(确认序号和序号)

答:服务器不一定只作应答,他可能是捎带应答(应答+数据),这就要求接收方既要对报文进行确认,又要包含自己的序号

4)标志位

标志位全称作用取值含义典型场景核心特点
URGUrgent Pointer标识紧急指针字段是否有效,用于高优先级数据传输1=紧急数据有效;0=无效服务端响应慢时,客户端发送紧急状态查询(如“立即终止”指令)紧急数据优先处理,应用层称为“带外数据”
ACKAcknowledgment确认号字段是否有效,表示报文为确认包1=确认号有效;0=无效(仅握手首包)所有正常通信报文(除首次SYN)均需ACK=1累积确认机制,确认号为期望接收的下一个字节序号
PSHPush Function强制接收方立即将数据交付应用层,避免缓冲区堆积1=立即推送;0=正常缓存交互式应用(如Telnet、SSH)需实时显示用户输入减少延迟,优化实时性
RSTReset Connection强制释放连接并重建,通常因严重错误(如主机崩溃、非法数据包)触发1=重置连接;0=正常连接异常、拒绝SYN Flood攻击、端口未监听时返回RST可单独发送或与ACK组合,快速终止连接
SYNSynchronize Sequence初始化序列号,用于连接请求或接受报文1=发起/接受连接;0=正常数据TCP三次握手(客户端SYN→服务端SYN+ACK→客户端ACK)不携带数据但消耗序列号,建立连接唯一方式
FINFinish Transmission发送方数据已发送完毕,请求释放连接(可能仍有接收能力)1=终止连接;0=正常TCP四次挥手(客户端FIN→服务端ACK→服务端FIN→客户端ACK)即使无数据也消耗序列号,支持半关闭状态(如服务端继续发送数据)

5)3次握手建立连接

阶段客户端动作服务端动作报文标志位关键作用
1. SYN_SENT发送SYN包(请求连接)监听端口,等待客户端请求SYN=1, seq=x客户端初始化序列号x,表示“我想建立连接”。
2. SYN_RCVD等待服务端响应收到SYN后回复SYN+ACK包SYN=1, ACK=1, seq=y, ack=x+1服务端确认客户端请求(ack=x+1),并初始化自身序列号y
3. ESTABLISHED发送ACK包(确认连接)收到ACK后连接建立ACK=1, seq=x+1, ack=y+1客户端确认服务端响应,双方进入ESTABLISHED状态,可开始数据传输。

Q:为什么要进行3次握手?

A:1.以最短的方式验证全双工2.以最小的成本100%确认双方的通信意愿

6)4次回收释放连接

阶段主动关闭方(客户端)被动关闭方(服务端)报文标志位关键作用
1. FIN_WAIT_1发送FIN包(请求关闭)收到FIN后进入CLOSE_WAIT状态FIN=1, seq=u客户端表示“我数据已发送完毕,但可能继续接收数据”。
2. CLOSE_WAIT等待服务端确认回复ACK包ACK=1, seq=v, ack=u+1服务端确认客户端关闭请求,但可能仍有数据未发送完。
3. LAST_ACK(可选)继续接收数据发送FIN包(服务端数据发送完毕)FIN=1, ACK=1, seq=w, ack=u+1服务端表示“我数据也发送完毕,可以关闭连接”。
4. TIME_WAIT回复ACK包(确认服务端关闭)收到ACK后进入CLOSED状态ACK=1, seq=u+1, ack=w+1客户端确认服务端关闭,等待2MSL(最大报文段生存时间)后释放资源(防止延迟报文干扰)。

Q1:为什么主动断开连接的一方要进入TIME_WAIT?

A1:保证在传输方向上尚未达到的报文已经在网络中消散,不会引起下一次连接的错误

Q2:如果client已经退出或者关闭,服务器端不关闭会怎样?

A2:服务器会一直处于TIME_WAIT状态,依旧占用fd,连接没有释放

7)滑动窗口

发送方一次可以发送多少数据有自己的滑动窗口的大小决定

滑动窗口的大小=min(对方的接收能力,拥塞窗口的大小)

滑动窗口不可以向左滑动

8)快重传和超时重传

快重传的条件:连续收到3个重复确认

超时重传的条件:超时并且没有应答

9)拥塞控制

9.1)目标:避免网络过载

9.2)四大算法

算法名称触发条件核心行为逻辑关键特点典型应用场景
慢启动(Slow Start)连接建立、超时重传后,或从快速恢复退出后(部分实现)。1. 初始cwnd=1 MSS(或更小)。
2. 每收到一个ACK,cwnd += 1 MSS(指数增长)。
3. 达到ssthresh后切换到拥塞避免。
快速探测带宽:指数增长迅速扩大发送窗口。
风险控制:避免一开始就发送大量数据导致网络过载。
连接初期、网络空闲后的数据传输启动阶段。
拥塞避免(Congestion Avoidance)cwnd ≥ ssthresh,或从快速恢复退出后。1. 每收到一个ACK,cwnd += 1 MSS / cwnd(线性增长,每轮RTT增加1 MSS)。
2. 发生丢包时,进入快速重传/恢复。
保守增长:缓慢增加发送速率,防止触发拥塞。
稳定性优先:适合网络负载接近阈值时。
网络带宽接近饱和时的持续数据传输阶段。
快速重传(Fast Retransmit)收到3个重复ACK(表明中间有数据包丢失,但后续数据已到达接收方)。1. 立即重传丢失的段(无需等待超时)。
2. 触发快速恢复,调整ssthreshcwnd
快速响应丢包:比超时重传减少数秒等待时间。
依赖重复ACK:适用于部分丢包场景。
网络轻微拥塞或随机丢包时的快速恢复。
快速恢复(Fast Recovery)快速重传后(即收到3个重复ACK后)。1. ssthresh = cwnd / 2(减半拥塞阈值)。
2. cwnd = ssthresh + 3*MSS(补偿已离开网络的3个重复ACK对应的段)。
3. 每收到一个重复ACK,cwnd += 1 MSS;收到新ACK后退出,进入拥塞避免。
避免慢启动:维持较高发送速率,减少性能波动。
补偿机制:通过重复ACK推断网络状态。
快速重传后的拥塞窗口调整,平衡效率与稳定性。

3.协议数据单元(PDU):TCP的报文段,UDP的用户数据报

三、网络层

1.作用:通过路由算法(如Dijkstra)确定数据包从源到目标的最佳路径

2.主要协议:IP协议

1)TCP/IP协议的核心功能是将数据100%可靠从主机A传输到主机B

2)IP地址=网络号+主机号

3)子网划分

Q:问什么要进行子网划分?

A:未来查找目标主机时从目标网络中查找,从而提高效率

4)在网络通信中,私有IP不能出现在公网中,因为私有IP可以重复,这将导致从此发出的报文无法回来

5)每经过一个内网路由器进行src:ip替换,替换成当前路由器的wan口IP

6)将内网IP转换为公网IP需要借助NAT技术

3.协议数据单元(PDU):IP数据报

四、数据链路层

1.作用:将网络层数据包封装为帧(Frame),添加帧头和帧尾。

2.主要协议:PPP协议

3.协议数据单元(PDU):数据帧

4.数据链路层的三个基本问题:封装成帧,透明传输,差错检测

五、物理层

1.作用:通过物理介质(如电缆、无线信号)传输比特流

2.协议数据单元(PDU):比特

http://www.dtcms.com/a/267002.html

相关文章:

  • 指针篇(7)- 指针运算笔试题(阿里巴巴)
  • CSS——圆形头像外嵌光圈
  • springsecurity02
  • js中的FileReader对象
  • ESP32CAM通过ESPHome接入HomeAssistant(含无线刷固件等)
  • Python-GUI-wxPython-控件
  • 语音大模型速览(一)F5-TTS
  • 《汇编语言:基于X86处理器》第6章 复习题和练习,编程练习
  • Selenium 安装使用教程
  • Python 量化交易安装使用教程
  • 深度学习3(向量化编程+ python中实现逻辑回归)
  • 遗传算法的原理与实现示例
  • XION:玩转您的第一个智能合约
  • Seq2seq+Attention 机器翻译
  • Go中使用国家新闻出版署实名认证
  • [C++] # 深入理解C++继承:从原理到实现
  • 通过网页调用身份证阅读器http websocket方法-华视电子————仙盟创梦IDE
  • 结构型智能科技的关键可行性——信息型智能向结构型智能的转换(提纲)
  • CSS知识复习2
  • 3-1 PID算法改进(积分部分)
  • Softhub软件下载站实战开发(十二):软件管理编辑页面实现
  • 科学的第五范式:人工智能如何重塑发现之疆
  • 力扣打卡第二十一天 中后遍历+中前遍历 构造二叉树
  • 【Qt】QxORM无法删除和更改主键值为0的行,否则报错:invalid primary key
  • Docker学习笔记:Docker网络
  • DotNetBrowser 2.27.14 版本发布啦!
  • Python 制作 pyd(Windows 平台的动态链接库)
  • 力扣:70. 爬楼梯
  • [Terence Tao访谈] 无限 | 关注模型 | 矢量场 | 策略性“作弊” | Lean
  • 【Prometheus 】通过 Pushgateway 上报指标数据