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

[Linux网络编程]03-TCP协议

一.TCP协议数据通信的过程

在这里插入图片描述
TCP数据报如下,数据报中的标志位双端通信的关键。在这里插入图片描述

三次握手:
1.客户端向服务端发送SYN标志位,请求建立连接,同时发送空包
2.服务端向客户端回发ACK标志位(即确认标志位,任何一端发送数据后都需要另一端回发ACK标志位表示已经收到数据),并且向客户端发送SYN标志位和空包请求连接。
3.客户端回发ACK标志位表示确认连接,至连接建立完成

四次挥手:
1.客户端向服务端发送空包和FIN标志位(结束标志位)
2.服务端收到数据,回发ACK标志位,断开与服务端的连接,进入半关闭状态(即双端通信变为单端通信,内核实现为关闭一端socket的写端)。
3.服务端向客户端发送FIN标志位
4.客户端回发ACK标志位,至此连接断开完成

四次挥手后,不是说两端的连接断开了,主动端关闭了写缓冲区,不能再向对端发送数据,被动端关闭了读缓冲区,不能再从对端读取数据。然而主动端还是能够读取对端发来的数据。

在这里插入图片描述
数据通信过程

在这里插入图片描述
并非一次发送,一次应答。而是批量应答,如下图
在这里插入图片描述

二.滑动窗口

如果发送端发送的速度较快,接收端处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。

TCP协议通过“滑动窗口(sliding Window)”机制解决这一问题,滑动窗口相当于一个大小可变的缓冲区,在建立连接的时候指定滑动窗口的大小,当发送端再次发送数据会超过这个大小时,发送端就会停止发送,阻塞等待接收端处理部分数据,腾出足够空间后再继续发送。
具体看下图的通讯过程:

在这里插入图片描述

三.总结

三次握手:
主动发起连接请求端,发送 SYN 标志位,请求建立连接。 携带序号号、数据字节数(0)、滑动窗口大小。
被动接受连接请求端,发送 ACK 标志位,同时携带 SYN 请求标志位。携带序号、确认序号、数据字节数(0)、滑动窗口大小。
主动发起连接请求端,发送 ACK 标志位,应答服务器连接请求。携带确认序号。

四次挥手:
主动关闭连接请求端, 发送 FIN 标志位。
被动关闭连接请求端, 应答 ACK 标志位。 ----- 半关闭完成。
被动关闭连接请求端, 发送 FIN 标志位。
主动关闭连接请求端, 应答 ACK 标志位。 ----- 连接全部关闭

滑动窗口:
发送给连接对端,本端的缓冲区大小(实时),保证数据不会丢失。

http://www.lryc.cn/news/464829.html

相关文章:

  • Windows和Linux在客户端/服务端在安全攻防方面的区别
  • VUE 仿神州租车-开放平台
  • 计算机的错误计算(一百二十九)
  • process.platform 作用
  • Java项目-基于springboot框架的企业客户信息反馈系统项目实战(附源码+文档)
  • 《深度学习》dlib 人脸应用实例 仿射变换 换脸术
  • springboot044美容院管理系统(论文+源码)_kaic
  • 大数据新视界 --大数据大厂之数据脱敏技术在大数据中的应用与挑战
  • Erric Gamma 关于resuable code的采访
  • 【Ubuntu18.04命令行code打不开】可能的解决方法
  • 大数据毕业设计基于springboot+Hadoop实现的豆瓣电子图书推荐系统
  • 【进阶OpenCV】 (15)-- 人脸识别 -- EigenFaces算法
  • 无人机封闭空间建图检测系统技术详解
  • webpack自定义插件 ChangeScriptSrcPlugin
  • win11 笔记本指纹驱动正常就是使用不了
  • 表的约束
  • jmeter是怎么用的,怎么设计接口测试用例的
  • 数据挖掘示例
  • 【PHP】在ThinkPHP6中Swoole与FPM的简单性能测试对比
  • 论文写作学习--POLYGCL
  • 【高等数学】无穷级数
  • 计算机网络——无连接传输UDP
  • DS几大常见排序讲解和实现(下)(15)
  • 电脑视频剪辑大比拼,谁更胜一筹?
  • 计算机毕业设计 基于Web的景区管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 计算生物学与生物信息学漫谈-2-测序深度/读长质量和Fasta处理
  • 基于SSM+微信小程序的电子点餐管理系统(点餐1)
  • IO进程---day5
  • ROS理论与实践学习笔记——5 ROS机器人系统仿真之URDF(Unified Robot Description Format)语法详解
  • 常见SQL注入攻击示例与原理及其防御措施