网络架构模型/三握四挥

1) 物理架构模型(网络图):划分层次

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


网络架构模型/三握四挥_第1张图片
image.png

2)逻辑的架构模型:

2.1 OSI 7层模型:

01:ISO 国际标准化组织
02: 定义一些标准规范,让不同网络公司相互通讯,兼容性问题
03: 层次模型有那些:由低到高

    • 物理层 : 定义一些物理连接介质的标准 网线 光纤
      数据链路层 : 负责将同一局域网中不同主机的数据传输---交换机--二层设备
      网络层 : 路由协议 负责将不同网络中的数据进行传输---路由器--三层设备
      传输层 : 分段 重组
      会话层 :建立会话
      表示层 :加密/解密 压缩处理/解压缩
      应用层 :数据---- 电影 1G


      网络架构模型/三握四挥_第2张图片
      image.png

      网络架构模型/三握四挥_第3张图片
      image.png
网络架构模型/三握四挥_第4张图片
image.png

网络架构模型/三握四挥_第5张图片
image.png

网络架构模型/三握四挥_第6张图片
image.png
网络架构模型/三握四挥_第7张图片
image.png

2.2 TCP/IP 4层模型:由低到高

    • 数据接入层
      互联网层
      主机到主机层(TCP UDP)
      应用层
01.TCP/UDP协议说明:
    • TCP 传输控制协议 、面向连接的协议 (同步传输)、可靠的传输层协议 传输效率低
      UDP 用户报文协议 、无连接协议(异步传输) 、 不可靠的传输层协议 传输效率高

系统中:
异步传输数据:类似于离线传输 不需要进行确认

    • 优点:传输效率较高
      缺点:安全性不高

同步传输数据:类似于在线传输 需要进行确认

    • 优点:安全性高
      缺点:传输效率较低
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号端口不被使用

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


      网络架构模型/三握四挥_第8张图片
      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


      网络架构模型/三握四挥_第9张图片
      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连接建立状态, 才能正常传输数据信息     
网络架构模型/三握四挥_第10张图片
image.png

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

网络架构模型/三握四挥_第11张图片
image.png

为什么要由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

你可能感兴趣的:(网络架构模型/三握四挥)