【计算机网络】深入解析TCP协议

绕不开的TCP之三次握手 在面试过程中,无论是开发还是测试岗位,TCP都是一个绕不开的话题,而谈到TCP,大概率三次握手也会被提及,那应该如何回答这个问题呢?在回答这个问题之前,让我们先预热一波吧。 TCP的定义 TCP协议全称: 传输控制协议, 顾名思义, 就是要对数据的传输进行一定的控制,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP连接全过程的状态 TCP连接全过程中,客户端及服务端存在的状态如下:... 阅读详情

🔥 博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于分享知识,欢迎大家共同学习和交流。

TCP协议头

源端口、目的端口

分别占16位,存放发送端的端口号和接收端的端口号。

序号

简称Seq,占4个字节32位,记录数据发送顺序。因为数据在网络中并不是先发先到达的,所以需要有序号来确保数据能够按照发出的的顺序进行排列。与确认号一起使用。数据是按照字节排列的,序号是这个数据包起始的字节号位置。

确认号

简称ack,占4个字节32位,与seq一起使用来保证发出去的数据有序可靠。

首部长度

占4位,用来告知我们数据包的首部长度是多少。

保留

占6位,暂不使用。

标志位

6个标志位,分别代表了TCP包是什么样的包。
URG:Urgent,紧急标志位,若为1,代表紧急指针生效,说明此包中有紧急需要看的数据,紧急指针指向数据地址。

ACK:确认序号标志位,若为1,就代表当前的包是确认包,确认序号生效。

PSH:push标志位,若为1,就代表当前包中的数据需要应用层尽快处理,不需要等待接收缓冲区填满,尽快将数据传递给应用层。

RST:reset标志位,重置连接,若连接的两端出错导致连接断开,需要RST标志位为1来重新连接。

SYN:Synchronize Sequence Numbers,握手信号,建立连接。

FIN:finish,断开连接。

窗口

占16位,滑动窗口。表示接收方可以接收的数据量,用于流量控制。

校验和

占16位,检验TCP头里的数据是否有问题。

紧急指针

占16位,与紧急位配合使用,用来识别紧急数据的。

可变部分选项

TVL类型的,Type:设置什么类型的属性;Value:设置属性的值;Length:长度是可变的。

ACK机制

ACK的全称为Acknowledge character,即确认字符,表示接收到的字符无错误。 

服务端对所收到的报文进行检查,若未发现错误,便向客户端发出确认回答ACK,表明信息已被正确接收,并准备好接收下一份报文。

其格式取决于采取的网络协议。当发送方接收到ACK信号时,就可以发送下一个数据。

data(seq=1...100),代表数据序列号是1~100字节的部分;
ack=101,说明字节号101之前的数据收到了,确认应答;ACK,将ACK标志位置1。
data(seq=101...200),从应答的ack开始,代表的数据序列号是101~200字节的部分;
ack=201,说明字节号201之前的数据收到了,确认应答;ACK,将ACK标志位置1。

服务端发送数据,对端响应。ack和数据可以在同一个包里,需要对端也回复一个确认包。

超时重传

超时重传用来防止数据丢包。有两种情况:发送的数据包丢失了和服务端回复的确认包丢失了。

数据包丢失:客户端会开启一个定时器,当发送数据以后开始计时,若超过了定时器设定的时间客户端仍未收到数据包,就会重新发送一遍刚才的数据。

确认包丢失:客户端正常收到了服务端发送的数据包,但是客户端发送的确认包超过了定时器设定的时间,那么就需要将确认包丢失不处理,发送相同的确认包给服务端。

TCP三次握手

三次握手

TCP传输控制协议是面向连接的,可靠的、基于字节流的传输协议。数据传输是在连接的基础上进行的。三次握手指的是需要发送三次包才能建立连接。
握手信号(SYN)一般是客户端作为主动方的,服务端作为被动方。
0)首先,客户端和服务端都处于CLOSE状态。先是服务端主动监听某个端口,处于LISTEN状态。
1)客户端主动发起连接SYN(即发送握手信号,要将SYN标志位置为1),发送一个数据包包含序列号和SYN,之后客户端处于SYN-SEND状态。
2)服务端收到发起的连接,返回SYN,并且确认客户端的SYN,之后处于SYN-RCVD状态。
3)客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处于ESTABLISHED状态,因为它一发一收就成功了。
4)服务端收到ACK的ACK之后,处于ESTABLISHED状态,因为它也一发一收了。

