TCP的特性(包含三次握手、四次挥手问题)

TCP/IP超详细总结 网络的基础知识 一、协议 1、简介: 在计算机网络与信息通信领域里,人们经常提及“协议”一词。互联网中常用的具有代表性的协议有IP、TCP、HTTP等。而LAN(局域网)中常用的协议有IPX/SPX”等。 下面通过通俗一点的方式来解释一下协议: 有三个人A、B、C。A只会说汉语、B只会说英语、而C既会说汉语又会说英语。现在A与B要聊天,他们之间该如何沟通呢?若A与C要聊天,又会怎样?这时... 阅读详情

TCP协议基础

在这里插入图片描述
4位首部长度:其实就是划分了header和payload之间的分界线,单位是4个字节。例如:4位首部长度值为1111=>15,实际首部长度为15*4=>60字节
在这里插入图片描述
保留位:标识了这个TCP数据报是个啥类型的数据报
URG:紧急指针是否有效
ACK:确认号是否有效
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段
SYN:请求建立连接;我们把携带SYN标识的称为同步报文段
FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段

一、确认应答(可靠性的核心)

1.原理

发送方发数据给接收方了,接收方就回应一个应答报文,如果发送方接收到了这个应答报文,那么认为对方已经收到了。由于网络上的传输顺序是不确定的,因此不能单纯的通过收到的数据来确定逻辑,就需要对应答进行编号。确认应答的序号不一定是从1开始的。TCP的序号和确认序号是以字节为单位进行编号的。确认应答意思就是1001意思是1001以前的都收到了。
在这里插入图片描述

2.其他场景

确认应答机制也不是TCP的专属,有很多其他场景也会用到TCP,例如分布式场景
在这里插入图片描述
削峰填谷:消息队列要负责保存一些数据,但是消息队列里面的存储空间也不是无限的。像rocketmq这种,直接把数据持久化到磁盘上,存储空间还是挺大的;像rabbitmq,默认数据都在内存里,存储空间就更有限一些。存的数据,就需要定期淘汰。如果一个数据没有被消费过,那么就不能轻易的淘汰。通过确认应答的机制去判断这个数据是不是真的被消费成功过了。

二、超时重传(可靠性)

确认应答机制的传输过程中有可能会出现丢包的,一旦数据发生丢包就要进入超时重传的机制中了。
此时存在两种可能,一种是发送的消息丢了对方没看见,一种是对方回复的消息丢了。发送消息的一方把数据发送出去后,等待500ms,如果没有收到应答就认为是丢包了(Linux、Windows中,超时以500ms为一个单位进行控制)。网络是正常的情况下连续两次甚至三次都丢包的概率是非常低的。

三、连接管理(三次握手、四次挥手)可靠性

1.三次握手(如何建立连接)

A 客户端
B 服务器
在这里插入图片描述
(1)主要目的:
第一点是通过三次握手过程来确认A和B之间的传输是通畅的。尤其要确认A和B各自的发送以及接收能力是否正常。A-B B确认的A的发送正常;B-A A确认B的发送正常、接收正常;A-B B确认A的接收正常
第二点是通过三次握手让A 和B选择传输中适合的参数,例如TCP的序号从几开始。

(2)延伸问题:
如果握四次手或者两次可以吗?
四次:可以没必要,传输开销比三次大
两次:不可以

(3)TCP对应的状态转换
此图还包含对应阶段的socketAPI(Linux,C语言版本)
在这里插入图片描述
当创建好ServerSocket实例的时候就进入了LISTEN状态,SYN和ACK在连接过程中都为1
LISTEN:手机开机信号良好,随时可以打电话
ESTABLISHED:接通了电话双方可以传输信息了accpt返回了。

2.四次挥手(如何断开连接)

A 可以为客户端也可以是服务器
在这里插入图片描述
(1)对于B来说ACK和FIN触发的实际不一样:
B只要收到FIN就会立即触发ACK,这个是由内核完成的
B发送FIN的实际是由用户代码控制的,代码中出现socket.close()操作室才会触发FIN。(实际本质上是内核里面释放了对应的PCB文件描述符,若是没有调用close,但是进程结束或者是socket对象被GC回收了,PCB就会被销毁,同样也会触发FIN)

(2)TCP对应的状态转换
在这里插入图片描述
CLOSE_WAIT:服务器收到FIN以后,进入等待的状态,等待用户代码调用close,来发送FIN。
TIME_WAIT:表示客户端收到FIN以后进入了TIME_WAIT,这个状态就是为了处理最后一个ACK丢包。
若A收到FIN并返回ACK之后就销毁,而不进入TIME_WAIT状态,此时一旦最后一个ACK丢包了就无法重传ACK了(连接已经销毁了)。

