谈谈TCP/IP体系结构、TCP的标志位以及TCP协议的可靠性

embedded/2024/10/22 10:47:06/

TCP/IP

  1. 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是一个工业标准的协议集,它是为广域网(WANs)设计的,连接是全双工的。
    解释:
    面向连接–先建立连接再发送数据;
    字节流–一个一个发。

  2. TCP/IP体系结构则将网络分为四层,自下而上分别是网络接口层、网络层(网络层的“ip地址”可以唯一标识网络中的主机)、传输层(传输层的“协议+端口”可以唯一标识主机中的应用程序(进程))、应用层。可以将网络接口层拆分为物理层和数据链路层。
    这样利用四元组(本机IP, 本机端口, 对端IP, 对端端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
    在这里插入图片描述

  3. **TCP的标志位 **
    SYN :简写为S,同步标志位,用于建立会话连接,同步序列号;
    ACK : 简写为.,确认标志位,对已接收的数据包进行确认;
    FIN : 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;
    PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
    RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
    URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;

  4. 数据传输:TCP以段为单位进行传输,在建立TCP连接的同时,也可以确定发送数据包的单位–最大消息长度(MSS)

为什么说TCP协议是可靠的呢?

因为它存在以下的机制:

  • 确认应答机制
  • 超时重传机制
  • 连接管理机制(三次握手、四次挥手。)
  • 流量控制机制(客户端每发送一次数据,服务端会返回ACK响应,同时告诉客户端这边的处理能力,时刻控制着数据发送的速度。)
  • 拥塞控制机制

http://www.ppmy.cn/embedded/33645.html

相关文章

简单的知识蒸馏

import os os.environ[TF_CPP_MIN_LOG_LEVEL] 2 os.environ["KERAS_BACKEND"] "tensorflow" os.environ[HF_ENDPOINT] https://hf-mirror.com import keras from keras import layers from keras import ops import numpy as np # 随着训练的进行&…

Redis-分片机制

概述 业务需要:由于单台redis内存容量是有限的,无法实现海量的数据实现缓存存储 概念:由多个redis节点协助工作的机制就是redis的分片机制 作用:为了实现redis扩容 特点:分片机制把该机制中包含的多台redis缓存服务…

【前端学习——css】css实现给背景的图片加模糊

我在制作自己的博客的时候,打算做个封面,封面用半透明颜色盖住了预览图,上面印上了文字,但背景图太乱了,所以打算给背景加模糊效果。 效果 方法 主要就是利用这个属性 backdrop-filter: blur(5px);属性很简单&#x…

基于纯JavaScript实现的MODBUS-RTU(串口和TCP) modbus-serial

modbus-serial 如果你需要使用JavaScript来操作一台RS458的设备,那么你一定不能错过这个库 modbus-serial。 安装和使用 npm install modbus-serial支持的功能码 功能码函数FC1 读取读线圈寄存器readCoils(coil, len) FC2 读离散输入寄存器readDiscreteInputs(a…

C语言实战项目--贪吃蛇

贪吃蛇是久负盛名的游戏之一,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的行列。在编程语言的教学中,我们以贪吃蛇为例,从设计到代码实现来提升大家的编程能⼒和逻辑能⼒。 在本篇讲解中,我们会看到很多陌生的知识&…

linux下载安装JDK

查看系统是否自带 jdk java -version 一、jdk下载安装 jdk11下载 上传到 linux 以下说明已下载 解压 tar -xzvf jdk-11.0.23_linux-x64_bin.tar.gz 查看是否安装成功 二、linux配置JDK环境 sudo vim /etc/profile JAVA_HOME/may2024/jdk-11.0.23 JRE_HOME$JAVA_HOME/…

学习100个Unity Shader (16) --- 程序纹理简述

文章目录 理解参考 理解 程序纹理顾名思义,就是通过代码生成的纹理,然后传入材质,生成图像。 假设,给一个模型添加了材质,并赋予了一个shader。shader中有一个纹理属性叫_MainTex。 程序纹理简单来说就是,…

C++静态数组和C语言静态数组的区别( array,int a[])

目录 一、区别 1、越界读,检查不出来 2、越界写,抽查,可能检查不出来,有局限性 二、array缺点 一、区别 C语言的静态数组int a[]; 静态数组的越界检查不稳定的: 1、越界读,检查不出来 2、越界写&#x…