闭关修炼---网络原理之TCP协议

2023-11-09 13:30

本文主要是介绍闭关修炼---网络原理之TCP协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TCP协议段格式

        这图很重要!这图很重要!这图很重要! 重要的事说三遍,之后的TCP机制都是依靠这张图讲解。

1.源 / 目的端口号: 表示数据是从哪个进程来,到哪个进程去;
2.32 位序号 /32位确认号:
         发送的数据编号——序列号(Sequence Number)  SN
                发送的第一个字节的SN一般不是0,而是一个随机值。初始序列号(Initial SN) ISN
 

        确认的数据编号——确认序列号(Acknowledge Sequence Number)  ASN
        
3.4 TCP 报头长度:表示该 TCP 头部有多少个 32 bit (有多少个 4 字节);所以 TCP 头部最大长度是 15 * 4 = 60
4.6 位标志位 :
         URG:紧急指针是否有效(过时了,配合16位紧急指针来使用)当接收到URG=1时会优先传输某个字节到应用层。
        ACK:确认号是否有效。确定应答机制中的标志位
         PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
        RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段
        SYN:请求建立连接的标志位;我们把携带SYN标识的称为同步报文段
        FIN:通知对方连接关闭的标志位,我们称携带FIN标识的为结束报文段 

TCP原理

一、安全机制

①确认应答机制

        此机制和 序列号SN、确认序列号ASN 以及 确认号是否有效ACK 有关

        因为TCP协议即需要扮演了发送者(send Segment)的角色,同时还需要扮演接收者(acknowledge segment)的角色,为了TCP身兼两种不同的角色,在TCP设计之初就有一个标志位(ACK),在需要角色设转换的时候发挥作用。

 ACK == 1开关打开          ACK == 0开关关闭

        而ASN则表示确认应答序号,假设A发送1000个数据给B,而B确认应答是从这个数据的下个字节开始。如1000个数据是从1~1000,则确认应答是从1001开始的。ASN只有在ACK==1时才有意义。

具体的应答过程如下图所示:

为什么ISN不设置成从О开始,而是采用随机值?

        这是从安全角度考虑的,如果ISN设计从О开始,很容易有恶意的用户推算出来合法的SN的值
这样伪造TCP SN的成本很低。使用随机值,相对来说可以避免一部分这个情况。

②超时重传机制 

关于重传

如果没有接收到应答,可能会有两种情况导致。

        1.接收方没收到,所以没应答

这篇关于闭关修炼---网络原理之TCP协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376416

相关文章

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp