tcp down 命令的五种常用方式,一过滤端口二过滤特定协议三抓取本地环路数据包四的额定协议特定端口五过滤主机 ip。 想学习更多网络知识,点击评论区置顶链接。
粉丝2.9万获赞10.1万

通用指导 tip dump 抓包命令使用工具可以使用 share 或者 moba x term, 推荐 moba x term 下载,安装 moba x term 后打开 moba x term 工具,选择 session, 选择输入服务器地址, 勾选 specify user name, 输入 root, 点 ok, 登录进入后台,输入 tip dump s 零 i any host 对端 ip 地址 w v s 表示抓取豹纹,字节大小零表示抓取所有豹纹, i 表示选择网卡, any 表示抓取所有网卡豹纹 host 跟对端地址可以是国标上下集域的地址,也可以收留地址。 w 后面跟文件名后缀右 p cap 未显示当前抓包详细字节大小,按 c t r l 加 c 停止抓包,或者通过端口号 port 五零六零 or 五零六一 r 八千八百抓包命令 tip dump s 零 i any port 五千零六十 r 五千零六十一 r 八千八百 w d n g e p cap v 点刷新键,选中抓包的文件,拖到电脑桌面。

要正确的姿势涨知识!哈喽大家好,欢迎收看涨知识!对于 tcp 协议和 udp 协议,大家应该都有做耳闻, 我们常用的网络通讯,比如浏览网页、软件聊天,以及你现在正在收看的视频,都是通过这两种协议来进行数据传输的。到底他们是如何工作的?这两种协议又有什么区别呢?请耐心看完本期视频,一定会有所收获。 tcp 协议和 udp 协议都工作在传输层,他们的目标都是在程序之间传输数据,数据可以是文本文件可以是视频,也可以是图片, 对于 tcp 协议和 udp 协议来说,都是一对二进之处,并没有多大的区别。那 tcp 与 udp 之间的区别是什么?想必看到这里的同学也能异口同声的说出来。最大的区别 是一个机遇连接,一个机遇飞。连接具体是什么意思?我们来举一个简单的例子,如果把人与人的通信比喻为晋城与晋城的通信, 我们基本有两种方式,第一种方式是写信,第二种方式是打电话。如果不考虑速度因素,这两种方式之间最大的区别是什么?就是信寄出去之后,对方是否能收到,以及收到的信内容是否完整,先后继两封信过去,是否按照顺序接收都变成了未知数, 甚至你填写的收信地址和收信人是否存在,你都无法确认。而打电话则不同,从拨打电话到对方接通互相通话,再到结束通话后挂断,这一系列的流程都能得到及时的反馈, 并且能确认对方准确的接收到。打电话是基于连接的,也就是 tcp, 而写信就是基于非连接的,就是 udp。 tcp 是如何保证以上过程的?有三个关键的步骤,分别为三次握手、传输确认,四次挥手。 三次握手是建立连接的过程,当客户端向服务端发起连接时,会先发一包连接请求数据过去询问一下能否与你建立连接。这包数据我们称之为肾包,如果对端同意连接,则回复一包性价艾克包。客户端收到之后回复一包艾克包连接建立。 因为这个过程中互相发送了三包数据,所以称之为三次握手。为什么要三次握手而不是两次握手?服务端回复完三加艾克之后就建立连接, 这是为了防止因为已失效的请求豹纹突然又传到服务器引起错误。这是什么意思?假设采用两次握手建立连接,客户端向服务端发送了一个肾包来请求建立连接,因为某些未知的原 原因并没有到达服务器,在中间某个网络节点产生了滞留。为了建立连接,客户端会重发赠包,这次的数据包正常送达,服务端回复增加艾克之后建立起来连接, 但是第一包数据阻塞的网络节点突然恢复,第一包省包又送达到服务端,这时服务端会误认为是客户端又发起了一个新的链接, 从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致。如果在三次握手的情况下,服务端收不到最后的爱,可自然不会认为连接建立成功。 所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了能够在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。我们 刚才说过, tcp 协议需要在不可靠的信道上保证可靠的连接。现在就有几个问题需要面对,一包数据有可能会被拆成多爆发送,如何处理丢包问题?这些数据包到达的先后顺序不同, 如何处理乱序问题?针对这些要求, tcb 协议为每一个连接建立了一个发送缓冲区,从建立连接后的第一个字节的序列号为零,后面每个字节的序列号就会增加。一 发送数据时,从发送缓冲区取一部分数据组成发送豹纹,在其 tcb 协议头中会附带序列号和长度,接收端在收到数据后需要回复确认豹纹,确认豹纹中的艾克等于接收序列号加长度, 也就是下一包数据需要发送的起始序列号。这样一问一答的发送方式能够使发送端确认发送的数据已经被对方收到, 发送端也可以一次发送连续的多包数据,接收端只需要回复一次艾克就可以了。这样发送端可以把带发送的数据分割成一系列的碎片发送到对端。对端根据序列号和长度在接收后重构出来完整的数据。 假设其中丢失了某些数据包,则接收端可以要求发送端重传。比如丢失了一百到一百九十九这一百个字节,接收端向发送端发送艾克等于一百的豹纹,发送端收到后重传这一包数据,接收端进行补齐。 以上过程不区分客户端和服务端, tcp 连接是全双工的,对于两端来说均采用上述机制。我们再来看一下什么是次次挥手。处于连接状态的客户端和服务端都可以发起关闭连接请求,此时需要次次挥手来进行连接关闭。假设客户端主动 发起连接关闭请求,他需要将服务端发起一包粪包,表示要关闭连接,自己进入中置等待一状态。这是第一次回收。服务端收到粪包,发送一包艾克包,表示自己进入了关闭等待状态。客户端进入中置等待二状态,这是第二次回收。 服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数据之后,发送一包粪包进入最后确认状态,这是第三次回收。客户端收到之后回复艾克包进入超时等待状态,经过超时时间后关闭连接, 而服务端收到艾克堡后立即关闭连接,这是第四次回收。为什么客户端需要等待超时时间?这是为了保证对方已收到艾克堡。因为假设客户端发送完最后一包艾克堡后就释放了连接,一旦艾克 包在网络中丢失,服务端将一直停留在最后确认状态。如果客户端发送最后一包艾克包后等待一段时间, 这时服务端因为没有收到艾克包,会重发粪包,客户端会响应这个粪包,重发艾克包并刷新超市时间。这个机制跟三次握手一样,也是为了保证在不可靠的网络链路中进行可靠的连接断开确认。 了解了 tcp 协议,我们再来看一下 udp 协议。首先 udp 协议是基于非连接的发送数据,就是简单的把数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为 udp 这种简单的处理方式, 导致他的性能损耗非常少,对于 cpu 内存资源的占用也远小于 tcp。 但是对于网络传输过程中产生的丢包, udp 协议并不能保证,所以 udp 在传输 稳定性上要弱于 tcp, 所以我们能总结出来 tcp 和 udp 的主要区别。 tcp 传输数据稳定可靠,适用于对网络通讯质量要求较高的场景, 需要准确无误的传输给对方,比如传输文件、发送邮件、浏览网页等。 udp 的优点是速度快,但是可能产生丢包,所以适用于对实施性要求较高,但是对少量丢包并没有太大要求的场景, 比如域名查询、语音通话、视频直播等。有 app 还有一个非常重要的应用场景就是隧道网络。什么是隧道网络?比如我们常用的 vpn 就是一种隧道网络,以及在 sdn 中用到的微叉烂也是一种隧道网络。 关于隧道网络的知识,我们在下期视频进行讲解,今天的视频就到这里了,欢迎大家点赞、留言、关注、转发,再见!


