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

LWIP协议:三次握手和四次挥手、TCP/IP模型

一、三次握手:是客户端与服务器建立连接的方式;

1、客户端发送建立TCP连接的请求。seq序列号是由发送端随机生成的,SYN字段置为1表示需要建立TCP连接。(SYN=1,seq=x,x为随机生成数值);此时客户端处于SYN_SENT状态

2、服务端回复客户端发送的TCP连接请求。seq序列号是由回复端随机生成的,SYN置为1,ACK字段数值是在客户端发送过来的序列号seq的基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP建立请求已得到验证。(SYN=1,ACK=x+1,seq=y,y为随机生成数值);此时客户端处于SYN_RCVD 状态。

3、客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1)。此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后也处于 ESTABLISHED 状态,此时双方已建立起了连接。

二、四次挥手:是客户端与服务器断开连接的方式; 

1、客户端发送断开TCP连接请求。seq序列号是由发送端随机生成的,FIN为1表示需要断开TCP连接。(FIN=1,seq=x,x由客户端随机生成);此时客户端处于 FIN_WAIT1 状态。

2、服务端回复客户端发送的TCP断开请求。seq序列号是由回复端随机生成的,ACK字段数值是在客户端发过来的seq序列号基础上加1进行回复,以便客户端收到信息时,知晓自己的TCP断开请求已经得到验证。(FIN=1,ACK=x+1,seq=y,y由服务端随机生成);此时服务端处于 CLOSE_WAIT 状态。客户端收到请求后进入 FIN_WAIT2状态

3、服务端在回复完客户端的TCP断开请求后,不会马上进行TCP连接的断开,服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输数据完毕,就会将回复报文的FIN字段置1,并且产生随机seq序列号。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成);此时服务端处于 LAST_ACK 的状态。

4、客户端收到服务端的TCP断开请求后,会回复服务端的断开请求。seq字段随机生成,ACK字段会在服务端的TCP断开请求的seq基础上加1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成);此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到请求后才会进入 CLOSED 状态,此时双方已断开了连接。

三、TCP/IP模型


http://www.kler.cn/a/443445.html

相关文章:

  • maven如何从外部导包
  • 【docker系列】可视化Docker 管理工具——Portainer
  • 行为树详解(6)——黑板模式
  • VS2022 C#创建Com组件和调用
  • 使用MediaPipe Face Mesh 面部动作检测
  • HTML 显示器纯色亮点检测工具
  • 解释工厂模式
  • uniapp 将base64字符串保存为图片、Word、Excel、音频、视频等文件
  • CentOS 7.9 ISO 镜像下载
  • 大数据:开启智能时代的钥匙
  • RK3568平台(Kbuild篇)vmlinux 编译过程
  • Golang学习笔记_14——切片
  • Docker 镜像加速和配置的分享 云服务器搭建beef-xss
  • Kubernetes中subPath
  • Android笔记【20】
  • 36.3 grafana-dashboard看图分析
  • 【C++】inline函数(内联函数)
  • 录音有杂音怎么消除?去杂音降噪音的方法
  • 自动驾驶AVM环视算法--python版本的540投影模式
  • C++ Learning explicit关键字•静态成员
  • 机器人阻抗和导纳控制的区别
  • Azure虚拟机非托管磁盘大小调整
  • 三相异步电动机噪音大有哪些原因?
  • Java线程池解读
  • 东方博宜24年12月-B组(才俊)- 重铠马的选择
  • 如何利用Python爬虫获得1688按关键字搜索商品