(3)服务器上出现大量的CLOSE_WAIT的原因?
代码出现bug,close没有被即时调用到。

(4)服务器上出现大量的TIME_WAIT的原因?
可能是代码bug,主动发起FIN的一方会进入TIME_WAIT,需要排查服务器是否应该主动断开连接。

(5)端口绑定失败的原因?
哪方先断开连接,哪方就会进入TIME_WAIT,进程退出之后,TIME_WAIT状态仍然存在,TCP连接仍然存在。如果让服务器先退出,服务器这边就会进入到TIME_WAIT状态(原来的连接占据着端口),接下来如果服务器立即启动,新的进程又会尝试重新绑定这个端口,可能会存在端口绑定失败的情况。所以TCP服务器操作的时候,都是先结束客户端在结束服务器。
在socket api里有一个REUSE_ADDR选项,如果把这个选项加上,就能够让我们在绑定端口的时候复用TIME_WAIT 状态中的端口,Java socket里面应该是默认就设置了这个选项。

(6)四次挥手可以是三次挥手吗?
在延时应答和捎带应答中有可能会出现ACK和FIN合并的情况。

(7)四次挥手一定会执行吗?
不一定,四次挥手是一个正常断开的流程,实际上有的时候TCP也会异常断开,例如:网线断开。

四、滑动窗口(效率)

1.传输原理

TCP不仅仅是为了保证可靠性,还要尽可能的提高传输效率。这个过程中,发送方要花很多时间来等,这个等待其实就是浪费了大量的时间。所以进行批量发送,一次等一批的ACK,把多组数据的ACK等待时间给重叠起来了,一次批量发送的数据的长度就称为“窗口大小”,如果没有批量发送数据的长度限制(窗口无限大,完全不等ACK就直接发一批)就没有可靠性可言了。
窗口越大,整体的效率越高,可靠性越低
窗口越小,整体的效率越低,可靠性越高
在这里插入图片描述

2.窗口范围

在这里插入图片描述
当前窗口范围是1001-5000,也就是发送方发送了1001-2000、2001-3000、3001-4000、4001-5000,四组数据,同时等着四组数据的ACK,假设2001先到,发送方也就知道了1001-2000这个数据已经被对方接受到了(确认序号表示之前的都收到了,如果收到了3001这个ACK代表1001-2000和2001-3000都被对方接收了),接下来就立即再发一个5001-6000,仍然保证窗口大小是4份数据。并不是等4份ACK都到了再往后发。

3.滑动窗口出现丢包的情况

只要不是全丢就行,实际上TCP为了提高效率,并不是每一条数据都有ACK,会隔几条数据才有一个ACK。如果传输文件途中有一组数据假设是1001-2000丢了,文件会继续发,只不过后面发的这些都会呆在缓冲区(2001-7000),接收端会一直给发送端发送1001的ACK,发送端就知道是1001-2000丢了,传送给接受端后会返回7001ACK。
在这里插入图片描述

五、流量控制(可靠性)

1.流量控制:

是对滑动窗口进一步的补充,是基于接受方的处理能力来限制窗口大小的。根据接收方的处理能力(接收方的缓冲区空余空间大小),来动态决定方的发送速率(控制窗口大小)
例:接收缓冲区大小是4000,1-1000数据到达的时候,缓冲区这里面的用了1000,还剩3000,返回的ACK就会把3000这个消息告诉发送方,发送方再次发送数据的时候就按照3000作为窗口大小进行发送。直到窗口大小为0,发送方停了以后,为了能够查询当前接收方的窗口大小,每隔一段时间,还会再来一个窗口探测包,通过这个包(不传输具体业务数据)触发ACK,得到窗口大小。

2.窗口实际大小

TCP中有16位窗口大小(看第一张图)
TCP首部字节选项中包含了一个窗口扩大因子,实际窗口大小是窗口字段的值左移M位。(相当于*2)

六、拥塞控制(可靠性)

站在另一个角度来限制发送方的窗口大小,站在宏观的角度来看问题,把整个链路都看成了一个整体,只看结果。先慢启动,使用一个比较小的窗口来传输数据,看看是否丢包,如果不丢包说明网络比较通畅,逐渐加大发送率;若是丢包,说明网络发生拥堵,降低发送率。通过这样的方式得到:真实的发送窗口的大小=min(流量控制的窗口,拥塞控制的窗口)。如下图:所示
在这里插入图片描述

七、延时应答(效率)

