TCP系列(一)-介绍TCP

服务

TCP和UDP同样使用IP提供的服务,但是TCP提供的是面向连接,可靠的字节流服务

  • 面向连接

    使用TCP进行通信双方,必须先建立连接,然后进行数据交换

  • 可靠服务

    • 将应用数据分割成固定大小的报文段
    • 每次发出报文,会启动定时器,在规定时间内,没有确认,则会进行重发
    • 收端会舍弃重复TCP报文段
    • 发端收到TCP报文段后,会进行回应,及ACK回应
    • TCP首部存在校验和,防止数据传输过程中,数据发生了篡改,收端会舍弃校验失败的TCP报文段
    • 发端会对诸多TCP报文段,进行编排,给定序号,方便收端进行数据合并
    • TCP可以做到流量控制,滑动窗口,TCP通知双方自己的发送和接受能力,即窗口大小
  • 字节流
    TCP不会修改任何数据内容

在这里插入图片描述

首部

在这里插入图片描述

  • 端口号:识别收端发端的应用进程,结合IP首部的IP地址,可以建立唯一的连接

  • 序号:TCP将应用数据分割大小固定的无数报文段,序号指每个报文段的第一个字节,在整个应用数据的偏移量;

    在TCP建立连接期间,序号被系统赋予初始值,即ISN(init sequence number),三次握手之间,不会增加,只有在传送数据之后,序号为上一个报文段序号+上一个报文段本身长度,当数值来到2^32-1时,会归0,进行重新累加

  • 确认序号

    • 表示收端想要接收的下一个TCP报文段的序号;
    • 所有TCP报文段中,除了SYN报文段,其余报文段都有确认序号;
    • 确认序号是收端用来给发端进行传送确认的,发端,一段时间内,发送了多个TCP报文段,如果对每一个TCP报文段进行确认回应,那么,回应的ACK,
    • 公式一:序列号 = 上一次发送的序列号 + len(数据长度)。特殊情况,如果上一次发送的报文是 SYN 报文或者 FIN 报文,则改为 上一次发送的序列号 + 1。
    • 公式二:确认号 = 上一次收到的报文中的序列号 + len(数据长度)。特殊情况,如果收到的是 SYN 报文或者 FIN 报文,则改为上一次收到的报文中的序列号 + 1。
  • 首部长度:本TCP报文段,首部中32bit数目

  • 标志比特:

    • URG:紧急指针
    • ACK:确认序号有效
    • PSH:收端应该尽快将本报文段交给应用层
    • RST:重建连接
    • SYN:同步序号用来发起一个连接,后面会详细讲解
    • FIN:发端完成发送

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享从零开始学习网络设备配置--任务6.1 实现计算机的安全接入

项目描述 随着网络技术的发展和应用范围的不断扩大,网络已经成为人们日常生活中必不可少的一部分。园区网作为给终端用户提供网络接入和基础服务的应用环境,其存在的网络安全隐患不断显现出来,如非人为的或自然力造成的故障、事故&#xff1b…

昇思25天学习打卡营第09天|使用静态图加速

MindSpore支持两种运行模式:动态图(PyNative模式)和静态图(Graph模式)。 动态图模式下,计算图的构建和计算同时发生,适合调试和开发,但不利于优化。 静态图模式下,计算…

【概率论】-2-概率论公理(Axioms of Probability)

上一篇文章我们学习了基本的概率论内容-排列组合,本次我们学习概率论公理的内容,正式开始计算概率,在开始前我们需要学习一些基本概念。 目录 一.样本空间和事件 1.样本空间 2.事件 3.交并补 二、概率公理 1.基本公理 2.对称差 2.布尔…

vuex的工作流程,模块化使用案例分享,及状态持久化

文章目录 一、Vuex 是什么?二、核心概念三、Vuex 的工作流程四、什么情况下我应该使用 Vuex?五、Vuex 的使用六、使用示例七、状态持久化1、手动利用HTML5的本地存储2、利用vuex-persistedstate插件2.1、安装2.2、配置 一、Vuex 是什么? Vue…

[C++]类的自动转换和强制类型转换

在C中,类的自动转换(也称为隐式转换)和强制类型转换(显式转换)是面向对象编程中处理类型之间转换的两种重要机制。这些转换允许程序员定义如何在不同类型(特别是自定义类型)之间安全地交换数据。…

USART串口理论知识总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…

Reator模型

文章目录 概述Reacotr模型&#xff1a;定义特点三个重要组件具体流程Reactor优点应用场景 代码片段 小结 概述 Reactor模型是一种设计模式&#xff0c;主要用于处理并发的I/O事件&#xff0c;特别是在网络编程和服务器设计中。 Reacotr模型&#xff1a; 定义 Reactor模式是…

GPT-4o mini 时代:开发者的机遇、挑战与经验共享