怎么在 linux 中是用命令行抓包呢?第一个案例,抓取某网卡的所有流量,这里的网卡标示符为 e m p e s 零,并保存文件为一点 p c p。 第二个案例,抓取指定网卡指定端口号的流量。 第三个案例,抓取指定网卡与某 ip 有关,并且指定端口号的流量,这里的网卡为 emp es 零,端口号为二十二。第四个案例,使用参数杠 c 指定要抓取的豹纹数量,这里只抓取前五个 icmp 的豹纹。 第五个案例,只抓取与特定 ip 有关的前五个报文,并且保存为五点 pcap 文件,然后把 pcap 文件传给运动时,使用 ys 打开它。

大家好,我是男胖子,在上一节呢,我们是对 rst 豹纹产生的原因都进行了分析,然后在这一节呢,我会拿出之前我在工作上遇到了一个 rst 的豹纹以及他的抓爆文件,来具体的分析一下在生产环境当中遇到的这个 rst 豹纹的问题。 首先介绍一下我当时抓爆的一个背景,就是在我们的服务器上面,嗯,会偶像的有一些 release 超时的 release 超时的问题,因为 release 对食盐比较敏感,我们设置的超时时间当时是两百毫秒,然后就会发现嗯会偶尔的出现这种 release get 或者是其他命令他出现这种超时的问题,但是呢,整个呃机器的情况是比较良好的,再通过其他手段就是排查机器的负载,排查购物携程的延迟, 其他手段都没有办法。呃定位到问题的时候呢,我去对生产环境上面的这种嗯 release 去进行了抓包,因为我们的 呃 release 服务器呢,它是用用的那个云场上的服务器,所以我没有办法在服务端去进行刷包,所以我只是在 release 的扣端,也就是我们生产上面的机器 在这一侧在客户端去进行的抓包,然后得到抓包之后呢,最终是通过抓包文件定位到的是在整个链度当中,呃云服务的厂商那边是存在偶发的这种 丢包的情况,最终是让他们去进行了解决,然后来看一下我在这个过程当中去抓到的嗯这些包,然后再具体的去分析一下嗯产生 rst 豹纹产生的具体原因。首先来看一下第一个包, 这个包嗯可以看到是在最后这个地方是产生的一个 rsd 的豹纹,是产生了两个,它是有购端去发往 release 服务端的,那服务端的这个端口呢?是六三七九,那为什么会发这个 rsd 豹纹呢?可以看到在前面一点点, 我们的客户端是发送了这个 f i n 的豹纹,说明它关闭了连接了,因为为什么呢? 在客户端发送 f i 这个报文之前面一点,你可以看到是这是时间,是,嗯,三百多毫秒的时候, 然后在五百多毫秒的时候呢,它发送了这个 f i n f i n 的这种呃报文,说明要关闭连接,而这个时间长了,刚好就是我们设置的 release 客户端,它读取命令或者是呃解析命令,嗯,执行命令所得到结果这个两百 号码这个超时时间,那达到这个超时时间之后呢,他就发送了 fm 的豹纹,然后去关闭了这个连接。当关闭完这个连接之后啊,然后服务器在瑞丽斯服务端这边,他又发过来消息了,因为 psh 的话,这个是代表有呃业务消息产生的。 当一个连接关闭之后呢,然后对端对端又发过来连接了,所以这个时候呢,我们,呃我们的客户端呢,就直接回应了一个 rst 的这个豹纹了,这个是和上一节讲的 rst 豹纹产生的原因, 呃,这个是原因之一。然后再看一下下面一个地方,就是呃服务端呢,他又发送了一个 fm 的豹纹,然后这个时候由于我们扣端,他已经之前发送过了一个 rst 的这种豹纹,他已经完全关闭了,说不定都被内核回收掉了。所以这个时候你服务端不论发什么豹纹过来, 都不能够正常的去进行一个呃四次挥手这么一个过程了。所以客户端呢?他又回应了一个 rst 的报文, 这是我抓到的第一个文件,但你能从这个文件当中就是能得到。呃,的确是客户端发给服务器端的这个包呢,他没有成功的得到 ask 或者是服务端他 发给客户端这个包呢?他发给客户端的这个消息,他存在丢包的情况,所以导致触发了客户端的这个这个两百毫秒这个超时时间。再看一下我抓的第二个包, 第二个包的话,它会出现很多的这种 t c p, 嗯,大的 s k, 这个是称作嗯,重复确认,一般重复确认出现的一个原因呢,可以看一下我下面下面这个解卸的这个图,看一下它重复确认这种情况是为什么会产生。首先客户端他发给服端消息,然后服服端本来 应该要回应 a c k 的,但是假如这个 a c k 丢掉了,此时呢服务端呃再发送其他消息给客户端,那客户端呢?此时就会回应一个大的 a c k 了。 所以这个大部 a c k 其实不是在呃 t c p 里面去定义的,而是我们 versac 去比较智能的给我们分析出这个 a c k 呢,是属于一个 dumpling k 的这种重复 a c k, 那出现重复 s k 的情况,你可以想到了,就是我们这是一个在 co 端的抓包,那有可能就是什么中间的一个服务端过来的,把它丢掉,丢掉了。 那最后一次,嗯 w a c k 的情况呢?这个时候我们这个抓爆文件还是两百毫秒,然后看一下最后一次我们这个 w a c k 的情况,就是客户端发给服务端呢一个 w a c k, 然后服务端他继续的去呃发送这个消息给客户端,紧接着呢客户端呢还是继续的去发送这个 w s k, 说明呢中间仍然有丢掉包,还没有去触发这个重传或者是重传呢,也被丢掉了。 但是呢,这个时间经过了两百两百毫秒之后,我们的高端坐不住了,他已经触发了他的超时时间,这时候他就发发送了这个挥手信号,发送了这个挥手的豹纹 fm 豹纹了, 因为在他前面一次告诉服务端,我这里存在丢包,我发一个 whk 给你,我这里存在丢包,你赶快把那个丢的包发过来,但是服务端就是根本就没有你,导致了隔了两百毫秒哦,客户端直接就关掉了这个连接。那此时你可以看见本来的一个呃挥手过程 是一个四次挥手,但这里呢不是一个正常的四次挥手,因为这个时候服端你看他回应了一个什么 f i n a c k, 他是把 a c k 跟 f i n 的这个豹纹呢是合在一起发送的,这个是有可能是 release, 服端那边他开了一个呃 tcp 的一个延迟确认,所以达到了这个问题。这个问题呃,因为是在服务端那边,我们可以暂时不管,但是你可以看到下面一条,当 客户端呢,他收到服务端的这个正常的 fm 这种报文之后呢,他回应了一个 rsd 的报,这个是为什么呢? 这个场景呢?就和之前我们上一节所讲的那几个原因呃,有点出入了,因为这个场景是由于我们之前客户端这边他一直是存在服端发过来的包,他有一节是没有收到的,所以对于没有收到的包呢,他不论之后服务端发 发来什么消息,他都会回应一个重复的 s k, 这个这个豹纹都会回应个 t c p w s k 这个豹纹给服务断,但是呢,这个时候我们的扣断已经关闭了,已经是要准备关闭连接了, 所以正常的施舍会所他是回应一个 s k 给服端的,但是由于我如果去回应一个正常的 s k 的话,会导致服务端认为, 呃我的这个包,它会导致服端认为呢它存在丢包的情况,它会继续的去发送嗯 fm 这种豹纹或是中间的豹纹,所以客户端它干脆直接就发送了一个 rst 的豹纹, 因为它中间去存在这种丢包的情况,它没有必要再去发送这种 t c p 大本 s k 了,因为反正我都要关了,所以它干脆就发了一个 r s t 的包纹给覆断,所以这个呃也是 是一个 rst 豹纹产生的一个比较特殊的一个地方。呃,再来看一下第三个包,第三个包的情况呢,它其实也是存在一个丢包的情况,并且呢最后也是在挥手阶段由客户端去产生的这个 rst 的豹纹。 第三个包,我的在抓第三个包的时候,当时我的客户端的一个超时时间已经设置成了一个五百毫秒, 那你可以看到在嗯服务端呢发给客户端的包,这里我标记了一个 q 包,这是你是为什么呢?因为,嗯, 这里其实已经被瓦尔萨克智能的识别出来,就是这个 tcp 包呢,他之前的这些段,之前的这些真人,他没有被捕获到,那这些这这个包是浮断的包,又由于我是在客户端去进行的抓包,那就说明浮 端之前的这些包他没有被捕到,为什么没有被捕获到?因为这些包已经丢掉了,这些包没有去正确的发送到客户端这边,所以在 y 下可去看来的话,在呃这个 s q, 这个是 s e q 的那个序号,就是一个包的序号,在这个序号之前的那些包呢,他有意见是丢掉了, 接下来这个包也是服务端去发往客户端的包,他也是出现这种类似的场景。那总之通过通过这样一个呃分析呢,你能看到的就是服务端去发给客户端的包,他存在这种丢包的情况, 那最终由于这种丢包情况的产生,我的扣端他设置的得到一个 release 结果的时间是五百毫秒,那在五百毫秒以内,他没有得到一个完整的结果,最终就触发了他的超时, 你可以看到是这里是两百毫秒,到最后超时时间出发,也就是 fm 豹纹出发的时候是七百多毫秒,那总总的整个过程呢,他是经历了一个五百毫秒差不多,所以在五百五百毫秒他出发超时的时候, 他就扣端,他就发送了一个 fm 豹纹了,然后呢服务端呢,他又正常的去回应这个 fm 的豹纹,并且呢他也将自己的 fm 豹纹发给了扣端。那客户端这里和之前的原因是一样的,因为他之前存在 呃易接包,他没有去,没有收到,所以他干脆直接就发送了 ist 豹纹给服务端,然后告诉服务端直接把这个连接给杀掉。 那这个就是我在之前生产上面遇到的 rst 豹纹产生的原因。呃,其实在整个分析的过程当中呢,就是要记住在 分析抓爆文件的时候,就是要记住一点,你要呃分析这种异常包产生的原因,通过分析这些原因之后呢,你基本上就能够定位到是哪一段的问题。那最后我也是拿着这个抓爆文件的证据去找到了 云浮厂商那边去让他们去协助的解决这解决了这个问题。好,那今天的分享就到这里了。

现在呢,来给大家介绍一下这个 t c p 协议中的这个优色控制算法啊,这也是我曾经在面试这个今日头条的时候呢,一个被深入问到的啊,这样一个问题,我们知道哈,当这个发送者 啊,利用这个 tcp 协议,像这个接收者发送数据的时候呢,哎,我们如果控制的不好,或者不采用一定的这个控制算法的话,那么很容易会造成这个网络的庸涉啊,甚至这个大量的这个数据包的丢失 啊,所以呢,我们必须要设计一些可靠的啊控制算法,来保证这个网络的传输的这个流畅啊,这个平稳,所以呢,那么这个优势控制算法概 阔起来啊,有怎样一些算法呢?第一个就是慢开始算法,就在最开始建立年纪之后啊,在开始传输数据的时候,使用的就是慢开始算法 啊,慢开始算法,慢慢的啊,然后呢指数增长,然后呢慢慢的变成了什么呢?变成了这个雍色避免算法。雍色避免算法里面呢,又分两种,一种叫加法增大啊,另一种呢叫乘法减少, 然后再进行这个网络,如果这个出现了网络用色或者是大量的数据包的丢失,对吧?出现了丢包的情况的话,那么还有一个叫快重传和快恢恢复算法啊,这样就是 我们所谓的这个雍色控制算法。首先我们来看一下这个慢开始算法,慢开始算法呢,这个发送方他会维持一个叫雍色窗口的啊,这样一个变量啊,这个雍色窗口呢,我们可以把它简称,什么叫 c w n d, 全程呢,就是 conjection window, 对吧?用色窗口这个大小呢?它实际上它的它的单位呢?是一个 m s s, 也就是最大报温段长度啊,也就是幺零四六个字节,对吧?比如说这个用色窗口,如果它的值是一的话,那么就是一个 m s s 啊,就是一个最大包文短长度,那就是幺零四六,对吧?如果是二的话,那么就是两个 m s s 啊,那么这个呢?是实际上啊, 我们这个发送方啊,他必须让自己的这个发送窗口等于佣社窗口,就是要等于这个佣社窗口,同时呢,如果我们要考虑到这个接收方的这个啊数据的接收能力的话,那么我们这个发送窗口呢,还有可能要小于这个佣社窗口, 也就是说实际上我们这个最终我们能够发送去啊,发送出去这个窗口呢,实际上是这个啊,佣射窗口和接受窗口的啊,一个最小值, 对吧?这个接收窗口就是我们的接收端通过 a c k 数据包返回给我们啊,发送方的这样一个窗口嘛,对不对啊?那么我们的发送窗口必须是这个优色窗口和接收窗口的一个最小值。好,这样一来,我们假设啊,我们的发送方 和接收方建立了连接啊,要开始发送数据了,对不对?那么当开始发送数据的时候呢,这个发送方呢,首先会发送一个字节的这个试探报文 啊,慢慢来,所以呢,这叫慢开始嘛,啊?一个字节,是不是啊?这样的话,他实际上是避免一下将大量的字节怎么发送到网络,是不是啊?然后呢,造成这个网络的拥塞啊? 然后呢再来,如果我们收到这一个字节的回复,对吧?收到这一个字节的这个确认之后呢,我们再来发送两个字节的包围啊,如果这两个字节的包围我们也收到回复,我们再发送四个字节 啊,四个字节收到八个字节,这样我们就呈呈现一个什么指数级的增长,所以在慢开始阶段呢,我们发送的这个 豹纹的大小呢,他时间是按照啊指数级进行增长的,但是呢他不可能一直增长下去的,对不对?那你这个指数级的增长时间是非常快的啊,增长非常快的,所以呢他必须有一个门槛啊,有一个预值, 这个玉值呢,就是我们会提前设置一个什么呢?哎,叫慢开始门线的这样一个值啊,它的简称就是 s s thresh, 就是 slow start threads hold 啊,就是慢开始的这样一个玉值,这个玉值你比如说我们可以把它设置成二十四 啊,那就是什么?就是二十四个 m s s, 就是二十四个最大保温段长度啊,就二十四乘以幺零四六,也就一次可以发送什么呀?啊?我们的发送窗可以开开大到二十二十四个 m s s, 那在这种情况下,那么我们就可以做一个比较了哈,如果我们的用色窗口是小于我们这个慢开始门线啊,就是慢开始门这个预值的话,哎,我们就可以继续使用这个慢开始算 啊,因为你还没有达到这个最大值,是吧?没有达到这个慢开始的这个啊预值,如果我们这个右侧窗口 啊大于了这个 max 预值啊,那我们就停止使用 max 算法,改用什么呢?雍色避免算法,就是我们所谓的这个加法,是哪个乘法减法算法, 但如果我们这个用色窗口,它的大小和我们的这个啊慢开始门线如果相等的话,那么这个时候我们既可以使用慢开始刷法,也可以使用用色避免刷法,而真正的用色避免刷 方法是什么呢?大家看一下啊,我们慢开始呢就是这样一个阶段,这个阶段呈现在我们这个图中啊,我们这个呃横坐标呢,就是我们的传说轮次嘛,第一次传说,第二次传说,第三次传说,是不是?而这个重坐标呢,就是我们的用用射传开的大小,其中呢?这就是我们的这个啊慢开始的这个门线, 对吧?就是一个预制,比如说这个地方啊,处数啊是十六,而我们慢开始最开始就发送一个字节啊,然后呢两个字节,然后四个字节,然后八个字节啊,这样一直往上走啊,一直往上走,直到达到我们这个慢开始的预字,是不是啊? 好,然后呢,我们来看一下,如果啊,当我们的这个呃优色窗口大于了我们这个啊慢开始的预制, 那么我们这个时候就改用什么?就是改用这个晕色避免算法,首先使用的就是什么?就是加法增大算法, 加法增大算法,这个加法增大算法是怎么回事呢?就是每经过一个往返时间的数据包的发送啊,这个所谓的往返时间就是二七七,就是 run trip time, 这什么意思呢?就是我发一个数据包,可以接收端, 然后接收端给我一个回复啊,这样一去一回啊,这就是一个啊,往返时间啊,检查 r t t, 对吧?那这种情况下呢,我们的右侧窗口就加一啊,就把这个窗口扩大一点,对不对?哎,我们能够发生的数据就更多一点, 这雍色窗口加一,这个地方的依呢,依然是他的单位是 mss, 就是最大保温的长度,对吧?幺零四六个之间啊,这样的话,我们就可以让这个雍色窗口缓慢的增大, 按照线性的这个规律来增长,就这一段看一下,从这开始啊,比如说我们这个地方,因为你这个啊,用车窗口已经达到了,已经超过了这个 ss, 是吧?超过了这个十六,那么这个这一段呢,他就是一个线性增长啊,我们这个呃, c w n d 啊,就是右手窗口,它每次增加一个 m s s 好,然后紧接着到这个地方,如果这个地方当我们加法增大到一定的程度,对吧?因为你这个用色窗口一旦扩大,然后发生的数据可能就越多,越多的话,就可能很容易造成这个网络的用色了,是不是?那么一旦网络用色出现之后,那韩信人我们就 必须再把这个用色创口给它变小,是不是啊?来避免这个网络用色,那么这个变小是什么呢?是哎,一旦出现网络用色 啊,比如说出现丢包的时候啊,那这种情况下我们应该怎么办呢?我们就应该将慢开始的门线设为原先的一半啊,就是这个 s s fresh 的字,你看最开始的时候呢? a, 它是 大家看一下,最开始的时候,他是我们的这个啊,十六,对吧?最开始的是十六,那么设置成啊,恢复成,设为原先的一半呢,就变成八,对不对啊?就变成八, 然后呢呃,同时呢将我们这个 c w n d 呢设为一啊,设为一,那这样呢,就重新回到了我们慢开始算法阶段啊,以较低的起点,然后重新进行这个指数器增长。 你看从最开始的啊,如果在这个点上出现的这个网络用色的话,那么突然你看突然一下子就降到这个地方来, 这个地方,然后呢重新开始这个啊慢开始阶段,然后呢重新进行这个指数级增长啊,增长到一定阶段,然后从此再使用这个加法增长啊,这样这就是我们所谓的这个雍色避免算法啊, 大家看一下,所以呢其实就是三个阶段,一个是指数增长啊,所谓的慢开始阶段,一个是啊加法增大,是不是?然后呢再一个就是乘法减少, 在乘法减小阶段呢,我们会其实就是出现了网络用色,是吧?然后呢我们将这个啊发送窗口,将这个发送窗口重新给他编, 变成了什么呢?变成了这个一啊,右侧窗口变成一,而我们的这个 s s fresh 值呢?从原来的二十四,你比如说这个地方啊,原来是二十四,十四啊,变成了什么呢?现在的这个十二, 介绍一半,对不对?好,这就是我们在这个 t c p 协议中这个庸俗控制算法。当然呢如果出现了这个网络庸俗啊,出现了丢班,那这种情况下的话,我们肯定需要,因为 t c p 是一个可靠的协议,是不是?所以这种情况下,那我们就必须要重传, 重传丢掉了数据板,然后呢来快速恢复啊,整个传输过程,那么我们是怎么恢复啊?怎么判断一个数据板丢了呢?这主要是从接收方来来判断的,如果接收方啊,接收方在接收了一个数据板 班之后,发现这个序号是错的,对吧?乱了。比如说上我前一个数据班接到的这个序号是十一,现在我接触到了这个序号,突然变成了十三,那十二这个班就丢了吗?是不是因为我们知道 tcp 协议在传输过程中他有一个序号的 啊?他是个有序传输,所以如果你呃传过来数据本前一个是十一,现在变成十三,那就我们就肯定判断出这个十二这个数据本就丢掉了,是不是?所以呢,这种情况下我们就要求这个 啊,发送房要重传这个数据,那么是怎么重传的呢?我们看一下,就是说这个 快重传呢和快恢复呢,这是为了这个减少啊,因为拥测导致的数据包丢失带来重传时间啊,我们判断的时候时间就是当我们发现了一个包丢了之后呢,我们会发送三个 这一样的确认啊,连同上一个的话,丢失了。这个班啊,包含起来总是四个 a、 c, 四个相同的 a、 c、 k, 也就是说如果我们发送方在发送发送过去一个数据班之后,如果他收到了四个相同的 a、 c 数据班, 对吧?那就表示什么呢?就表示有一个数据丢失了啊,那也是说就知道这个班之后肯定出现了错误,那么我们就应该立刻重传这个数据班啊。 这呢?哎,我们这个接收方如果发现一个本丢失了,就是说如果他同时啊,那么他会连续的返回三个一样的 s k 数据本啊,然后和原来的加在一起,就是四个,是吧?这样一来的话,我们就 啊要求这个发送房,发送房呢重传这数据版啊,我们也就知道了这个班啊,发送房也就知道了这个班要重传。那么这个时候呢,发送房就会开始执行快恢复算法 啊,快恢复算法,那么这个快恢复算法他是怎么做的呢?大家看一下。例如说我们假设在啊这个加法增大阶段在这个地方 出现,我们发现收到了我们的发送方收到了三个重复的确认,那么这种情况下我们就知道,哎,要进行重传了,是不是?所以呢,我们就会执行快重传算法,快重传算法呢?就是怎么样?就是 哎重新把这个数据本发发回发过去,对不对?然后呢进行快恢复,快恢复阶段呢,他会手, 首先就会将这个慢开始门线减半,就是 s s stress, 你看原来 s s stress 现在是二十四,对吧?初始值是十六,现在是二十四,那么他会立即将这个呃慢开始的门线减成十二,减到这儿啊, 然后呢也会将这个啊右侧窗口设为慢开始门线减半后的数值啊,他原来在这个地方 啊,发送的这个窗口,是不是然后现在减半之后变到这啊?然后呢这个慢开始的,嗯,这个 这个门线,对吧?也会剪成这个呃,十二啊,然后呢我们将这个右侧窗口的纸呢,也会剪剪 简称这个新的 s s treat 的纸,哎,然后从这个地方开始又会执行这个加法增大啊,对吧?执行这个雍色避免算法中的加法增大,又是一个先行增长过程啊, 也就是说每一个来回之后把我们这个啊用色窗口他的纸进行加印啊,这样又实现一个线性的增长,对不对?这样的话用色窗口就会慢慢的再次扩大 啊,这就是我们呃在发现啊,发生这个网络用色和数据包丢失的情况下,所谓的这个快重传和快恢复啊,这个算法 真的这就是整个的 tc 皮鞋的这个用色控制算法啊,包括啊慢开始加法增大,对吧?慢开始其实就是一个指数增 啊,先发一个字节,然后两个字节,四个字节,八个字节啊,一直到达这个慢开始的门线啊,就是 ss 这写的字,是不是哎,然后呢啊超过这个门线值呢?如果我们的右手从头超过这个值的话,那么就开始执行这个加法增大, 对吧?每发一个数据包一个来回之后呢将这个用色窗口呢啊增加一个单位啊,然后如果出现了网络用色,那么就咨询这个乘法减小啊,将这个慢开式的门线减半 啊,并且呢将这个右侧传出来重新设为一啊,然后下一个再开始执行这个慢开始算法。而一旦发生这个丢包的时候呢啊,那么就会执行快充算快恢复,是不是啊?我们是在接收方啊,我们如果发现一个包丢了,我们会返回三个相同的, 那么当这个发送方收到的三个相同 ask 就知道这个本丢了啊,然后就会把这本重新发送出去啊,重传,对吧?然后呢再执行这个快恢复算法,快恢复算法呢,其实就是首先要将这个 慢开始门线减半,然后呢同时呢将这个右侧窗口的字啊设置为慢开始门线减半之后的字,然后呢再执行这个加法增长。啊, 这是一个哎,用手便便算法中的这个加法增长,是吧?高起点,然后再先行增长,哎,这就是 tcb 系列这个用手控制算法啊, 这个呢也是我们在这个求职面试的时候会经常被问到的一个问题,而且呢会问的比较细致,对吧?啊,希望大家能够引起重视。好,那么这个内容呢,我们就给大家介绍的是,如果大家喜欢我们的内容呢,欢迎大家关注点赞评论啊,谢谢大家观看,再见!