为了提高效率,让窗口大小在保证可靠的基础上,尽量大一些。对于前面的流量控制来说,窗口大小就是接收缓冲区的剩余空间大小。而延时应答来说窗口大小是接收方收到消息后又等待了一会再返回ACK时的窗口大小(有一些数据在接收方等待的时候出缓冲区了,所以窗口大小大了一些)
在这里插入图片描述

八、捎带应答(效率)

在延时应答的基础上,很多的客户端/服务器的通信模式都是一问一答的形式,应用程序要进行响应。
由于有了延时应答,返回的ACK不是立即返回而是等一会,正好和响应合二为一。
在这里插入图片描述
延时应答和捎带应答中的四次挥手是可以变为三次的但是时间不确定。

九、面向字节流(粘包问题)

在面向字节流的情况下,需要注意粘包问题(指的是应用层的数据)。不是TCP特有的问题,所有面向字节流都有这样的问题。像UDP这种面向数据报的就没有这个问题。
如何解决粘包问题:通过设计一个合理的应用层协议来解决
1.给应用层数据设定结束符、分隔符
2.给应用层数据设定长度
在这里插入图片描述

十、TCP中异常的情况(心跳机制)

1.进程终止

不管进程是如何终止的,本质上都会释放对应的PCB,也会释放对应的文件描述符,一样会触发四次挥手,"进程终止"不代表连接就终止,进程终止其实就相当于调用了socket.close()而已。

2.机器重启

机器重启的时候,其实也是先暂停进程,仍然是进行四次挥手。

3.机器掉电/网线断开(突发情况!!机器来不及进行任何动作)

(1)掉电的是接收方
此时另外一边还在发送数据.此时显然发送方不会再获取到ACK ,于是就会超时重传,重传几次之后,就会尝试重置连接、复位报文段,在然后发送方就会放弃这个连接,把连接对应的资源就回收了。
(2)掉电的是发送方
此时另外一方在尝试接收数据,此时接收不到任何数据,此时接收方采取的策略,就是“心跳包"机制(也叫做"保活"),每隔一段时间,向对方发送一个PING包,期待对方返回一个PONG包,如果PING包发过去,过了很久还没有PONG,并且重试几次也不行,此时就认为对方已经掉线了。
心跳包,这是一个应用非常广泛的机制,不仅仅是在TCP。