在当今科技飞速发展的时代&#xff0c;OpenAI 最新发布的 GPT-4o mini 模型以其卓越的性能和极具竞争力的价格&#xff0c;在技术领域掀起了一股热潮&#xff0c;引发了广泛的关注。对于广大开发者来说&#xff0c;这无疑是一个令人振奋的新契机。 GPT-4o mini 模型的诞生&…

【C++】流插入和流提取运算符重载

目录 前言ostream和istream自定义类型的流插入重载自定义类型的流提取重载解决私有问题日期类总接口 前言 我们在上一节实现日期类时&#xff0c;在输入和输出打印时&#xff0c;经常会调用两个函数&#xff1a; void Insert()//输入函数{cin >> _year;cin >> _mo…

Gson使用TypeAdapterFactory和TypeAdapter实现Json中的Key统一修改

Gson使用TypeAdapterFactory和TypeAdapter实现Json中的Key统一修改&#xff0c;增加前后缀 package com.pl.zorro.ConverterFactory;import static com.google.gson.stream.JsonToken.BEGIN_OBJECT;import androidx.annotation.NonNull;import com.google.gson.Gson; import co…

放眼全局做好真正的IT系统架构

一、系统架构存在的问题 当再次复盘业务架构、应用架构、技术架构、数据架构时这些过程域时&#xff0c;发现公司的这些架构如同一盘散沙。 1、业务架构随意&#xff0c;想到什么做什么&#xff0c;想法一天一个&#xff0c;天马行空。要么就是信息不对称&#xff0c;不统一。…

【Java】/* 浅谈String(下) */

目录 一、字符串的不可变性 二、字符串的修改 三、StringBuilder和StringBuffer 四、面试题 一、字符串的不可变性 1. 如上图所示&#xff0c;String类的是被final修饰的类(不能被继承)&#xff0c;成员变量value值是一个被final修饰的字节型数组。 2. 以下图代码为例&…

JavaWeb笔记_Session

Session概述 Session是一种在服务端记录用户会话信息的技术 Session的创建和获取 /*** HttpServletRequest对象中的方法:* public HttpSession getSession()* 如果当前服务端没有session,那就在服务端新建一个session对象* 如果在服务端有这个session,那么就直…

Java企业微信服务商代开发获取AccessToken示例

这里主要针对的是企业微信服务商代开发模式 文档地址 可以看到里面大致有三种token&#xff0c;一个是服务商的token&#xff0c;一个是企业授权token&#xff0c;还有一个是应用的token 这里面主要有下面几个参数 首先是服务商的 corpid 和 provider_secret &#xff0c;这个可…

C中字符串处理学习笔记

C中字符串处理学习笔记 目录 C中字符串处理学习笔记1. 字符串长度相关函数1.1 strlen函数1.2 strnlen函数 2. 字符串复制、设置相关函数2.1 strcpy函数2.2 strncpy函数2.3 strlcpy函数2.4 strcat函数2.5 strncat函数2.6 strlcat函数2.7 sprintf函数2.8 snprintf函数2.9 asprint…

mysql常用函数五大类

mysql常用函数 1. 第一类&#xff1a;数值函数1.1 圆周率pi的值1.2 求绝对值1.3 返回数字的符号1.4 开平方&#xff0c;根号1.5 求两个数的余数1.6 截取正数部分1.7 向上取整数1.8 向下取整数1.9 四舍五入函数1.10 随机数函数1.11 数值左边补位函数1.12 数值右边补位函数1.13 次…

83. UE5 RPG 实现属性值的设置

在前面&#xff0c;我们实现了角色升级相关的功能&#xff0c;在PlayerState上记录了角色的等级和经验值&#xff0c;并在变动时&#xff0c;通过委托广播的形式向外广播&#xff0c;然后在UI上&#xff0c;通过监听委托的变动&#xff0c;进行修改等级和经验值。 在这一篇里&a…

鸿蒙开发仓颉语言【Hyperion: 一个支持自定义编解码器的TCP通信框架】组件

Hyperion: 一个支持自定义编解码器的TCP通信框架 特性 支持自定义编解码器高效的ByteBuffer实现&#xff0c;降低请求处理过程中数据拷贝自带连接池支持&#xff0c;支持连接重建、连接空闲超时易于扩展&#xff0c;可以积木式添加IoFilter处理入栈、出栈消息 组件 hyperio…

Mongodb的通配符索引

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第95篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?

代理IP协议是一种网络代理技术&#xff0c;可以实现隐藏客户端IP地址、加速网站访问、过滤网络内容、访问内网资源等功能。常用的IP代理协议主要有Socks5代理、HTTP代理、HTTPS代理这三种。代理IP协议主要用于分组交换计算机通信网络的互联系统中使用&#xff0c;只负责数据的路…