十二包工具的区别? bade 是免费开元的,但是只能在 winds 使用。 max 和 vinex 是不支持的, childs 也支持 windows 和另外个是操作系统,但是它不免费。 winx 可可以抓取所有协议的内容,非常适合协议的学习和网络问题的分析。但是呢, winx 它需要你具备一定的网络知识,所以对于初学者来说不是很友好。 fff 一下最简单 七年级,但是和其他的专业直播工具还是存在一定差距。 tcd dump 主要是用于 links 命令的抓包工具,前提是你要会操作 links 系统。


大家好,现在呢我们来给大家讲一下这个网络最大传输单元与粘包问题啊,这个问题呢,也是这个程序员啊,在面试的时候经常被问起的一个问题啊, 如果大家平时没有注意的话,那么很容易这个回答错误。首先呢我们要认识到,就是说我们啊,在这个进行网络编程的时候,我们在网络的上层啊,在应用层调用这个网络 apid 所剩的函数,对吧?你要发送一个数据 啊,我们假设这个数据大小是幺零二四 kb 啊,就是幺零二四 k 字节,那就是一兆,对吧?那么下沉他实际上是不会一下子把你这个这么一兆的数据发送出去的啊,他怎么做呢?他会把你这个一兆的数据呢, 分成多个 tcp 班来进行发送啊,他不会一次发送完,那么这个每个这个 tcp 的班的大小是多少呢?实际上呢是幺四四八字节 啊,那也就是说要把这幺零二四之间啊,要把它分成若干个幺四四八之间来进行这个数据的发送,哎,那么这幺四四八之间是怎么来的呢?对吧?哎,这就是我们要给大家讲的一个问题,我们首先要知道哈,这个乙太网啊,就是这个 sn, 他的最大的这个数据针是幺五幺八之间啊,大家看一下,就是这个图啊,这个部分就一个数据班啊,我们把一个数据发送出去之后呢,他实际上我们可以把它看到一个数据针,这个数据针呢就由 s night 头 针头、 ip 头、 tcb 头或者 udp 头以及上乘数据和对应的这个教验码组成啊,这就是一个网络数据针啊,你可以把它看成一个数据班,所以呢这个整个这个数据班啊啊,这整个组成的就是幺五幺八个字节, 其中我们再来看一下啊,另外一个就是那网络最大的传传输单元就是 mtu, 另一个概念就是 mtu 叫马克上传,什么型 udg 啊,简称 mtu, 就是网络的最大传输单元,这个网络传输最大传输单元是多少呢? 哎,他实际上呢是通过这个以太往真的啊,针头和这个真伪的胶原核啊,同样 幺五幺八字诀中扣出了这个以太往真的针头的长度和胶原盒的长度啊,就这部分 幺五幺八,扣除掉这部分的长度十四个字节,和这一部分 csc 交易呢四个字节,那么就十八个字节,是不是所以剩下一千五百个字节,哎,这就是 mtu 的长度啊,我们把它叫做啊,网络的最大传输单元叫 mtu, 另外另外一个概念就除了这个 mtu 之外,还有个叫 mss, mss 呢就是 maxsmax xs, 也就是最大豹纹段的大小, 这个大小就是一四六零啊,一四六零,这个大小是怎么来的呢?这个大小就是要在这个 mtu 的这个基础上再 扣掉一部分,再减去一部分的字段长度,这个怎么减呢?就是有一千五,减去二十之间就是 ip 头部的长度, tcp 头部的长度二十之间,所以幺五零零,减去四十个字节,那就是幺四六零啊,这幺四六零,这就是我们 ms mss 的长度。但是呢,在实际情况下啊, tcp 这个包头里面呢会带有个十二字节的时间出啊,所以呢,我们最终还要用这个幺四六零呢,减去这十二个字节,那就是幺四十八个字节。 但是想这就是我们最终把这个数据报传送出去的实际的这个,哎,报标大小那就是幺四四八之间,对吧?啊? 这个 mss, mss 呢,实际上是 tcp 数据上每次能够传出的最大量啊,这个是在建立 tcp 连接的时候啊,通过协商来确定的这个 ms s 字啊,大家说一下,这个呢,这就是我们最终一个网络数据班发送出去的这个长度,那就是幺四十八之间,哎,这是在仪态网上啊,那么如果我们用 y 下课来进行这个抓班啊,抓这个 tct 数据班的话,你就会看见 里面相关的这个数据的词,你看见没? ms s 啊,幺四六零,对不对啊?最终的传输长度愣就是幺四四八,所以呢,你应该知道这个幺四六零啊,幺四四八,一千五幺五幺八,他们之间的关系了啊,这个幺五幺 八十,电视剧这个我们这个仪态网上的这个数据针的长度整个部分,而 mtu 呢,就是由这个数据针的长度减去针头和这个胶原核啊,得到的就是一千五百个字键, 好,一千五百个字节,再减去 ip 头和 tcp 头部啊,这四十个字节,那就是幺四六零字节,对吧?幺四六零,再减去 tcp 头部中的这个时间搓 啊,还有十二字接,那就是幺四十八个字接,哎,这就是我们最终的这个传输的这个数据板长度,对吧?另外一个问题,我们再来给大家讲一下。另外一个看 是问题却不是问题的一个问题,就是 tcp 协议中的这个粘包问题啊。粘包问题是什么意思呢?你比如说我们举个例子啊,我们通过 tcp 协议发了两个数, 通过两次发生了两个数据,第一次发生了 a 数据,他长度是十八个字节啊。第二次发生了 b 数据呢?他长度是十四个字节 啊,你把这个数据发出去,出去之后肯定有一个接收端,是不是?哎,接收端呢?他就一次把这两个数据同时接收了啊,那就是三十二个自己, 这个呢就是说这个 tcp 咱们班问题哎,把两个班同时站在了一起来接收,是不是啊?按道理说我发一个十八自己的数据给你,你就先要接收十八自己的数据,是不是?然后呢再接收啊,这个剩下的十四个自己的数据,但是你一下子就把这 两个数据同时接受了,哎,这就是咱们班。那么怎么解决这个问题呢?实际上我们可以在应用城设计这个协议的时候呢,将每段的数据前面加一个 两个字节,这么大的一个长度啊,就我们除了发送这个数据的本身,我们还要把这个数据的长度和这个数据一起发送给接收方啊,这个数据的长度我们一般用两个字键来表示, 对吧?啊?两个字的表示,因为你最多你这个能发送数据,就是幺四四八嘛,两个字就够了,是不是啊?两个字的长度,然后呢再加上我们这个实际的数据十六个字节,比如说这个地方,对不对?哎?发送给发送数据之后, 那么我们接书端收到这个数据班之后呢,我们首先把前面两个字节读出来,看这个数据班有多长,对吧?然后再读出剩下的啊,这个长度啊,读出剩下的长度,对吧?然后呢这样的话我们就可以解决这个问题了, 所以呢这个问题实际上呢,他不是由这个 tcp 协议造成的啊, tcp 协议就是能够保证我们数据化按顺序到达这个啊目的地,对不对啊?不会出现这个啊相关的问题啊,就可以了。 真正的问题出现在什么地方呢?真正的问题出现在我们应用层对不对?应用层如何设计应用层的鞋的问题, 哎,我们这个地方就是通过哎两个字节,这个表示这个我们要发送数据的长度,是不是再加上实际发送的数据啊,一起发送的接收方,那么接收方就可以首先根据你 你的长度啊来决定他要接受多少数据,这样就可以避免这个粘板的问题,哎,哎,这就是我们给大家介绍的这个网络的最大传输单元和粘板相关的问题,哎,我们就给大家讲到这。

