C/S架构学习之TCP的三次握手和四次挥手

  • TCP的三次握手:
  • 一定由客户端主动发起的,发生在建立连接的过程中。
  • 此过程发生在客户端的connect()函数服务器的accept()函数之间。
  • 第一次握手:
  • 客户端向服务器发送一个带有SYN标志的数据包,表示客户端请求建立连接。
  • 并且客户端会选择一个随机的序列号a放在SYN标志的数据包中,然后向服务器发送这个数据包。
  • 第二次握手:
  • 服务器收到客户端的请求后,会回复一个带有SYN/ACK标志的数据包,表示服务器已经收到客户端的请求,并同意建立连接。
  • 服务器会选择一个随机的序列号b放在SYN标志的字段中,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
  • 第三次握手:
  • 客户端收到服务器的回复后,会发送一个带有ACK标志的数据包,表示客户端确认已经收到了服务器的响应,并同意建立连接。
  • 客户端将服务器的序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
  • TCP的四次挥手:
  • 主动关闭方(客户端或者服务器都可以扮演这个角色)发起的,发生在断开连接的过程中。
  • 客户端主动发起断开连接为例:
  • 第一次挥手:
  • 客户端向服务器发送一个带有FIN/ACK标志的数据包,表示客户端请求与服务器断开连接。
  • 并且客户端会选择一个随机的序列号a放在FIN/ACK标志的数据包中,然后向服务器发送这个数据包。
  • 第二次挥手:
  • 服务器收到客户端的请求断开连接后,会回复一个带有ACK标志的数据包,表示服务器已经收到客户端的请求,并且序列号a+1放在ACK标志的字段中,然后将数据包发送给客户端。
  • 第三次挥手:
  • 服务器向客户端发送一个带有FIN/ACK标志的数据包,通知客户端,服务器要关闭了。
  • 并且服务器会选择一个随机的序列号b放在FIN/ACK标志的数据包中,然后向客户端发送这个数据包。
  • 第四次挥手:
  • 客户端收到服务器的断开连接信号后,会回复一个带有ACK标志的数据包,表示客户端已经收到服务器的请求,并且序列号b+1放在ACK标志的字段中,然后将数据包发送给服务器。
  • TCP的三次握手和四次挥手,抓包如下图所示:
相关推荐
一天八小时3 小时前
计算机网络————(一)HTTP讲解
网络协议·计算机网络·http
StickToForever4 小时前
第4章 信息系统架构(五)
经验分享·笔记·学习·职场和发展
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
Moonnnn.8 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
南宫生8 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐9 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风9 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
竹言笙熙9 小时前
代码审计初探
学习·web安全
日记成书9 小时前
物联网智能项目
物联网·学习
虾球xz9 小时前
游戏引擎学习第118天
学习·游戏引擎