三次握手中可以携带有效数据吗?

可以。需要从第三次握手才可以携带有效数据,因为此时已经建立了连接。

为什么是三次握手?不是两次或四次

为什么不是四次:若是服务端发送给客户端的数据包中,SYN和ACK分开发送则需要四次。但是TCP协议格式中的ACK和SYN标志位可以同时为1,互不影响,所以可以同时发送,没有必要进行四次握手。

为什么不是两次:假设客户端在发送完SYN后立刻关闭连接,若是两次握手,服务端会认为已经建立与客户端了连接,而客户端并没有建立连接。会出现状态的错误,后续无法进行数据的发送。

四次挥手

四次挥手分为主动端和被动端。
我们来看一下四次挥手的过程:
1)主动方打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即报文,之后主动方进入FIN_WAIT_1状态。

2)被动方收到该报文后,就向主动方发送ACK应答报文,接着被动方进入CLOSED_WAIT状态。

3)主动方收到被动方的ACK应答报文后,之后进入FIN_WAIT_2状态。

4)等待被动方处理完数据后,也向主动方发送FIN报文,之后被动方进入LAST_ACK状态。

5)主动方收到被动方的FIN的报文后,回一个ACK应答报文,之后进入TIME_WAIT状态。

6)被动方收到了ACK应答报文后,就进入了CLOSED状态,至此被动方已经完成了连接的关闭。

7)主动方在经过2MSL一段时间后,自动进入CLOSED状态,至此主动方也完成连接的关闭。

为什么TIME_WAIT状态要等待2MSL

MSL是报文段最大存活时间,超过这个时间将触发超时重传。2MSL的时间可以保证数据包的一去一回,防止四次挥手的第四次数据包丢包后,无法重传数据包,导致无法关闭连接。假如第三个包丢了,那么1个MSL时间以后,服务器会给客户端重传一个FIN的包,2MSL的时间正好够收到服务器重传FIN包的时间。所以是2MSL。

为什么ACK和FIN要分两次发送(为什么是四次挥手)

因为在主动方发送FIN时,可能数据包里还带有有效数据没有处理完,为了确保所有数据都能到达,并且被动方能够处理完所有数据,需要处理一段时间。所以被动方的FIN断开连接请求不能和ACK数据报一起发送,要等待一段时间以后单独发送一个断开连接的数据报。因此需要四次挥手。

RTT(Round-Trip Time)

RTT全称Round-Trip Time 往返时延。是计算机网络中的重要性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。

RTT由三个部分决定: 即链路的传播时间、末端系统的处理时间以及路由器的缓存中的排队和处理时间。其中,前面两个部分的值作为一个TCP连接相对固定,路由器的缓存中的排队和处理时间会随着整个网络拥塞程度的变化而变化。所以RTT的变化在一定程度上反映了网络拥塞程度的变化。

RTO

RTO全程Retransmission Timeout 超时重传时间。

TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。此计时器设置的超时重传时间RTO应当略大于TCP报文段的平均往返时延RTT,一般可取RTO = 2RTT。但是,也可以根据具体情况人为调整RTO的值,例如可以设置此超时重传时间RTO = 90秒。当超过了规定的超时重传时间还未收到对此TCP报文段的预期确认信息,则必须重新传输此TCP报文段

累计应答

在收到多个包后,统一进行回复,而不是一收一发。

滑动窗口

窗口概念:TCP 是每发送一个数据,都要进行一次确认应答。当上一个数据包收到了应答了,再发送下一个。这种方式的缺点是效率比较低的。

有了窗口,就可以指定窗口大小,窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值。

窗口大小由哪一方决定?

窗口的大小是在不断变化的。三次握手的时候,会交换窗口大小。通常窗口的大小是由接收方的窗口大小来决定的。发送方发送的数据大小不能超过接收方的窗口大小,否则接收方就无法正常接收到数据。