大家好,欢迎大家继续来到尼尼克斯学习之路基础篇,我是大飞, 上一期呢,我们留给大家一个问题,我们的 ip 例子配置保存了之后并不会立即生效,那么这个时候如果服务器重启了,配置还生效吗?啊,这里的答案是,其实你这个服务器上的大多数的服务都是这样的, 嗯,修改配置之后呢,保存之后不会马上生效,但是重启服务 这个过程中就会重新加载这个配置文件,所以是重启服务之后生效的。如果服务器重启了, 那么福气上的服务也会随之重启,所以已经保存的配置他就会生效。 这一期呢,我们一起来看一个非常实用的命令, let state 命令 net state, 看字面的意思就是 network state, 呃,它就是用来查看这个 主机上的网络连接状态的,我们之前接触的 ip 地址啊,陆游啊, 操作的呢是在网络层的数据,那么 nine state 它更高了一层,是用来查看这个传输层连接状态的,也就是主要用来查看主机上的 tcp 和 udp 的连接状态。 跟通俗一点说呢,我们可以通过 neceet 命令来看本机和远端主机之间通过什么协议,通过什么端口进行了通信, 然后我们来看看他的用法, let the state 不接选项直接输出的结果其实是这样的,给大家演示一下 let the state 直接说错的话会有很多,但是有些信息对我们来说是用不上的,所以一般我们都会跟一些选项在这里呢,我将最常用的选项直接做成一个套路分享给大家。首先是 next stat gun lntp, 我们在这里执行一下 这个命令呢,他用来查看主机作为服务器正在监听的 tcp 端口,你这里开的可以看 他是 internet connection only service 服务器端监听的 tcp 端口。 我们在服务器上安装好服务之后,如果要检查当前的服务是否已经正在对外提供服务,就可以用这个组合 lntp, 它实际上是四个选项的一个组合,那么这个 l 表示 listen, 正在监听,这个 n 表示 number, 哎,它也就是 number 的一个形容词。 嗯,不带 n 选项呢。 nice state 会把他能识别的协议用名称显示,我们如果需要用数字形式显示,就要加 n, 比如这里我把这个 n 去掉, 大家会看到这里有 s h h h m t p, h t t p 等一些协议,还是有一些以数字形式显示,那是 nat state, 没有识别的。 好了,我们回到 lntp 的输出,这个 t 表示只显示 tcp 的连接,但我们也可以用 u 来表示,显示 udp 端口。最后这个 p 表示 process, 就是要把网络监听的后台进程也给他显示出来。我们来看看 night state 才显示的几个列。首先是 protoco 协议, 这里可以看到是 tcp, 如果是有 u 的话,他就是有 udp, 这点六表示,我们这个主机支持 ipv 六协议站, 我们可以通过杠 t 或者杠 u 把它显示出来。第二个和第三个 receive q 和生的 q 表示接收队列和发送队列,一般为零,这里我们了解一下就好了。然后是 nocorez 本地的地址,包括端口号, 后面是 foreign address, 表示远端的地址 state 状态。大家如果熟悉网络知识就应该知道 tcp 它是有状态的,但是 udp 没有状态。 最后的 pid 和 program name 也就是我们最后说的进程,我们再来看其中的一行典型的输出, 比如这个第二行, 他是 s h 远程连接的 服务器守护进程,那么他的 pid 我们看到是一零二零,监听的是 tcp 的二十二端口开放给零点,零点零点零冒号星表示开放给所有主机连接, 那么这行就表示我们的 s, s, h, d 服务器已经准备好了,所以我现在才可以用当前这个特秒斯,它是一个 s s h 的客户端, 通过我的服务器 ip 和二十二端口来连接我们常用的第二套组合 杠 antup 杠 l 表示你省显示正在监听状态的服务,那么也可以用 a 来表示显示所有状态的, 这里有个 t, 后面我们加了一个 u, 也说了让 t 表示 tcp 连接, u 表示 udp, 那么我们这里将 tcp 和 udp 同时显示出来,那么他的输出是这样的, 那么他这里有显示的,他显示的是 internet connection, service and established, 就是服务器和已经建立的连接都显示 我们之前有一个雷神状态,那么现在我们看到有已经 连接的建立连接的叫 sw 联系状态,还可以看到一个弹幕位的状态,这个表示即将关闭的连接。 我们找到我们刚才二十二端口的已经创建的连接, 那么这个远端 foreign address 就是我的客户端, 那么这个是本地服务器开放的二十二端口,那么这项连接也就是我从远端连接到当前服务器的。 实际上我们的状态可能不止于这三种,需要进一步拖软的同学可以查一下 tcp 连接状态。 好了,以上就是 nest state 常用的一个组合和他选项的一个说明。我们当然还可以用 no state gonna help 来了解更多的选项,了解了各个选项的作用,我们也可以自己组合自己想要的选项。今天呢, let's say it! 的命令不多也不难,但是对尼克斯来说,这是一个很重要的命令。 正如我们刚开始学习网络命令的时候说的就是命令他是一部分,但是对基础网络知识的掌握也是必要的一部分。 这期视频呢,我们没有提问,不过最后还是要强调一下这个练习的重要性,我们学了理论之后呢,一定要马上用起来,在实战演习中将这个 知识转化成技能,这才算是一个高效的学习,这也是我们习得技能的一个客观规律。如果不尊重这规律,比如说我想要学的快一点,那么我就一天看十个视频,但是一个都不练习,也不回顾不复习, 表面上好像学的很快,但是这样子没有办法真正的掌握,到头来可能很容易会忘记,导致之前这个投入的学习时间也浪费了。最终应验的那句话叫做欲速则不达。 另外呢,我们练习过后是要有输出的,我们看视频、看书是一种知识的输入,相对于知识的这个输入来说,知识的输出对我们掌握也是同样重要。如果大家可能 平时输出少,那么这个会显得更重要一些。大家在学习和练习中得到的那些知识,很有必要总结一下,写成一个有质量的 笔记或者文章,我相信日积月累,最终大家能发现他们呈现出的远比想象中的价值更大。好了,今天的视频就到这里,谢谢大家观看。

网络工程师常用的五个高效工具,一、抓包工具 tpm 是一个被很多 unix 高手认为是一个专业的网络管理工具。二、网络流量监控 east up 类似于 linix 下面 top 的实时流量监控工具, 比 hrf 直观些,类似于 linx 下的 top 命令。三、控制台应用 no out 是一个控制台应用, 是一个可实时监视网络流量和贷款使用情况的工具。他还通过提供两个简单易懂的图表来对流量进行可视化。四、系统和网络监视 monotorex 是一个轻量级的免费应用程序,他设计用于去监视尽可能多的 linux unix 服务器的系统和网络资源。五、 it 监控软件 najos 是应用广泛的一种免费开元的 it 监控软件。一般来说, najos 能够监控几乎所有类型的组件。
