×

TCP/IP网络模型
  

静下心来敲木鱼 5681

{{ttag.title}}
本帖最后由 静下心来敲木鱼 于 2023-11-30 09:49 编辑

TCP/IP四/五层模型
标准定义的TCP/IP模型为四层模型,没有对网络接口层进行明确的细分
但是我们在使用TCP/IP模型时,一般会网络接口层分为链路层物理层来使用




应用层常见协议——传输数据PDU
通过各种协议向终端用户提供业务应用
DNS——建立域名与IP之间的关系
HTTP——超文本传输协议
HTTP将图像,视频,文件有,音乐等传输给客户端供用户上网访问
不安全,现在基本都是用Https协议
HTTPS——安全的超文本传输协议
相比于Http增加了加密验证功能
SMTP——用于发送邮件
POP3/IMAP——用于接收邮件
IMAP功能相比于POP3更多
IMAP和POP3的主要区别
Telnet——远程登录服务的标准协议
不安全,现在一般使用SSH进行远程登录
SSH——加密远程登录管理
通过密钥进行加密认证
FTP——文本传输协议
提供可靠的文件传输 服务,具有认证,权限的功能
TFTP——简单文件传输协议
提供不可靠的文件传输服务
消耗资源小,速度快
常用于网络设备的配置文件和系统文件传输




