首页 > 其他分享 >tcp:协议流程

tcp:协议流程

时间:2022-10-24 08:55:57浏览次数:49  
标签:协议 请求 seq 流程 SYN tcp 握手 服务端 客户端

三次握手四次挥手


进入listen状态

客户端和服务的还没有建立连接前,都处于 CLOSED 状态
并且在开始之前需要创建TCB (传输控制块)、
直到TCB创建完成后,才进入LISTEN状态

开始建立连接
# 第一次握手
客户端发送请求请求和服务的建立连接: 
seq(客户端的seq)=x, 
SYN=1, 
进入 SYNC-SENT阶段

# 第二次握手
服务端接收到客户端的请求后返回给客户端: 
seq (服务端的seq) = y,ack(服务的期望的下次客户端的请求序号)=x+1
ACK=1, SYN=1
进入SYNC-RECV 阶段

# 第三次握手
客户端回应服务的确认信息:
ack(客户端希望下次服务的响应的序号)= y+1
ACK=1
客户端和服务端进入establish

以上完成三次握手的操作


之所以需要三次握手的原因

从一般情况上来看,好像只需要两次握手就可以实现

  • 客户端发起请求
  • 服务端同意请求

但是这样会导致明显的问题:服务端无法判断客户端的SYN请求是否已经过期
因为一些网络波动或者其他原因导致客户端第一次发送的SYN请求没有得到回应,会主动废弃重新(seq(a)=100)
重新发送一个SYN(b)(seq=200)
当a到服务端,服务端期待下次客户端的ack从100+1开始,然后返回给客户端,但是此时的客户端的下次seq为200+1
不符合,直接中断连接,如果没有这种第三次在此确认的机制,那么服务端会在第二次就直接同意建立连接

标签:协议,请求,seq,流程,SYN,tcp,握手,服务端,客户端
From: https://www.cnblogs.com/xiuneng/p/16819493.html

相关文章

  • TCP/IP网络编程之地址族与数据序列
    分配IP地址和端口号IP是InternetProtocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的......
  • 邮件协议详解
    邮件的发送和接收过程——STMP、POP、IMAP、MIME电子邮件发送协议是一种基于“推”的协议,主要包括SMTP;邮件接收协议则是一种基于“拉”的协议,主要包括POP协议和......
  • 如何使用git通过ssh协议拉取gitee上的项目代码——如何正确的免密使用git
    如何在gitee网站上生成/添加SSH公钥见教程:生成/添加SSH公钥    测试公私秘钥是否成功:[email protected]     ===============================......
  • HCIA 交换机原理与ARP协议
    一、概述交换机(Switch),在网络通讯中属于非常重要而基础的设备,常见资料往往侧重于介绍某一点或对某个名词的解释,本文试图从用户使用的角度来理解交换和交换机,不过仅限于HCIA......
  • ARP协议
    ARP协议由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址。ARP协议:完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题ARP协议使用过程检查ARP高速缓......
  • DHCP协议
    主机如何获得IP地址?DHCP协议......
  • TR-069协议学习记录
    TR-069协议学习记录TR-069协议概念CWMP(CPEWANManagementProtocol,CPE广域网管理协议),编号为TR-069,故又被称为TR-069协议。TR-069协议的应用TR-069协议提供了对下一......
  • Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)
    一、前言块设备主要为存储设备设计的框架。在前面章节​里介绍了块设备驱动编写思路,并且利用内存模拟了硬件存储,完成了块设备驱动开发测试。这一篇文章将采用SD卡作为存储......
  • TCP拥塞控制
    ......
  • 流程控制
    类型转换隐式转换:小范围->大范围显示转换(强制转换):需要用户自己执行代码来转换,大范围转小范围会丢失精度或报错。System.Convert转换工具inta=10;//小范围转大范......