发送方滑动窗口:

接收方滑动窗口:

流量控制

所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

流量控制会影响滑动窗口的大小。如果接收端没有及时处理完数据,会告知发送端减少数据的发送。等处理完以后,再正常发送数据。

粘包问题

TCP是基于字节流传输的,没有边界、可以合并的传输数据方式。
合并就要能拆开、拆不开就是粘包

解决方法:
1、设置标志位(起始/结束标记)


缺点:标记是用特殊符号来表示的,所以可能会出现应用程序发送的数据与标志位重复

例如:???是我们标记符号,而应用程序发送的数据中也有???,则标记无法正常起作用

2、固定包大小
将每个发送的数据包都设置为相同大小

缺点:如果发送小数据,则会浪费空间;如果发送大数据,则发送不完。
适用场景:没有用户输入数据的时候

3、先发送数据长度,然后再发送数据包(通用)


缺点:多发了一个包
这种方法比较通用

实现原理:

struct Node n1;
int nSize=sizeof(n1);
//发送
send(sockClient,(char*)&nSize,sizeof(int),0); //先发送包的大小
send(sockClient,(char*)&nS1,sizeof(n1),0);  //发送数据包
//接收int nPackSize=0;
recv(sockClient,(char*)&nPackSize,sizeof(int),0); //先接收包大小
char* buf=new char[nPackSize];
recv(sockClient,buf,nPackSize,0); //再接收包
delete []buf;

4、短连接
在每次连接成功之后只发送一个包,就断开连接
缺点:效率低
适用场景:浏览网站

心跳机制

心跳机制是定时发送一个自定义结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。

什么是心跳机制?

每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息。如果服务端几分钟内没有收到客户端信息,则视客户端断开

应用场景

在长连接下,有可能很长一段时间都没有数据往来。理论上来说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候就需要心跳包了,用于维持长连接,保活。

心跳包的发送技术

①应用层自己实现的心跳包(可以自己设置,灵活)
②使用SO_KEEPALIVE套接字选项(传输层)(不灵活)

Nagle算法

Nagle算法就是为了尽可能发送大数据块,避免网络中充斥着许多小数据块。
(数据块越多,传输速度越慢。我们可以将这种现象和“塞车”类比)

Nagle算法的规则