传输层协议——传输数据段
传输层提供面向连接或非面向连接服务以及进行重传前的差错检验
传输层只定义了两种协议TCP和UDP
端口号
端口号用来区分不同的应用层协议,当解封时看到传输层携带的端口号,就能了解到上层应用层携带的是何种应用层协议
端口号分类
0~1023     公认/知名端口号
1024~49151 应用注册使用的端口号
49152~65535 私有/动态端口(主机/客户端使用)
知名端口号
TCP面向连接服务CONS
面向连接服务——在通信前要建立会话连接
TCP报文格式 固定长度20字节,可变长度40字节
TCP的最大报文段长度即MSS一般是1460字节(1500MTU-20IP Head-20TCP Head)
MSS(最大分段大小)指数据的长度最大1460字节
源端口    Source port       
标识哪个应用程序发送的
目标端口  Destination Port   
标识哪个应用程序接收的
序列号   Sequence Number(简称seq)
在TCP传送的数据流中,每一个字节都有一个序号,在发送报文时会携带Seq
seq=seq+载荷(seq是自己上次发的seq)
载荷就是上层的所有包,此处指应用层的包(数据data
seq是32位的无符号数,当seq到达2^32-1后从0开始,依次循环
例如:第一报文段的seq为300,而且载荷数据共100字节,则下一个报文段的seq就是400
确认序号 Acknowledge  Number (简称ack)
确认序号对收到的TCP报文做确认,Ack=seq+载荷(seq是别人发的seq
注意:只有Flags中的ACK标志为1时,确认序号才有效
报头长度Header  length
用0000~1111来标识,其得出来的数值乘以4就是报文头部长度
即0001=1,则其就代表报文头部为4个字节
tcp头部默认20个字节,其报文长度也就是0101(5)
标识  Flags                                  
Urgent紧急指针位。当URG=1时,先发送此报文,不用等待,和紧急位字段一起使用。
ACK确认位。只有当ACK=1时,确认序号字段才有效;
Push急迫位。当PSH=1时,发送到对方后,对方先接收处理。
RST重置位。当RST=1时,表示出现连接错误,必须释放连接,然后再重建传输连接。复位比特还用来拒绝一个不法的报文段或拒绝打开一个连接;
SYN同步位。SYN=1代表SYN置位,SYN=1,ACK=0时表示请求建立一个连接,携带SYN标志的TCP报文段为同步报文段;只有刚开始前两次握手SYN置位。
FIN终止位
窗口 Window
通过接收端来调节窗口大小来控制网络拥塞,最大65535
当其为0时,报文为Zero window包下个包为保活包(keep-alive)
检验和 Checksum
对头部和内容进行校验
紧急位 Urgent Pointer
只有当Flags的URG标志置1时紧急指针才有效。
紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
先处理此序号的报文
可变长度 Option(0~40)
TCP流量控制
TCP流量控制主要使用滑动窗口协议,滑动窗口是接受数据段端使用的窗口大小,用来告诉发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制的目的。
TCP会话建立——三次握手
通过标志位syn、ack以及序列号seq确认序列号ack实现
TCP三次握手,至少会交互三次报文


会话建立的三种情况
发送信号→对方确认→收到回复(就是上述图片的情况)
发送信号→对方否认→重传
发送信号→发送超时→主动重传
TCP会话结束——四次握手
通过标志位fin、ack以及序列号seq确认序列号ack实现
TCP四次握手,不一定交互四次报文(主机直接拔电的情况)


TCP的窗口机制
为什么要提出窗口机制
以A和B通信为例, 正常情况下,A每发送1句话,B就对其进行确认确认(通过回复ACK确认,ACK的序列号=收到的seq+1来确认);不过这样传输效率低下,因此引入了窗口机制

窗口机制的原理
A发送多句话,B通过一句确认回复(通过回复ACK确认,ACK的序列号=收到的最后一句话的seq+1);并且A会根据B回复的确认报文来了解到B的窗口大小

窗口大小如何协商
1、当A发送3句话,但是如果B的窗口大小只有2句话时,则第三句话会被丢弃;
2、此时B给A回复的ACK为A的第二句的序列号+1,并且将自己窗口大小为2告诉A
3、当A收到后就知道第三句话没有被B接收,并且知道了接收端的窗口大小,此时A向B发送时会控制窗口大小,即此时发送第三句和第四句话给B
UDP无面向连接服务
无面向连接服务——在通信前要不需要建立会话连接,直接开始传输数据,不可靠
报文格式
源端口    Source port       
标识哪个应用程序发送的
目标端口  Destination Port   
标识哪个应用程序接收的
长度      Length
UDP头部+UDP数据的字节数,最小为8字节
检验和 Checksum
对头部和内容进行校验




网络层协议——传输数据包
提供逻辑地址,通过寻址来选择合适的路由和交换节点,实现数据从源到目的地的转发
网络层协议主要是IP协议,除了IP协议还有GREICMPIGMPOSPF等协议
IP协议主要分为IPv4协议和IPv6协议,此处只讨论IPv4协议
报文格式       固定头部20字节,可变头部40字节(总共20~60字节)
IP报文最大长度为1500字节(头部+数据)
Version 版本
IP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6
Header Length 头部长度
固定部分的长度(20字节)和可变部分的长度之和
通过0000~1111来标识
即0001=1,则其就代表报文头部为4个字节
IP固定头部20个字节,其报文长度也就是0101(5)
DS Field 区分服务字段
用于QoS
Total Length 总长度
IP报文的总长度。报头的长度和数据部分的长度之和。
总长度最大为MTU的值,缺省为1500
Identification  标识——分片使用
该字段标记当前分片为第几个分片,在数据报重组时很有用(让其按照顺序重组)
Flags  分段标志——分片使用
该字段用于标记该报文是否为分片(有一些可能不需要分片,或不希望分片)
后面是否还有分片(是否是最后一个分片)。
该字段共3位。R、DF、MF三位。目前只有后两位有效
R——保留位必须为0
DF——报文是否分片,为1表示不分片,为0表示分片。
MF——报文是否是最后一个分片,为1表示“更多的片”,为0表示这是最后一片。
例如:0x00---000  代表分片,最后一片
         0x40---010 代表不分片,最后一片
         0x20---001 代表不分片,还有更多的片
Fragment Flags 分段偏移——分片使用
指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置,为 0 代表是第一个包
TTL  存活时间
IP报文所允许通过的三层设备的最大数量,最大为255
每经过一个三层设备,TTL减1,当为0时,路由器将该数据报丢弃。
丢弃报文时向报文中的源IP地址发送ICMP错误消息(TTL Exceeded包)类型为 11 0。
Protocol 协议
该值标识网络层的上层协议,可以是其它网络层协议,也可以是传输层协议
Header  Checksum  校验和
计算IP头部的校验和,检查IP报头的完整性
Source Address源地址
Destination Address 目的地址
Options   可选字段(0~40字节)


数据链路层——传输数据帧
将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测
数据链路层定义了两个子层
LLC  逻辑链路控制
负责识别网络层的协议类型,对网络层的数据进行封装并向下层传递
MAC  介质访问控制
负责控制物理层设备,也就是MAC地址,大小为48位二进制(12位十六进制)
代表一个网络接口的物理地址,全球唯一
24供应商代码(组织唯一标识符OUI,由IEEE分配和管理)+24厂商自己分配
第八位为0是单播,为1是组播
数据链路层主要协议
1、PPP(点对点链路)
2、Ethernet(以太网链路)
3、FR(帧中继链路)
4、HDLC(高级数据链路控制)
5、ATM(异步传输模式)
以太网链路(本次主要介绍以太网帧)
运行在MAC层之上
在以太网链路上传输的数据包成为以太帧
以太网帧(MAC帧)的两种标准帧格式
Ethernet_Ⅱ、IEEE802.3
IEEE802.3是Ethernet的前生,目前基本未使用(STP目前使用的是IEEE802.3帧格式)
Ethernet帧格式
帧大小为64~1518,NTU最大传输单元默认为1500
Type类型值大于等于1536即(0x0600)
DMAC
目的MAC地址 6字节
SMAC
源MAC地址 6字节
Type
标识上层协议类型  2字节
IEEE802.3帧格式
帧长度字段值小于1500(0x05DC),MTU为1492
DMAC
目的MAC地址 6字节
SMAC
源MAC地址 6字节
Length
定义了Data字段包含的字节数,不包过CRC检验码
DSAP
目的服务访问点,此处表示后面类型为STP帧
当为0x06,表示后面类型为IP帧
SSAP
源服务访问点,此处表示后面类型为STP帧
当为0x06,表示后面类型为IP帧
Control 字段
通常为0x03,标识无连接服务的IEEE802.2无编码数据格式
OUI
组织唯一标识符,通常为MAC地址的前3字节
Type
标识以太网帧所携带的上层数据类型

ISIS
STP

打赏鼓励作者,期待更多好文!

打赏
16人已打赏

dhf 发表于 2024-4-24 21:45
  
感谢楼主的精彩分享,有助工作!!!
dhf 发表于 2024-4-22 21:20
  
感谢楼主的精彩分享,有助工作!!!
dhf 发表于 2024-4-17 22:16
  
感谢楼主的精彩分享,有助工作!!!
小西北 发表于 2024-4-14 01:01
  
一起来学习,一起来学习
小霞米 发表于 2024-4-14 00:59
  
一起来学习,一起来学习
日出 发表于 2024-4-14 00:56
  
一起来学习,一起来学习
焱燚 发表于 2024-4-14 00:54
  
一起来学习,一起来学习
飞飞侠 发表于 2024-4-14 00:51
  
一起来学习,一起来学习
德德 发表于 2024-4-14 00:49
  
一起来学习,一起来学习
发表新帖
热门标签
全部标签>
安全效果
西北区每日一问
技术盲盒
技术笔记
干货满满
【 社区to talk】
每日一问
信服课堂视频
GIF动图学习
新版本体验
技术咨询
2023技术争霸赛专题
功能体验
产品连连看
安装部署配置
标准化排查
通用技术
秒懂零信任
技术晨报
自助服务平台操作指引
原创分享
排障笔记本
玩转零信任
排障那些事
SDP百科
技术争霸赛
深信服技术支持平台
以战代练
升级&主动服务
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
高频问题集锦
社区新周刊
POC测试案例
全能先锋系列
云化安全能力

本版版主

12
185
6

发帖

粉丝

关注

121
315
351

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人