1) 物理架构模型(网络图):划分层次
01:核心层:和外网进行互联(和运营商对接)要由冗余能力
02:汇聚层:对接入层数据信息进行汇总 可以对流量进行访问控制 有冗余能力
03:接入层:和终端设备互联

2)逻辑的架构模型:
2.1 OSI 7层模型:
01:ISO 国际标准化组织
02: 定义一些标准规范,让不同网络公司相互通讯,兼容性问题
03: 层次模型有那些:由低到高
-
物理层 : 定义一些物理连接介质的标准 网线 光纤
数据链路层 : 负责将同一局域网中不同主机的数据传输---交换机--二层设备
网络层 : 路由协议 负责将不同网络中的数据进行传输---路由器--三层设备
传输层 : 分段 重组
会话层 :建立会话
表示层 :加密/解密 压缩处理/解压缩
应用层 :数据---- 电影 1G
image.png
image.png
-




2.2 TCP/IP 4层模型:由低到高
- 数据接入层
互联网层
主机到主机层(TCP UDP)
应用层
- 数据接入层
01.TCP/UDP协议说明:
- TCP 传输控制协议 、面向连接的协议 (同步传输)、可靠的传输层协议 传输效率低
UDP 用户报文协议 、无连接协议(异步传输) 、 不可靠的传输层协议 传输效率高
- TCP 传输控制协议 、面向连接的协议 (同步传输)、可靠的传输层协议 传输效率低
系统中:
异步传输数据:类似于离线传输 不需要进行确认
- 优点:传输效率较高
缺点:安全性不高
- 优点:传输效率较高
同步传输数据:类似于在线传输 需要进行确认
- 优点:安全性高
缺点:传输效率较低
- 优点:安全性高
02.TCP协议重要的原理
1)TCP三次握手过程 --- 完成网络连接建立
- TCP 报文结构:
a 源端口地址: 返回数据包的目标端口地址
b 目标端口地址 :要和服务端的那个网络服务建立连接
端口的数值范围: 1~65535 是通过报文结构获知的
根据报文结构:源端口和目标端口各占用16bit
公式:2的n次方 n占用了多少bit
占用了1bit
端口范围: 0 1 两种 2的1次方=2 0-1
占用了2bit
端口范围 : 00 11 01 10 四种 2的2次方=4 0-3
占用了3bit
端口范围: 000(0) 001(1) 010(2) 011(3) 100(4) 101(5) 110(6) 111(7) 八种 二进制换十进制 2的3次方=8 0-7
占用了16bit
端口范围:2的16次方=65536 0-65535 ---- 1--- 65535 0号端口不被使用
- TCP 报文结构:
1.1
Sequence Number(序列号)
Acknowledgement Number(确认号)
特殊6bit作为报文结构中的控制位:
syn --------- 请求建立连接控制字段
ack --------- 表示确认控制字段
fin --------- 请求断开连接控制字段
说明 :控制字段数值为1表示控制功能开启 默认为0
三次握手的详细过程:
- 第一次握手:
发送TCP数据报文 客户端 ---->服务端
TCP数据报文中, 需要将syn控制字段改为1
TCP数据报文中,需要将seq序列号信息进行发出 seq=x
- 第一次握手:
- 第二次握手:
发送TCP数据报文 服务端 -----> 客户端
TCP数据报文中 , 需要将ack控制字段改为1
TCP数据报文中, 同时将syn控制字段改为1
TCP数据报文中, 同时将ack确认信息发出 ack=x+1
TCP数据报文中, 同时将seq序列号信息发出 seq=y
- 第二次握手:
-
第三次握手:
发送TCP数据报文 客户端 -----> 服务端
TCP数据报文中, 需要将ack控制字段改为1
TCP数据报文中, 同时将ack确认号信息发出 ack=y+1
TCP数据报文中, 同时将seq序列号信息发出 seq=x+1
image.png
-
2)TCP四次挥手过程 --- 完成网络连接断开
- 第一次挥手:
发送TCP数据报文 客户端 --- > 服务端
TCP数据报文中, 需要将fin控制字段改为1
TCP数据报文中, 同时将ack控制字段改为1(包含seq喝ack确认号信息)
- 第一次挥手:
- 第二次挥手:
发送TCP数据报文 服务端 ---- >客户端
TCP数据报文中 , 需要将ack控制字段改为1
- 第二次挥手:
- 第三次挥手:
发送TCP数据报文 , 服务端 ----- > 客户端
TCP数据报文中 , 需要将ack控制字段改为1
TCP数据报文中, 同时将fin控制字段改为1
- 第三次挥手:
-
第四次挥手:
发送TCP数据报文 客户端 --- > 服务端
TCP数据报文中, 发送ack控制字段改为1
image.png
-
TCP 11种状态集转换
TCP三次握手过程: 服务端和客户端状态变化(5种状态变化)
第一历程: 初始状态信息
客户端状态为: closed
服务端状态为: closed
第二历程: 服务端开启相应服务
服务端状态为: closed -- LISTEN
第三历程: 发送建立连接请求(客户端) == 三次握手第一次
客户端发送syn信息
客户端状态为: closed -- syn_sent
第四历程: 接收建立连接请求(服务端) == 三次握手第二次
服务端接受syn信息, 发送确认以及请求建立连接信息(ack syn)
服务端状态为: LISTEN -- syn_rcvd
第五历程: 发送最后确认信息(客户端) == 三次握手第三次
客户端发送ack信息
客户端状态为: syn_sent -- established
第六历程: 接收最后确认信息(服务端)
服务端接收ack信息
服务端状态为: syn_rcvd -- established
结论: 只有服务端和客户端都统一处于established连接建立状态, 才能正常传输数据信息

TCP四次挥手过程:服务端喝客户端服务状态变化
第一个历程:初始化状态信息
客户端状态:established
服务端状态:established
第二个历程:发送断开连接请求(客户端)==== 四次挥手第一次
客户端发送fin请求断开连接字段
客户端状态为:established -- fin_wait1(等待状态)
第三个历程:接收断开连接请求(服务端)==== 四次挥手第二次
服务端接收fin请求断开连接字段 发出确认信息(ack=1)
服务端状态为:established --- close_wait
第四个历程:接受确认断开信息(客户端)
客户端接收服务端发出的确认信息(ack=1)
客户端状态为: fin_wait -- fin_wait2
第五个历程:发送断开连接请求(服务端)=== 四次挥手第三次
服务端发送fin请求断开连接字段 同时还会再次发送确认字段
服务端状态为: close_wait --- last_ack(等待最后一个ack)
第六个历程:接受断开连接请求(客户端)发送最后确认信息===四次挥手第四次
客户端接收断开连接请求 同时发送最后确认信息 (ack=1)
客户端状态为:fin_wait2 --- time_wait(等待时间 )
第七个历程:接受最后确认信息(服务端)
服务端状态为:last_ack--- closed
第八个历程:等待时间结束
客户端状态为:time_wait---- closed

为什么要由time_wait状态?
- 避免last_ack 状态信息在系统中产生堆积
- 在time_wait等待状态时不听的发送ack信息
- 等待状态结束,自动由time_wait转换成closed
- 如何保证数据传输可靠信? 利用ack状态信息
补充:
1)当客户端fin_wait1状态直接接收到fin和ack信息
2)客户端状态: fin_wait1 ---- closing (替换了fin_wait2)
3)客户端状态:closing(替换了fin_wait2)--- time_wait --- closed



