TCP连接(三次握手与四次挥手)

文章目录

可靠传输原理

以字节为单位的滑动窗口

  • TCP 使用流水线传输和滑动窗口协议实现高效 、可靠的传输
  • TCP 的滑动窗口是以字节为单位的
  • 发送方 A 和接收方 B 分别维持一个发送窗口和一个接收窗口

发送窗口

  • A 根据 B 给出的窗口值, 构造出自己的发送窗口
  • 发送窗口里面的序号表示允许发送的序号
  • 窗口越大, 发送方就可以在收到对方确认之前连续发送更多的数据, 因而可能获得更高的传输效率

接收窗口

窗口滑动

  • 利用滑动窗口实现流量控制
    • 流量控制 (flow control) :让发送方的发送速率不要太快 ,使接收方来得及接收

三次握手和四次挥手

传输连接的三个阶段

  • TCP 是面向连接的协议
  • TCP 连接有三个阶段
    • 连接建立->数据传送->连接释放
  • TCP 连接的建立采用客户服务器方式
    • 主动发起连接建立的应用进程叫做客户 (client)
    • 被动等待连接建立的应用进程叫做服务器 (server)

三次握手

  • TCP 建立连接的过程叫做握手
  • 采用三报文握手:
    • 在客户和服务器之间交换三个 TCP 报文段, 以防止已失效的连接请求报文段突然又传送到了, 因而产生 TCP 连接建立错误
  • 第一次握手:A 的 TCP 向 B 主动发出连接请求报文段,其包头中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x
  • 第二次握手:B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y
  • 第三次握手:A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。A 的 TCP 通知上层应用进程,连接已经建立。B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送

四次挥手

  • TCP 连接释放过程⽐较复杂
  • 数据传输结束后,通信的双⽅都可释放连接
  • TCP 连接释放过程是四报⽂握⼿
  • 第一次挥手:A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认
  • 第二次挥手: B发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close) 状态。B 若发送数据,A 仍要接收
  • 第三次挥手:若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。 FIN=1,ACK=1,确认号 ack = u+1
  • 第四次挥手:A 收到连接释放报文段后,必须发出确认。 ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1

什么是MSL?

  • 最大报文生存时间
    • 保证发送的最后一个 ACK 报文段能够到达 B
    • 防止 " 已失效的连接请求报文段" 出现在本连接中
相关推荐
Tel199253080041 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
lazy H4 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
Linux运维技术栈4 小时前
WAF部署在防火墙后面,获取不到真实IP怎么办?
服务器·网络·tcp/ip·安全·防火墙·waf
低慢小uav5 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
德迅云安全-上官6 小时前
德迅游戏盾:面向 TCP 业务的分布式云安全防护方案
分布式·tcp/ip·游戏
星恒随风7 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip
|_⊙8 小时前
应用层协议HTTP与HTTPS
网络·网络协议·http
秦禹辰8 小时前
ClipSketch AI把视频改造成图文漫画:选关键帧、生成手绘分镜、融合IP形象并自动写小红书文案
人工智能·tcp/ip·音视频
叼烟扛炮9 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip
byte轻骑兵9 小时前
【PBAP】规范精讲[9]: 蓝牙PBAP的互联互通法则——GOEP互操作性要求深度解析
网络协议·人机交互·蓝牙协议·pbap