UDP模仿TCP udp模仿tcp类似于socket实现tcp的功能(单方向),比如三次握手,四次挥手,超时重传快速重传等等。 模拟TCP的功能 三次握手 四次挥手 发送端要带有计时器,要实现RTT估计和RTO(重传计时器)估计。RTT如下 SampleRTT某报文段被发出到对该报文段的确认被收到之间的时间量 EstimatedRTT=(1-α)* EstimatedRTT+α*SampleRTT(α=0.1... 阅读详情

相关推荐

TCP 三次握手 四次挥手

三次握手 三次握手过程描述 第一次握手: 客户端发送syn标志位和seq num,向服务器申请建立连接,客户端状态由closed变为syn_send 第二次握手: 服务端返回 syn和ack标志位,ack num以及seq num,确认第一次握手的报文段,返回ack num=seq num(第一次握手发送的)+1,同意建立连接,服务器状态由listen变为syn_received 第三次握手: 发送确认报文段,返回ack以及ack num=seq num(第二次握手发送的)+1,客户端状态变为:es

是狮不是猿 1万+

TCP三次握手详解

一、TCP报文格式   TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和

bbs375的博客 1288

TCP三次握手与四次挥手

TCP三次握手和四次挥手,是TCP面向连接、可靠传输、全双工通信特性的核心体现:同步ISN,确认双方收发能力,三步交互,缺一不可,避免失效连接和数据丢失;独立关闭双方发送通道,四步交互,核心是全双工特性导致的“分两次关闭”,TIME_WAIT状态是可靠释放的关键;核心记忆点:握手看SYN+ACK,挥手看FIN+ACK,面试重点关注“为什么是三次/四次”“TIME_WAIT/CLOSE_WAIT问题”,结合源码和实战场景理解,才能真正吃透。

ysct_999的博客 4194

TCP三次握手、四次挥手、特点

TCP,传输控制协议,是一种可靠的传输层协议。一个TCP生命周期主要经历三个步骤 1. 建立连接(三次握手)2. 传输数据(数据通信)3. 关闭连接(四次挥手)三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。 刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。 进行三次握手:第一次握手 客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列

yzx3105的博客 423

完整IC设计流程解析&Makefile学习

本文介绍了decorder38项目的文件结构、自动化综合流程和Makefile使用方法。项目包含RTL到GDSII全流程文件,重点关注syn目录中的综合脚本。通过make dc命令运行综合流程,生成网表、约束和时序文件。关键报告如qor.rpt、area.rpt和min_vio.rpt用于分析综合质量、面积和时序。Makefile部分解释了其基本语法、IC设计中的典型结构,包括目标定义、命令执行和特殊声明,强调了其在自动化构建和依赖管理中的重要性。

m0_63352623的博客 855

立创星火计划:基于STM32H743VIH6的Maverick_H743_MK1.0高性能开源飞控硬件全解析

本文详细解析了基于STM32H743VIH6核心的Maverick_H743_MK1.0高性能开源飞控硬件设计。重点阐述了采用双IMU冗余设计、高精度气压计、多路独立电源管理以及丰富接口(如CAN总线)的考量,旨在为穿越机、科研无人机等平台提供强大、可靠的飞行控制解决方案。

weixin_28787801的博客 197

http://www.52im.net/thread-258-1-1.html

前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。 本文将分别讲解经典的TCP协议建立连接(所谓的“3次握...

weixin_30511039的博客 1912

树莓派4B+WebRTC实现远程监控:5步搞定公网视频流传输(含Node.js配置)

本文详细介绍了如何利用树莓派4B和WebRTC技术,通过5个关键步骤搭建低延迟、高隐私的远程监控系统。重点阐述了WebRTC点对点传输相较于传统方案的优势,并提供了包含Node.js信令服务器配置、树莓派视频流捕获与推送、以及移动端自适应观看页面的完整实现方案,帮助用户实现公网视频流传输。

websocket5live的博客 291

一文搞懂TCP的三次握手和四次挥手

一文搞懂TCP的三次握手和四次挥手

不脱发的程序猿 19万+

树莓派4B没有serial0或ttyS0,serial0没有映射到ttyS0,serial0和serial1调换映射

环境: 树莓派4B,ubuntu mate20 现象 终端输入ls -l /dev,发现只有serial1->ttyAMA0,没有serial0页没有ttyS0,更没有二者的映射。网上很多方法都是树莓派3B和3B+的,我自己试过,不太适用于4B,下面的方法是4B的,我自己用是成功的。 解决方法 cd /boot/firmware sudo gedit config.txt 注意不是/boot下的config,而是/boot/firmware下的config 打开文件后,找到enable_uart=0

qq_41208487的博客 7891

深入剖析QWEN 2.5模型架构:从GQA到RoPE的技术实现

本文深入解析了QWEN 2.5模型架构,重点介绍了其创新的GQA(分组查询注意力)和RoPE(旋转位置编码)技术实现。通过详细代码解读,展示了这些技术如何提升模型的计算效率和长文本处理能力,适用于代码生成和数学推理等任务。文章还提供了实践部署建议和调优经验,帮助开发者更好地应用这一先进模型。

weixin_42548816的博客 389

Java面试题自我总结(三)

1.xml和json的区别 区别: 1.传输同样格式的数据,xml需要使用更多的字符进行描述。 2.流行的是基于json的数据传输。 3.xml的层次结构比json更清晰。 2.请说下3次握手和4次挥手 三次握手: 第一次握手:客户端发送第一个包,其中SYN标志位位1,ACK=0,发送顺序号sequence=X(随机int)。客户端紧促SKY发送状态,等待服务器确认。 第二次握手:服务器收到这个包后发送第二个包,其中包SKY、ACK标志位位1,发送顺序号seq=Y(随机int),接收顺序号ACK=X+1

weixin_52060704的博客 182

【Linux】软件控制USB重新上电、加载:usbreset、hubpower、uhubctl

使用命令控制USB的供电、复位

郭老二 2185

网络——从传输层深度解析tcp协议

作者:小 琛 欢迎转载,请标明出处 文章目录绪论:tcp协议格式一、面向连接1. 三次握手2.三次握手中的包序管理3. 四次挥手3. 解决地址复用问题二、可靠传输1. 确认应答机制2.超时重传机制3.滑动窗口机制4. 拥塞控制机制5. 捎带应答机制6. 延时应答机制三、面向字节流 绪论:tcp协议格式 源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去; 32位序号/32位确认号 32位序号:表示tcp源端向tcp目的端发送的数据字节流 32位确认序号:表示tcp目的端期望tcp源端下一个请

qq_44745063的博客 820

多物理场耦合仿真-主题032-电磁-流体耦合

电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体

2401_87715305的博客 423

Android 系统状态栏中实现高斯模糊背景

至此,我们已经完成了在 Android 系统的 SystemUI 中实现高斯模糊背景的过程。通过以上的布局和代码修改,我们可以在状态栏中看到具有高斯模糊效果的背景。同时,为了在不同版本的 Android 系统上适配高斯模糊效果,可能需要进行一些额外的代码调整和兼容性处理。希望本文能够帮助你理解如何在 Android 系统的 SystemUI 中实现高斯模糊背景,并通过提供的源代码进行相应的开发和调试。首先,我们需要在 SystemUI 的布局文件中添加一个用于展示高斯模糊背景的视图。属性来开启模糊效果。

CyberSparkZ的博客 869

TCP 协议(包含三次握手,四次挥手)

TCP 特性1.确认应答 (可靠传输的最核心机制) 1.确认应答 (可靠传输的最核心机制) 可靠传输的最核心机制

一朵花花 5万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TCP 三次握手和四次挥手

TCP 三次握手和四次挥手

We choose to go to the moon in this decade and do the other things, not because they are easy, but beacase they are hard. 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TCP三次握手与四次挥手通俗理解

TCP三次握手与四次挥手详解 TCP通过三次握手建立可靠连接,确保双向通信能力:1)客户端发送SYN(Seq=x);2)服务器回复SYN+ACK(Seq=y, Ack=x+1);3)客户端确认ACK(Ack=y+1)。三次握手防止历史连接干扰,并协商初始序列号。 四次挥手安全关闭全双工连接:1)主动方发送FIN;2)被动方ACK确认;3)被动方发送FIN;4)主动方ACK确认。关键状态包括: TIME_WAIT(等待2MSL):确保最后一个ACK到达,避免旧报文干扰新连接。 CLOSE_WAIT:服务器未正