(1)如果包长度达到MSS(最大报文段长度),则允许发送;
(2)如果包中含有FIN,则允许发送;
(3)设置了TCP_NODELAY选项,则允许发送;(该选项为了关闭Nagle算法)
(4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;
(5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。

关闭Nagle算法

Nagle算法默认是打开的,如果对于一些需要小数据包交互的场景的程序,比如,telnet或ssh这样的交互性比较强的程序,则需要关闭Nagle算法。

int value=1;
setsockopt(sock_fd,IPPROTO_TCP,TCP_NODELAY,(char*)&value,sizeof(int));

拥塞控制

网络控制中的链路容量和交换结点中的缓存和处理机都有工作的极限,当网络的需求超过它们的工作极限时,就出现了拥塞。在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时TCP就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断的放大。

TCP的四种拥塞控制算法

1、慢开始
2、拥塞避免
3、快重传
4、快恢复

慢开始与拥塞避免

发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。

慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。

为了防止cwnd增长过大引起网络拥塞,还需设置一个慢开始门限ssthresh状态变量。
ssthresh的用法如下:
当cwnd<ssthresh时,使用慢开始算法
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意

拥塞避免算法让拥塞窗口缓慢增长,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1而不是加倍。这样拥塞窗口按线性规律缓慢增长。

快重传

在TCP连接中,当发送方收到三个连续的重传请求时,会进入快重传状态,立即重传最后一次发送的数据包。在快重传状态下,发送方会停止发送新的数据包,等待接收方的确认,而不必继续等待设置的重传计时器时间到期。

快恢复

①当触发了快重传机制后,把ssthresh门限减半,但是之后不执行慢开始算法
②如果网络出现拥塞,就无法触发快重传机制收到重复确认,所以现在发送方认为网络可能没有出现拥塞。所以不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法
cwnd=ssthresh+3,是因为发送方连续收到三个重复确认消息。

TCP协议总结

面向连接的,可靠的传输,基于字节流的传输方式。
面向连接指发送数据之前必须在双端建立连接,建立连接使用“三次握手”。
可靠传输:seq和ack
基于字节流的传输:粘包问题
解决方案:1、先包大小,再数据 2、加结束标记 3、固定包大小 4、短连接
为什么TCP是可靠的
1、三次握手和四次挥手
2、重传和确认机制
3、合理的分段
4、检验重新排序
5、滑动窗口-流量控制
6、拥塞窗口-4种拥塞控制算法
TCP可以发广播吗?
TCP是一对一传输的,理论上是不能发广播的。

UDP和TCP对比

Linux网络协议之TCP协议(传输层) 基于著名书籍和自我学习得出的Linux网络协议之TCP协议精华知识 阅读详情

相关推荐

TCP的TIME_WAIT状态

1. TIME_WAIT状态 主动关闭方在收到被动关闭方的FIN包后并返回ACK后,会进入TIME_WAIT状态,TIME_WAIT状态又称2MSL状态,每个TCP连接都必须有一个最大报文段生存时间MSL,在网络传输中超过这个时间的报文段将被丢弃。当TCP连接发起一个主动关闭,并发出最后一个ACK时,必须在TIME_WAIT状态停留两倍MSL时间,在2MSL等待期间,定义这个连接的插口(客户端IP...

各种西瓜的博客 1548

【网络】传输层协议——TCP协议(初阶)

TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据面向字节流。

2301_80224556的博客 9488

计算机网络基础核心知识:分层、IP与TCP协议全解析

网络分层是理解计算机网络的第一道门槛,从OSI七层模型到TCP/IP四层模型,其核心价值在于通过解耦降低协议设计与实现的复杂度。IP地址、子网掩码与CIDR则承载着网络寻址与路由的基础,子网划分计算直接关系到企业内网的规划效率与扩展能力。传输层中的TCP协议通过握手、确认应答、超时重传、流量控制等机制,保证数据可靠交付;而HTTP、DNS、DHCP等应用层协议,则决定了上层业务的连接质量与用户体验。面对网络不通、端口不可达、域名解析失败等常见问题,掌握从物理层到应用层的逐层排查顺序,能够帮助开发与运维人员快

weixin_32466193的博客 218

TCP协议详解 (史上最全)

网络拓扑图吧,请做好。

chentiebo的博客 4万+

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

快速入门:使用 SQL Server Management Studio (SSMS) 连接和查询 SQL Server 实例

开始使用 SQL Server Management Studio (SSMS) 连接到 SQL Server 实例并运行一些 Transact-SQL (T-SQL) 命令。本文介绍如何连接和查询实例SQL Server。有关 Azure SQL,请参阅连接。若要使用,请参阅连接和查询。若要详细了解如何SQL Server Management Studio,请参阅其他。......

m0_72938729的博客 5727

计算机网络五层协议体系与TCP/UDP深度解析

计算机网络协议体系是构建现代互联网通信的基础架构,其中五层模型(物理层、数据链路层、网络层、传输层和应用层)是最常用的参考框架。该模型通过分层设计实现了通信功能的模块化,每层专注于特定功能并通过标准接口与相邻层交互。在传输层,TCP和UDP是最核心的协议:TCP通过三次握手建立可靠连接,提供流量控制和拥塞管理,适合文件传输等场景;UDP则采用无连接方式,具有更低延迟,适合视频会议等实时应用。理解这些协议的工作原理对网络编程和故障排查至关重要,比如通过Wireshark分析数据包或优化TCP参数提升传输效率。

weixin_33462167的博客 212

地瓜派RDK X5部署YOLOv11n避坑指南:从Softmax瓶颈到BPU加速的实战解析

本文详细解析了在地瓜派RDK X5开发板上部署YOLOv11n模型时,从性能暴跌到成功优化的全过程。核心在于通过配置`node_info`将模型中的Softmax算子强制在BPU上以int16精度运行,解决了因算子被分配到CPU导致的严重性能瓶颈。实战部署后,模型推理延迟从126ms降至10.8ms,FPS从7.9提升至92.3,实现了显著的性能优化。

beta5的博客 864

计算机网络中TCP协议的拥塞控制算法解析

拥塞控制是指通过某种策略限制发送方的数据流量,防止过多的数据涌入网络造成瓶颈效应。它与流量控制不同,后者关注的是点对点之间的连接管理。

jie_kou的博客 1238

l0phtcrack 7(爆破管理员密码)使用教程

l0phtcrack7简称lc7,是爆破计算机管理员密码的软件,早期是网络安全管理员用来检测系统用户是否使用了不安全的密码,后被黑客用于用户口令破解 功能:该工具支持远程破解,理论上能破解所有密码,但对复杂度比较高的密码,破解时间很长 使用前提:1.登录了需要破解的计算机 2.知道需要破解的计算机的一个管理员的账户,密码 ** 也许你会疑惑,我都知道了一个管理员账户密码了,还要另外的管理员密码...

Xiongcanne的博客 2万+

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1011

计算机网络中的传输层:深入解析 TCP 协议

本文深入探讨了 TCP 协议在传输层的核心原理,详细介绍了 TCP 头部字段、三次握手过程、连接建立中的常见问题与排查方法。通过分析每个环节的工作原理,帮助读者更好地理解 TCP 在网络中的角色,并解决实际中的网络问题。

往者之不谏 来者犹可追 1461

Delta并联机构运动学正逆解:从理论建模到Matlab实战

本文深入解析了Delta并联机构运动学正逆解的核心原理与实战方法。通过几何建模,清晰阐述了其“逆解简单、正解复杂”的特性,并详细推导了基于一元二次方程的逆解解析算法与采用牛顿-拉弗森迭代法的正解数值算法。文章结合完整的Matlab代码实例,从符号推导到数值求解,提供了从理论到实践的完整实现路径,助力机器人开发者掌握Delta并联机构的运动学分析。

weixin_29096377的博客 432

计算机网络基础试题解析:协议分层、TCP握手与子网划分核心考点

计算机网络协议分层是构建网络通信体系的基础框架,通过OSI七层模型和TCP/IP四层模型实现功能解耦。其核心原理在于每层专注特定功能,下层为上层提供服务接口,从而确保数据封装、传输和路由的高效性。这一设计使得网络具备可扩展性和互操作性,在互联网、企业网和物联网等场景中支撑起端到端通信。TCP三次握手作为传输层关键机制,通过SYN和ACK标志位确保连接可靠性;而子网划分技术则基于IP地址和掩码计算,优化地址分配效率。本文聚焦协议分层、TCP握手和子网划分等高频考点,通过典型试题解析帮助读者掌握网络基础的核心逻

weixin_34129696的博客 379

YOLOv11 知识蒸馏完整实战:Teacher–Student 训练策略与性能飞跃

在self.alpha = alpha # 蒸馏损失权重self.temperature = temperature # 温度系数,控制分布平滑度# 输出分布蒸馏(KL散度损失)# 中间特征蒸馏(MSE损失,对齐中间层特征)# 总蒸馏损失知识蒸馏是YOLOv11在“小模型高性能部署”场景的“破局之法”——它让小模型能“站在大模型的肩膀上”,兼具速度与精度。从损失函数定义到多阶段训练,再到实战落地,本教程已为你铺就了一条清晰的路径。

m0_64661770的博客 141

Python 复现AlexNet框架代码

【代码】Python 复现AlexNet框架代码。

Quintin 2418

计算机网络协议tcp ip最顶层,TCP协议解析

TCP协议概述属于 传输层通信协议基于TCP的应用层协议有HTTP、SMTP、FTP、Telnet 和 POP3主要特点:面向连接、面向字节流、全双工通信、通信可靠。优缺点:优点:数据传输可靠缺点:效率慢(因需建立连接、发送确认包等)应用场景:要求通信数据可靠时,即 数据要准确无误地传递给对方。如:传输文件:HTTP、HTTPS、FTP等协议;传输邮件:POP、SMTP等协议万维网:HTTP协议文...

weixin_39905226的博客 1189

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IP地址与TCP协议:计算机网络入门核心解析

计算机网络通信的本质是设备间可靠地传递数据,这离不开两个基础支柱:IP地址负责定位设备,TCP协议负责保证传输质量。IP地址如同网络世界的门牌号,通过子网掩码划分网络与主机;TCP则通过三次握手建立连接,以确认应答、滑动窗口和拥塞控制确保数据不丢不乱。理解这些原理后,无论是排查“IP地址冲突”、配置静态IP,还是优化TCP连接状态,都有了清晰的排查思路。实际工作中,从ping命令验证连通性,到抓包观察握手过程,再到调整内核参数缓解TIME_WAIT堆积,都体现了协议原理的工程价值。用大白话梳理IP地址与TC

weixin_32308101的博客 245

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机网络——域名解析后的TCP协议详解

由浅入深理解TCP协议

Boom!脑洞大爆炸的博客 4411

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机网络—TCP协议详解:协议构成、深度解析(1)

本文是总结了对于计算机网络中常见的TCP协议的组成,本文主要是在于介绍TCP协议段的格式,对于TCP协议的每一个部分构成都做了详细的介绍~(˶‾᷄ꈊ‾᷅˵)~

B1ue还在专注 8801

【计算机网络】传输层的UDP与TCP协议解析

目录 目录 TCP/IP模型 传输层协议概述 进程标识符——端口 UDP协议 UDP概述 UDP首部格式 TPC协议 TCP概述 TCP首部格式 TCP连接的建立和释放 建立连接 释放连接 TCP可靠传输的实现 以字节为单位的滑动窗口 发送接收缓存 TCP/IP模型 传输层协议概述 从网际层来看,通信的主体是两台主机,ip数据报的首部已经包含了源主机ip地...

奋进的小白粥 1680

计算机网络】深入解析 TCP 协议:从三次握手到拥塞控制

TCP(Transmission ControlProtocol)是传输层的面向连接、可靠的字节流协议,通过三次握手建立连接,四次挥手释放连接,利用滑动窗口、拥塞控制等机制保证数据可靠传输,适用于对可靠性要求高的场景(如HTTP、FTP)。双向确认:确保双方收发能力正常。若仅两次握手,服务端无法验证客户端是否收到 ACK(旧连接残留的 SYN 包可能导致误连)。三次握手通过双向确认,避免无效连接。TCP 协议通过精巧的设计(三次握手、滑动窗口、拥塞控制等),在不可靠的网络层上构建了可靠的传输服务。

w148_1748的博客 1427

计算机网络—TCP协议详解:协议构成、深度解析(3)

本文总结了对于计算机网络中TCP协议的其它的管理机制,对流量控制、滑动窗口、拥塞控制、延时应答、面向字节流以及粘包问题做了较为全面的解析,满满的干货~~(˶‾᷄ꈊ‾᷅˵)~

B1ue还在专注 3432

计算机网络之TCP协议段格式及解析 ,TCP定时器

TCP协议段格式及解析

yaszja的博客 446

计算机网络中负责解析域名的协议是,计算机网络——域名解析后的TCP协议详解...

点赞后看,养成习惯喜欢的话 可以点个关注哟你们的点赞支持对博主们来说很重要哦 !!!本文将要说明的是,当你使用http协议访问某域名时,对应网络层中TCP协议的具体工作情况。本文将针对以下问题逐条进行解答:01 域名解析后,TCP进程此时传送的是什么?02 TCP进程三次握手连接的原因和步骤?03 建立握手后,TCP如何传送HTTP?04 TCP如何确定对方拿到了HTTP数据?05 TCP为什么要...

weixin_42522167的博客 490

计算机网络‑TCP 协议原理与特性解析

本篇文章从 TCP 报文头部结构入手,讲解 TCP 协议可靠传输七大特性、提升传输性能的四大机制,包含滑动窗口、延时应答、捎带应答等核心知识点。文末整理了三次握手、四次挥手、TIME‑WAIT、流量控制与拥塞控制等后端高频面试题,适合计算机网络初学者、后端与测试开发求职者复习背诵。

加油,量变引起质变 1046
上一篇: 【计算机网络】UDP怎么实现可靠传输
下一篇: 【计算机网络】聊天记录如何保存
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值