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

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.mrgr.cn/news/80436.html

相关文章:

  • 整数的四舍五入----->记录每一点进步
  • 如何自定义网卡指示灯?
  • Tomcat原理(5)——tomcat最终实现
  • 前端(Vue)
  • 基于SpringBoot的滑雪场管理系统
  • Github 2024-12-16 开源项目周报 Top15
  • Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览
  • 音频进阶学习八——傅里叶变换的介绍
  • uniapp/HBuilder X引入weex报错weex is not defined
  • 3.1 角度
  • 【自动控制原理】学习地图
  • WES7汉化教程
  • 02、10个富士胶片模拟的设置
  • fabric.js
  • 【时间序列分析】斯皮尔曼(Spearman)相关系数理论基础及python代码实现
  • 【图像配准】方法总结
  • hive—炸裂函数explode/posexplode
  • 【漫话机器学习系列】010.Bagging算法(Bootstrap Aggregating)
  • 循环神经网络RNN笔记
  • LeetCode1.两数之和(超简单讲解)
  • 医疗领域的网络安全预防:保障患者隐私与医疗数据安全
  • LeetCode 283.移动零(超简单讲解)
  • docker离线安装、linux 安装docker
  • 概率论得学习和整理26:EXCEL 关于plot 折线图--频度折线图的一些细节
  • 通过一个例子学习回溯算法:从方法论到实际应用
  • 课设项目十:智能手电筒(使用金沙滩51单片机)