此人很懒,什么都留下了...快进来看看吧 2256

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Java】TCP的三次握手和四次挥手

TCP需要三次握手,是因为双方都是全双工的,所以要经历三次握手才能够真正建立连接如果是两次的话,不能证明服务器的发送能力和客户端的接收能力。而需要四次挥手,是TCP的半关闭状态造成的挥手过程中会造成两个重要的状态。

qq_63474430的博客 5325

tcp的三次握手和四次挥手(详解+图片)

TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫作客户(Client) 被动等待连接建立的应用进程叫作服务器(Server),建立TCP需要三次握手才能建立,而断开连接则需要四次挥手。 整个过程如图所示: 一、三次握手 在TCP/IP中,采用三次握手建立一个连接,连接过程就像打电话的过程 第一次握手:Client(客户端主机A)向Server(服务器主机B)发送一个连接请求...

Atao_tao的博客 1万+

TCP三次握手,四次挥手,通俗易懂!!!

传输层TCP三次握手和四次挥手详解。

2301_80754203的博客 2678

Go_详解TCP协议三次握手四次挥手

详解TCP协议三次握手四次挥手

itzhuzhu的博客 5万+

TCP三次握手与四次挥手详解含图解

本文梳理了TCP 三次握手(建立连接)和四次挥手(断开连接)的完整流程、核心信息及状态变化

无籽西瓜a的博客 9802

tcp的三次握手和四次挥手(超详细+图解)

我们这样来看好像是行的,就是要改变一下策略,原先可能服务端收到了客户端的断开连接请求后可以直接先返回一个ack然后做好断开连接的准备(把要传的数据传完),准备好在发FIN;其实就像一个计时器,服务器收到连接请求后会把连接放入半连接队列然后发送ack和syn,只有客户端在规定时间内返回正确的ack,连接才会被放入全连接队列,否则服务器就会重发ack和syn直到到达最大重传次数(默认值为5)2.第二次握手:服务器接受到客户端发送的syn(x),然后发送ack(x+1)和syn(y)给客户端。

release_lonely的博客 2550

TCP 三次握手四次挥手

TCP三次握手(Three-Way Handshake) 是建立TCP连接时,客户端和服务器之间为了保证可靠的数据传输而进行的三次消息交换。三次握手的目的是通过交换序列号,确认通信双方都准备好建立连接,并且双方都能进行数据的发送和接收。注意:三次握手只在TCP连接建立时进行一次,而不是在每次发送消息时都进行。因为TCP是一个 面向连接的协议,这意味着在发送数据之前,客户端和服务器需要建立一个持久的连接。这个连接在数据传输过程中保持开放,直到完成数据交换或者关闭连接。

m0_72874409的博客 1482
上一篇: FFmpeg、bcg729、SDL 的下载及编译
下一篇: TCP和UDP相关问题
冒泡迪
博客等级 码龄7年 193粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值