00:00
那咱们上午呢,讲了TCP协议它的分层结构啊,提到了它的四层结构,那从下往上数链路层。Internet。传输层啊,应用层,它和这个模型七层有大概的这种关系。那O模型的上三层应用层会画层啊,应用层表示层,会话层对应于传输TCB协议的应用层。传输层是一对应的。网络层和英太层是相对应的。数据链路层和物理层对应于。链路层。当然有些资料里面,比方说思科的资料里面,他叫访问接口层,他把这个链路层称为访问接口层。
01:04
啊,这是各个厂商有的时候他自己这么一个说法啊。在上午我们给大家讲了TCTCP的传输层的第一个协议,传输层的第一个协议,TCP协议。那TCP协议呢?它有很多可靠的特性。那我们提到了数据报文发送,它有一个确认。在发起数据通讯之前,他有三次握手的过程。三的过程。那么第一个过程它是发送了一个。标记为SNN等于一的数据报表,那我们就要请求报文。收到这个请求报文以后要回应,回应的这个数据报文,它的标记体现在两个,一个是SN是一,还有一个是A是一。
02:03
啊,最后。发送请求的人在回到收到第二个报文之后,再回应一个A是一的回应报文,应答报文。由此就实现了三次握手。那三次握手,我们可以通过比较直观的VI工具来抓包来看。当然,你也可以通过。别的工具抓包。那么咱们在那中?自身也带有一个叫TCP的工具啊,实际上它也可以抓包。那我们用re来抓一下,因为它是图形界面,看起来相对比较直观。那用这个工具来抓包。用管理员的身份打开选择网卡vm net8。
03:07
然后我现在呢,实现的是七和八之间的通讯。啊,所以我在进行通讯的时候发起请求,比方说从八到七的,那我们就可以用,比方说我们用SSH,哎去连接。实际上这样的话呢,只要你看到这个界面了,说明他已经三次握手完成了。那这个三次握手在这咱们能看到我们停止抓包。在最前面,他的三次握手就应该出现。啊,我们看在哪呢,应该是七和八之间,当然这个豹纹比较多啊,所以我们这个抓包要这么看的话是比较不方便的,所以这呢我有一个过滤。啊,你可以通过这个过滤方式来实现,这个过滤呢,是在where Sha中,它可以定义过滤规则,比方说圆是从哪到哪,圆是七和八之间的啊,所以我们可以写成这个,比方说。
04:13
八到七的或者七到八的啊,那我们只看这两者之间的通讯。那个。啊,多了个一好,那我们把这个复制一下,然后贴到这来,那上面有一个过滤过滤器。回车好,大家看,那这应该就有他的握手过程,这个握手过程看一看有没有那个三次握手啊,八到七的TCP有一个syn,然后这个怎么都是八到七的。八到七的。那这个报文有点小问题,八到七的全是八到七的,我这儿条件是不是写的有点错误啊,啊,这应该写反了,应该是八,这个是。
05:10
八到七。是吧,哎,这样就对了,哎,你看这前三个恰恰就是我们刚才提到的。你看八到七,七到八,八到七你看到没?然后第一个呢是SY,第二个你看SYA,第三个A看到了吧,这不头边都写着呢吗?当然我们具体来看,就看第一个包,第一个包呢,我们呃,直接看最下面这一层。那这上面这一层呢,我们说这是以太网真的头啊,中间这个我们还没讲,这是IP头,就是说应盖层。那我们现在在研究传输层,传输层,这个传输层按照我们之前给大家讲的,你看这是不是有原端口,还记得那个图吧,原端口目标端口啊,你看原端口是54024,目标端口是22,为什么呢?因为八到七去连接人家的SS服务嘛,所以呢,原端口是客户端信息端口,目标端口是22,这不看得很清楚。
06:09
那按照我们上午给他讲的这个,呃,TCP的报文头部,那你看这是原端口目标端口,接着就是序号了吧,序号序上号中间这不有标记位嘛,对吧?好,那现在我们来看一下它的这个。结构啊,再往下。啊,大家看去,序号序号是零,当然这个序号零我们说过并不是一个真正的零,你把它选中以后呢,你会发现在最下面,它会给你把真正的数据以16进制方式展示,大家可以看到它真正的这个值应该是000C29,看见了吗?000C29在这这这个地方,它这有显示吗?那它这自动的帮你转换成了两者通讯的相对编号,因为七和八之间它是第一次通讯,所以他这个地方是相对编号是零,实际真正的编号是000C29啊,因为这个机器已经和别人通讯过很长时间了啊,所以它的编号已经不是真正的零了,然后同样的这是不是也有。
07:19
哎,这就是他真正的号码,看到没有,底下是给你写了这这个啊,应该是这个。这个是他真的号码啊,这个这个号码啊,他这个刚才没选中,就这个应该是2765,什么743571啊,就这这个是他真正的号码,然后呢,这个是AC确认A确认的话大家想。我和对方通讯,呃,这是第一次通讯,所以还没有确认过,所以就是零行了吧,然后接着。再往下啊,我们看数据报文的头,数据报文的头偏移量是40个字节,也就是说我这个头部有40个字节,另外有20个字节是啊,加的随机就是加的那个可选项有20个字节是固定的,然后接着我们看中间有些保留的不看了啊,保留的有三个位不看了,你看接下来这是我们六个所谓的标记。
08:11
六个标记,那对应的你看这是SN是不是一啊,其他是不是都是零啊?你看我们讲的USR,呃,Urg就是那个紧急指针,什么a CK push reetnn,看到没有,那这里面只有它是以。哎,他是一,那这还有一个窗口啊,窗口大小是2920,哎,好,这是这样的一个大概的内容,那么现在你可以看一下,对照着我们刚才给他讲的这个结构,现在就应该没问题了,后面还有什么校验和呀警示针,这个就不用关心了,好,那么所以这个请求报文,它就是这样的一个结构,那么再下来看第二个报。看第二个包,那第二个包大家看你看a cck已经变成1SNN是不是也是一,哎,这不就是同时我们看它的那个呃端口号,端口号原端口变成22了,原口22是不是说明是服务器回应的包22发给你的对吧?诶你看目标端口是54024,诶然后接着呢,我们看序号,序号呢,它这显示的是零,这个零呢,当然也是个相对编号啊,然后真正的编号是2061008832,哎,然后呢,这个地方就是确认号,确认号呢,这个地方一显示一下不是真的一,这个一应该是。
09:30
对方发过来的包的加一,那么对方刚才的包刚才是相对编号零,那现在一就表示我希望下次对方发一,当然他的绝对编号应该是多少呢?刚才我们看了第一个包,你看一下那个绝对编号,绝对编号是26276574啊,我们就看最后几个3571是吧?3571啊3571,那你看这边啊,看3571。呃,看看他这个确认号3572看见了没?是不是加一能看见了吧,是不是加一加出来的啊,就是3571和3572嘛,加了个一啊,加了一就是希望你下次发3572,因为3571我收到了这个意思,哎,这就实现了第二次通讯啊,第二次通讯。
10:17
那第二次呢是ACK是1SY也是一,第三次那么看第三次的时候,你看前面的我们再看你看端口又是五四零二四二十二,然后这个序号啊,这个序号也是个相对序号,就是3572,你看这不是就3572了吗?3572,然后呢,确认,当然确认应该确认的是对方发过来的,对方发过来的刚才第二个包是多少来着,第二个包的确认号,这个序号是什么?8832是吧,8832,那你看你要确认是不是应该8833,看见没,这不写着呢吗?啊8833,然后呢,接着我们看AC是一啊AC1。这不就三次握手吗?三次握手就实现了,当然紧接着三次握手之后,后续他俩是不是就可以正常通讯了,你看后面他就S是正常通讯,正常通讯的话呢,这里面SVN就不会再一了啊,这里面他这个除了第一次请求SVN是一,其他CK是零,其他的情况下,你看后续在通讯的话,他这个AC一般都会一,你看AC一般都是一,为什么AC是一呢?因为他们有确认呀,你发过来我要确认有去有回嘛,所以再往后基本上都是A是一了啊,后面的所有包都是A是一了,看到吧,诶,这就是它的这样的一个通讯过程啊,通讯过程。
11:33
那三次握手现在大家要看的很清楚了,三次握手还涉及到状态的切换,那我们看一下这个状态切换,那这个状态切换我们看它有多种状态,那在。TCP建立连接的时候,它的状态可以看到从close,它一旦发起请求之后,他就会从close状态叫进入到一个叫set send状态叫状态。
12:02
然后这个数据包文发出去以后,对方收到了,那么回来的时候一旦回应,那么他就会进入到他状态,在没有回来之前,我发数据包,对方还没收到之前,这边就变成了散的状态。然后这边listen状态一旦收到,他就会进入到叫reserve状态状态,对方一旦回来数据报文,那么我就立即的进入到。Establish状态看到没有,所以这时候呢,我们看到这个图里面画出了几种状态呢,Close。这边的是啊close,然后看到没有总共,这是总共是多少种状态啊。左边三个,右边是也是呃四个,但是有是重复的啊啊,那五个吧,总总共加起来是不是五种状态啊啊你看CLOSE1种状态,这边也是close就不说了,Li第二种状态,三种状态,四种状态,是不是加个ESTABLISH5种状态对吧?那这五种状态呢,平常一般来讲,我们比较多的看到什么listen listen就是没有连之前是不是就listen对吧?还有建立连接之后什么,所以这两种状态比较容易观察到,因为大家想中间的这些是不是都是临时性的状态。
13:26
那中间的状态,临时性状态,你想这个网络如果速度很快的话,是不是根本就看不到啊,那所以呢,我们一般看的比较多的就是listen和,那这个呢,我们可以通过命令来观察啊,比方说现在这两个机器。好,那我们用这个命令可以来观察他们的状态,有一个A的指令,A的指令这就能看到他的状态,你看有以establish状态,Listen状态,那当然我们这还能看到一个close状态,哎,这就是他的TCP的状态,那我们想看到这种状态怎么看呢?比方说。
14:11
好,那现在我们想看到这种状态。好,我把它关了。啊,比方说我们想看到这种状态叫状态。这个send状态怎么就看到了呢?啊,实际上就是他发这个请求报文,然后这边呢,他他他怎么样,他不发这个AC了是不是啊,不发这个AC了啊,不发这个AC了,那就可以实现了啊就可以实现了,那这个就是说如果我们能够让B搜到。
15:03
同步信息以后不回应,不回应他是不是也就谈不上ACK,这时候他是不是就始终会持续的保持这种send的状态。啊,当然时间肯定不会太长。因为相当于说你老和人家同步,人家不理你,不理你的话,你也不能老同步吧,是不是过一段时间自然就。不会再连了啊,就是你打电话对方老不接老不接,那是过一会你们就别打了呗,是不是,哎就这意思,所以这个sent呢,可以做到,怎么做呢?比方说我们这个拿七和呃八只两台机器做实验,我只要在这个B的机器上,就是接收数据报表的这个机器上给他。对于你发请求我不接收你,哎就可以了,那所以我们可以构建一个这样的架构啊,怎么做呢?这样我们就是八个七这两台机器啊,八和七这两台机器,那么怎么做呢?这样呃,假设七和八之间,呃,比方说是呃,客户端是七,服务器是八啊那我们把这个图就把这个换一下。
16:06
左边是七,右边是八八,那也就是对应我们现在这个状态,这边A是七。啊,这个B对应的就是八。那现在我们想实现在七上能看到刚才那个S的状态,那很简单,我们在八上面做一个策略,就是你发过来我不理你。我不回应。假如说我把网线拔了。行不行?啊,我把网线拔了。啊,我把网线拔了啊,你看着啊。哎,现在你看我用SSH,我去连接,在连接之前,我把八的这个机器的网卡给网线给它拔了。哎,找到这个八的机器。
17:02
然后这不是有网网卡吗?右键单击是不是就断开连接,相当于拔网线。拔了它,拔了它以后我们再看这边,看看状态怎么样,能不能看到。看到了吗?是不是看到这个状态了,是不是就你发出去,对方不回应,那就send呗。啊,因为这个对方拔了网线了,你发请求是不理你嘛,那不理你,那那就等吧,等等等过一段时间自然就就就没了嘛,就不连了嘛,啊当然TCB协议还是比较怎么说呢,比较负责的,他会一直等啊,过一会就断了啊,过一会就断了,他也不能老等啊,等一段时间你会发现他刚才实际上是有一个等待的过程,它不是立即断。是不是就是TCP协议他会哎,很努力的去试是吧,一次不行,两次,两次不行,多试几次,实在不行了,那就只好放弃了啊,所以TCP协议呢,他实际上还是挺认真负责的一个协议,是不是啊,实在连不上了,那也就没招了,但是呢,他会做一些尝试啊,一次不行,两次这个地方呢,你可以抓包看啊,他这应该能够看到他们的通讯啊,你看我这再重新抓一下,你看他这能不能看到它是多次请求。
18:18
有没有多次请求?啊,因为这个网络都断了,我现在。这这个这这种方式不好看了。那我们现在把这个网网卡给他再还原,把网卡给它再还原。啊,所以我们有的时候呢,是可以看到它那个状态的啊,当然这个状态呢,是我们故意构建的啊,正常情况下呢,一般像这种状态看到的应该不是特别多啊啊。
19:02
那这就是刚才我们提到的这种状态的查看啊,状态的查看。这个。那这个receive状态呢,这个他打的是这样的一个时间差,就是你收到了,我也回应了,结果呢,这边没有收到A。那这个中间的过程,它就会注入收到一个叫receive状态啊,这个receive状态是另外一种状态,那么这个状态希望大家记住了,将来面试呢,人家有可能并不是简单问你三次握手。人家可能会出一个这样的题目,比方说我就列出close establish receive和这五种状态,这分别用abcd来表示,Abcd来表示,他这么问你。说这abcd的五种状态,哪种状态是发生在客户端?
20:03
哪种状态发生在服气端?让你让你挑,也就是这个图你是不是得画出来,你不得记住啊,你不记住你打这状态到底是在哪发生的。所以这个图呢,将来面试的之前啊,葵花宝典准备好把它背熟了是吧,背熟了这样的话,人家问你这个是不是很容易,那你如果你脑子里有这个图的话,服务器端,服务器端不就是那个啊close listen啊receive还有什么这种状态嘛,对吧?客户端呢,它有一个叫send状态,客户端是在send状态发生是不是啊send send是客户端上发生。对吧,哎,所以这里边有一个两个啊,服务器端有一个receive,然后客户端有一个其他的大家都是有的啊,当然务器端还有一个叫listen的,是服务器端个listen。好,这就是三次握手,那么三次握手呢,我们这边还有一个抓包命令也可以来看啊,就是有一个叫TCP档的命令,这个TP Du命令呢,嗯,在这。
21:10
T PC dump这个命令也是一个抓包工具,这个抓包工具呢,它可以显示你网络中的,呃,这个以字符界面的方式来显示,这个命令的用法,我在这不会专门给他讲啊,不过呢,嗯,这个命令的用法下来大家可以下来自己去尝试去试啊去试,那我这呢,可以来给大家来用一个这样的命令来试一试,不过这个命令需要注意就是呃,你这个命令呢,需要去安装啊tcb dump这个需要安装,它有个工具叫TCP dump,那这个TCP dump呢?呃,当然我在这已经提前装好了,所以我就不用装了TCP。它是个命令行的,然后这个TCP dump呢,执行的时候,哎,它可以进行抓包啊,进行抓包,那抓的时候大家看他抓的是ET0这个网卡,诶你看这时候他抓下来的结果就是只要经过网卡的数据报纹全给你显示出来了,不过显示的时候,它这显示的信息啊,不是很方便的查看啊,比方说你看他这个把地址给你翻译成名称了,然后端口号呢,也用的是呃这个名称来显示,所以这样的话不是特别好啊,所以我们可以加一个N,加个N呢,就是我以数字方式显示,你看这回是不是就不会再显示那些名称了啊,这是这是啥意思,这是这啊,这好像是搞传销似的感觉。
22:51
啊,那你看这个就可以从谁到谁啊,从谁到谁,这可以比方说七和八之间啊,这个之间都可以啊,比方说我们就是抓圆和圆地址啊。
23:12
那这个协议我先不管它,先这么抓,那这个就是八到七之间的通讯,八到之间的通讯来进行抓包,那抓包的话呢,我们现在去开一个新的终端,从八去连一下七,诶这里这时候这应该就有了,你看就有了,你看这个是全是八到七的啊八到七的。啊,当然那在这呢,我们可以看到这儿就有请求报文啊,它的数据报文的这个确序号和确认号,这就有啊,当然他这个地方也能够看到,他这个用用一些这个比方说用数据链路层,那你要想查看数据链路层的信息,可以加个E。
24:01
E的话呢,能看到数据链路层的信息啊,比方说啊,看看有没有数据链路层信息,你看这时候我们看一下这个数据链路层信息能不能观察到,你看这是不是有一个s flag。Flag呢,这里面这些信息实际上就是呃,这个所谓的请求信息,那这个请求信息你看这个是麦C地址,像麦克地址从几到从几到几的麦克地址,是八到七的麦克地址,S就是同步消息,就是那个请求报文啊,这个请求报文这也能看啊,不过呢,还是S看起来更加方便啊,这个命令呢,将来我们进行排错的时候,还是非常好的工具,这里面。大家用的时候要注意啊,我现在呃,再把这个六的机器打开,六的机器打开。六的机器打开,我问大家一个问题啊,我在八的机器上能不能抓到七和六之间的同学啊,我这儿。
25:07
我写一个哦,啊,那就是。这个七和六之间的同学能不能抓到。那我们来试试。我坐在七上去连六啊,这不就连上了吗?哎,你看抓到了吗?看见没,是不是抓到了,抓到了,抓到了可以抓,为什么能抓到?我在八字机上怎么能抓到六和七之间的通讯呢?这个实际上咱们之前给大家讲过啊,我们目前当前的网卡是工作在net这个。Nat这个网络中,那么nat网络啊,实际上它是。
26:00
中间实际上是个HUB,听到吧,中间实际上是个HUB啊,我看我这个图有没有。把这个看我是不是画过这个图啊,看这个HUB,这个八是个HUBHUB什么意思,哎,HUB就是那就意味着我这再来一个机器。这是个六。啊。七然后这个是六。啊,他们都是at小网络,哎,他们都接到这个HUB上。那我现在在。这个机上,我就是在这个机器上,在我的Windows上抓包,抓的时候我是不是选择的这个vm net8这个网卡是吧?那我在这个机器上抓的时候,我就在这抓的,就相当于我是在这个地方来抓包,那我在这抓包为什么能啊?或者我在八的上面去抓,为什么能抓到七和之间,六和七之间的通讯呢?我在这抓为什么能抓到呢?因为这是harb呀,Harb还记得吗?Harb通讯啥意思?那么他是到处泛红的呀,哎,你只要给他发到了harb上,是不是他都会给你转?
27:31
全都给你转。明白了吗?哎,HUB它不像交换机嘛,交换机它能隔离冲突域啊,HUB它不隔离冲突域,不隔离冲突域,所以呢,你只要到达哈B,他全给你转一遍,只要连到同一个哈B上的所有主题都能收到,所以这就是我为什么坐在八的机上能抓到六和七之间的通讯。明白了吧,哎,注意我们现在vm net这个八实际上并不是个交换机啊,它是个HUB,它是个B。
28:03
好,这是背后咱们给大家讲的这些概念,那三次握手这个问题相信大家应该理解了,那么三次握手之后还有四次挥手啊,四次挥手。不过呢,三次握手,这里面还有一个概念需要大家。要消化一下。二。这个。在三次握手的时候,数据状态的更新实际上是这样的一个情况。刚才我们三次握手是这样,第一次握手回应,然后再回来,是不是三次握手啊,哎。断了是吧。好,那现在。三次握手,这是第一次握手,第二次,第三次,那么其中咱们服务器端它会有一个有一个队列。
29:06
这个队列还有一个队列,这是两个队列,其中第一个队列在什么位置呢?在这个叫receive这个队列。那我们都知道,当客户端发请求过来的时候,一旦收到,我就会立即回到一个回应一个啊这个回应,回应以后,对方回来这个数据包之前,我们是不是就处于这个状态,对吧?这个receive状态,这个时间很短,那么这个时间段内我们有一个所谓的队列列表,这个队列列表就是说在短短的receive这个时间段内。我最多能存放多少个链接?这叫连接队列,这个连接队列因为它是对方发请求过来,我回应,所以这个叫请求队列,看到没有叫请求队列。
30:01
那么请求队列进入到最后建立连接之后,这是另外的了,那我的状态从receive进入到establish这个之间的这个状态就是我持续这个状态,它中间能接收多少个队列,多少个连接,这个队列是有长度的。默认1024。那么就意味着如果在短期之内,比方说大量的用户都连过来,比方说我这有个机器连,你也一个器连,大家都在短期瞬天之内连过来,那这个队列是不是有可能会满啊,因为我们这个队列最多是1024,所以如果超过1024,那就会发生拒绝的现象出现,就连不上来了啊,相当于就是你这个商店开门了,结果瞬间门口一下来了,呃,一一千个人啊,把你的大门堵住了,你要是一个一个来,咱们能消化,那问题太多了,同时一下来了这么多人,是不是门口就那么小,是不是就一下子把门给堵住了,甚至给你发生了事故,踩踏事故了啊,所以这个时候就出问题,出问题了,这个队列还有一个队列是当我们用户发请求,我回应,然后哎,我对方也回来了,这时候我进入到连接状态了,就建立连接状态。
31:18
那么建立连接状态之后,那么这个建立连接之后,我们应该通常会开一个新的。队列,这个队列叫accept队列,Accept的队列干嘛呢?就是用户服务器会开启一个新的进程,这个或者说那么这会运行一个程序叫accept,这个accept了来接收用户和我之间的互相通讯,那也就意味着那么我们一旦建立except之后,那么这个队列也是有要求的,这个队列就是从establish进入except之间,这个呢也有一个队列,这个队列呢叫全连接队列,叫全位列啊,那这个队列也有长度,那么能接收多少个连接,能接收多个连接,这个也是有一个队列的,这个队列呢,嗯,也是默认1024,这两个队列都有限制,也就是说如果你的用户太多,超过这两个值都会导致用户连接。
32:21
出故障,那么这两个队列的值,我们在Linux中有两个文件是可以观察到的,这个就是那个。半连接队列,我们就要同请求队列,就这个,然后下面这个呢,是完成队列,就是我们建立连接了,然后用except来接收处理它了,那这时候呢,中间也有一个队列,这个建立连接之后,我要交给一个step这样的一个程序来处理它,比方说我们要处理它,接收它,然后让他来进行数据的交换,那这时候呢,中间也有一个短暂的队列。那这个establish也是交给处理except之前,中间这个队列叫全链接队列,哎,全链接队列和半连接队列,那么它们的值默认值都是1024,那我们可以看一下。
33:08
啊,这是半连接队列128是吧?啊这个这个。建议调成128啊,建议调成10024。好看一看这个是多少。啊,这也是128,那就是把它改成建立1024以上啊,建立1024以上啊,这写着默认值一百二八,默认值128,把它改成1024以上,一百一二八有点太少了啊,一百幺八你想100多个人同时连过来是不是就堵了,所以这样的话呢,这个值偏少,在生产中建议把这两个值改大,当然改的话怎么改呢?那实际上很简单,那我们艾一下就可以改了,比方说1024。哎,把这个一根你看改了。注意这个它是一个内存中的文件,内存中的文件我们能不能用VI直接把它打开改呢?哎,你看你这我们比方说改一下这个,这个改成2048。
34:08
啊,然后呢,存盘退出你看见没报错,因为它根本不是文件,你不是一个磁盘文件,你用VVM只能改磁盘文件,它是内存对不对,所以呢,我们不能用VI来改,只能用A口这么临时来改,明白吗?哎,临时来改。啊,这就是两个队列啊,两个队列生产中把这两个队列要调大,调成合适的一个值,当然这个值也不能说想调到多大就调多大啊,比方说我改成个一一万,那事实上你改的太大的话,也有容易出问题啊,出什么事啊,你改的太大,万一真的来了这么多,你是不拒绝了,但是呢,你的处理能力跟不上。你处理能力跟不上啊,你结果允许了大量的用户来,这时候就会造成系统怎么样,你的服务器可能就崩溃了啊,就就就就相当于这个你商店你不限流不限流呢,一下来了好多人,那结果你根本就没有那么大的处理能力,结果到最后谁都买不了东西了,因为都堵门口了,谁也进不来,就崩溃了,相当于啊,所以你还不如限限流呢,那就是你可以选择限流,这次只收咱们比方说只收1000个人,再多了,我能力有限,我处理不了,那就别来了,我就拒绝你只能是吧,那那这个就叫降级,这叫降级,那降级也总比崩溃的强嘛。
35:37
对吧,降低就是我们只能给一部分用户提供服务,但是总体大家谁都别玩的巧,对吧?哎,因为你崩溃了,不是一个人不能访问,是都不能访问了啊。好,这是三次握手,那么另外呢,还有四次挥手,那么四次挥手呢,就是断开连接的时候,那么通讯双方最终肯定有分手的时候,是吧?那么将来我们不想进行通讯了,我要断开连接,断开连接一般它的断开连接通常四个步骤。
36:12
我们说一般那有的时候可能是没有这个四次握手啊,四次挥手啊,没有这四次挥手,有可能比方说两个主机通讯的时候,正开心的聊天呢,突然有一端断电了,你说他来得及挥手是吧,就没机会挥手啊,手还没伸出来呢,没电了,没电了啊,所以挥手的这个是有条件性的啊,条件性的通常正常是四次挥手啊。当然,那为什么是四次挥手,那这个时候我们就想了,那人家握手三次,怎么挥手还四次啊?啊,挥手之所以四次,也是有理由的,那我们来看看这四次挥手怎么实现的。
37:02
四次挥手是这样的,当然挥手,我们这个图里面A和BA是客户端,B是服务器,那么这个挥手也就是要提出分手,那提出分手的人到底是客户端还是客户是服气端呢?谁主动提分手啊?那我这个图里面画的是客户端主动提出分手,那实际工作中服务器可不可以主动提分手啊,哎,事实上双方都可以提分手是吧?那男生女生那谁都可以提嘛,当然一般机会要留给女生的是吧?好,那这个提分手双方都可以啊,那假设A提出分手了,提出分手怎么提呢?那就是FNFNFN就是finish的意思就是结束了,我要和你分手,就这意思啊,那么他提出分手之后,他已经没什么留恋的了,我也没什么东西要给你了啊,我也不欠你的了,我要和你分手,就发出来这样的一个分手请求,那么发出分手请求以后,服务器收到以后立即回应。
38:16
立即回应,立即回应啥,就是我收到了你这个分手信息,我已经收到了,收到了收到了,收到并不代表同意,对不对啊,你要和我分手说行一句话。那问题是你还欠我钱呢啊,以前我给了你那么多礼物呢,对不对啊,买了那么多包啊什么的是吧?啊那你你欠我的还没还呢,或者说我欠你的我还没还呢是吧?我还想给你点东西啊,留个念什么的,所以呢,他发了这个A以后,他没有立即分手,他这还要把自己的东西给他发过去啊,因为你决定不跟我交流了,我这还有一些东西要给你传啊,啊我这发数据中间就是发数据了啊,中间发数据了,那这种情况下大家发现没有,A已经决定不给B发东西了,B是不是还在单向的往这传,所以这种现象叫半关闭。
39:15
叫半关闭,然后我们通讯双方应该是你来我往,现在是单向了,只有B给A发,A已经没得给发了,看了吗?这叫半关闭,这叫半关闭,那中间呢,A已经不给B发任何信息了,B呢,不断的有可能还会把一些多余的数据给他发给A。当然发完了以后,最终请求了多次,说别分手,别分手,别分手是吧,结果对方去意已决,那算了,那也没办法了,那行了,我也和你分手吧啊,最后就发了一个SY分手请求。当然这边等不及了是吧,早就等你这招了啊,赶紧确认确认,一旦确认,哎,双方就真的分手了。
40:02
看到没有,这就是四次分手,能看出来吧,四次分手啊,当然四次分手这个其中第一个和第四个都是左边这个机器向右边发的,中间两个都是服气,就是右边的机器给左边机器发的那方向性,注意可不是一去一回啊,它是中间混杂的这样的啊,那另外呢,它这个地方还有个状态切换,这个状态切换又多了一些新的状态,除了我们之前的AR。啊,包括close,这都是我们之前见过的状态,那么现在又多出来一些别的状态,比方说当我们发出分手请求以后,他就会立即进入到位一状态。WE1V1状态,等待着对方的AC,确认对方一旦回来AC,那么我就从WE1立即进入到WE2,就第二阶段了啊,第二阶段了。
41:05
那么对方一旦把sin发过来以后,我就进入到摊位的状态。过一段时间以后,我们进入到close状态,过了多长时间呢?大家看这有一个叫msl的。那这个msl叫最大。生存期啊,最大的数据段生存期,这个最大的数据段生存期是什么意思呢?实际上说的就是当对方发了一个数据包围以后,我要等待一个我把数据包发到对方中间花的时间的两倍时间啊,比方说两者之间通讯,这两者之间通讯要花一秒,那我就两倍两倍的时间,那这个等待两倍时间之后,我们从摊位就进入到close状态了。它是这样的一个意思啊,那这个两倍的SML,最大的数据段生存期等待的这个时间两倍,那这个两倍的时间为什么要等这么长时间,而不像这边大家看在右侧,我们发现它的状态切换很快啊,从一他倍是对方一旦发了一个FN,我回来以后呢,进入到close weight,然后中间把数据发完以后,我给对方发了一个FN以后,进入到last a c,进入last c以后,对方一旦回来AC,我就立即close了,你发现从last a c进入到close,他中间是没有不需要再等那么长时间的,那中间怎么等了这么久啊,那这个等待这个时间是啥意思,为什么要等这么久,不从维特尔立即进入到close该多痛快呀啊,对方都已经和我分手了,我也同意了,是不是就进入到close状态不就完了吗?
42:53
那这个理由是什么呢?为什么要等一段时间呢?哎,我们说过网络的环境是比较复杂的,先发的数据包不一定先到,有可能后到,比方说我们这有一个包,这是A这个包,A这个包是先发的,比方说我们最后有一些数据从啊这个B发过来了,发了一个小A包过来了,发了个A包以后呢,这包发完了以后,是不是要分手了,他也发了一个分手包,分手包假如说这个小B包发过来了,发过来以后,那理论上A先发,A应该先到,结果因为网络原因,B先到了,B如果先到了这边立即进入到close,大家想会出现什么问题,是不是A即使先后到了,他是为这边关了,是不是也收不到了,门关了,你发过来我也不理你了,就不要了,所以这样的话就会导致A包丢失。
43:51
所以怎么办呢?哎,我等一段时间,我等一段时间,你虽然和我分手了,但是我还给你亏空啊,预留一段时间等着你,万一你这个欠我的钱,你还可能还得晚到呢,是不是还得邮过来,我也不能马上搬家,我得先等一等,万一你还有什么东西给我送过来,送过来我再走,等你等了一段时间发现,哎,确定该发的收到了,该要的有了,好了,那我就可以分,可以断开了,看到吧,这就是close啊,Time wait time weight。
44:22
啊,这里面我们发现又多出来几种状态啊,刚才我们提到了前面的五种状态,这里面数数几种状态,他是一种状态,Wait 1wait2time wait。Close,这就是五种了,然后这还有什么close和last a c,是不是又是七种状态,七种状态啊?七种状态。是七种吧,啊七种状态,那前面我们建立连接是五种,这是不是七种,七种加起来都是12种了吧,12种,那12种是不是,当然我们有些是重复的啊,你看像establish本身前面就有,然后close前面也有,是不是像这些种是不是就是我们在分手的时候才看到的。
45:13
这五种,这五种是不是分手才看到的啊,所以实际上呢,这五种在前面加前面的五种,总共就是十种啊十种。那么这些状态我们在执行SS命令的时候,有的时候是可以看到的,我们刚才实际上已经看到一些状态了,那现在你可以在这个地方看啊,你看这边有close状态吗?对吧,啊,所以有的状态呢,它是可以观察到的,Close with close就这个close with就这个状态,Close with这个状态。那么四次挥手,那我们也可以来抓包来看一看,比方说。
46:00
把这个通讯过程来抓包看一看。刚才那个抓包那个消息。没了。啊,那我就直接就全抓得了。然后我现在在。六和七之间来进行通讯。啊,这就建立连接了,建立连接之后呢,它两者之间有一个断开连接的过程,那我们来看看分手包。好,分手包,分手包呢,我们在这儿给它断开。现在七和八建立连接了,我断了,那这就分手了,分手之后,那我们来看看这边有没有分手,豹纹好,咱们只要看最后就行了。大家看最后这几个,你看A。
47:01
啊,你看这有一个FA。A。还有Fi a。哎,大家看刚才是七和八之间,七和八之间,然后这个是这个不是,这个是一和七之间的通讯,我们现在是七和八之间的通讯,七和八之间通讯,你看这个包,这个包,这个包这个包这连着四个包,四个包中间夹杂了一些别的包啊,这个就不管它了。那在这呢,我们可以过滤一下啊,比方说我们把这个七和八之间的信息给它过滤一下。选中。元。的地址吧。啊。或者吧。或者。是。
48:01
倒。啊,还有就是目标。目标那加一个and符号啊,这个就直接把这个复制过来吧,把这个改一改。哎。好,就这个这个指令,我把这个改一下就行了。好,那看这里面通讯的过程啊,刚才这有点小问题,把它改了就是。路标。又改成七。就看最后一个包就好了,那最后这个包就是分手包,大家看最后这个包,七到八的,八到七的,八到七的,七到八的。
49:00
你看这个七到八的这个,这个是分手包,你看FN是不是一啊,当然我们发现只有第一个包,就是第一个三次握手的,第一次握手f Fi是一,AC是零,除此之外其他的a cck都是一,那么a cck都是都是一的,所以这个不用管它,就f Fi这个地方是一,然后接着对方八收到以后,回了一个确认,就是AC是一。啊,其他都是零,然后呢,接着第三个包,那就是八又给七说我也跟你分手了,FN是一啊,然后最后一个就是确认ACK,看这不就是四个豹纹吗?四个报文就是分手请求,那这样的话呢,我们就实现了四次挥手啊,四次挥手,四次挥手。这个面试的时候尤其有可能会问,尤其这个地方,这会问为什么会有一个摊位。这个你希望你能够把这个问题说清楚啊,另外分手请求分手里面又增加了一些新的状态啊,比方说他也可能会问说分手的时候,咱们请求分提出分手的这一段出现的状态包括几种?
50:11
被分手的这一段可能会包括几种状态啊,所以这个图你希望还能画出来,把它记住了啊,所以这两个图你都要记住记住啊,所以这个分手啊,有些小公司可能问分手问的少,主要问问握手啊,但是。越是大公司,他越问你那个。别人问的少的啊,比方说问分手啊,问这个细节。啊,上次咱们这个同学面试,就发现这个大厂就爱这个大厂,问的都是如问这个细节,问分手请求这个摊位的怎么回事,为什么有他,他有什么用,就这个问这个,嗯。把这个面试三次握手挥挥手,大家都要把它。
51:01
理解了,并且呢,希望你们把这个图给它记下来啊。当然这个分手啊,不一定是四次。挥手,他也可能会出现三次的情况,也可能会出现三次的情况啊,也可能会出现三次啊,比方说呃这样。好,我这再换一个地址啊,换一个地址。啊,这个是七和八之间。我现在是换成六和七之间。六个枝节七肢节。那我把六和七之间的通讯来进行。大爆。啊。那么六呢,我在这边起一个伏。
52:03
啊,起来了,起来以后在这边我们去用这个命令来访问一下。好,访问什么呢?访问这个七,访问这个六,访问这个六,哎,行了,这样就可以了,来看它这个分手是不是。有几次分手?啊,这个是六到七。然后是。呃,目标这是不是又少写了一个?这元是那写写写错了,这应该是六,这个是七吧。这是目标七。
53:02
到六啊,应该是这个啊,我们再过滤一下。好,大家看它就是三次,看到这三次了吗?你看六到7FI,七到6FI,最后ACK是不是就三次,它就三次三次。那这个三次有的时候也会出现啊,而且呢,会多一个状态,这个状态叫什么状态,不过这个状态一般看不到,会多一种状态,这种状态叫clothing状态。Close状态什么时候呢?就是双方同时。关闭连接就是正常的,应该是一方发起请求,我要和你分手,另一方被动的接受那但是也有的时候咱们同时双方分手,我要和你分手。哎,正好我也有这个意思,一块分,他同时向对方发起分手请求,这时候他就会进入到clothing状态,明白了吧?啊,这就是clothing,那cing呢,这个图里面在这看这。
54:07
这个地方有一个cloud,这个图里面呢,灰色的就是这个虚线是服器端发的豹纹,然后实线是客户端发的报文啊,就这个。你看它这个地方是从WITH1 with1是什么意思?WITH1是这个就是我发一个分手,然后正常情况下对方应该发一个AC过来才对,对吧,我发一个分手请求,你是不是应该给我一个AC,结果呢,对方没有给CK,而非发了一个什么,发了个FN过来。你像我们刚才说的,三次握手不就你看433次分手不就这样吗?我发了个FN,对方是不是应该给我一个AC才对,结果对方的我给我个fin是不是也是分手啊?那么如果大家都提出分手,这时候他就进入了这个状态,叫所谓的closing状态。
55:03
啊,这个状态你看收到一个FN。哎哎,我在wait v1这个状态收到了一个FN,那就C的状态,就是双方同时提出分手啊,这就是F,它会进入到closeing的状态,那由此我们现在综合一下前面给大家讲的。状态,现在就多了一种状态了,总共11种状态,咱们叫11种有线状态机啊,专方的关键称呼叫有线状态机。叫11种有限状态机,那这个图呢,就把11种状态的互相切换描述了啊,怎么切换的,中间从哪个状态切换到那个状态,那大家下来有时间可以看一下这个图。但是这个图你了解一下就行,也不用记,那么大家要求记住这两个图就行了,这个图和这个四次挥手的图。
56:03
把这两个图背下来。面试的时候有可能会见到啊,你看我这个已经把三次挥手的这个过程已经截图截下来了。好了,这是刚才给大家讲的握手啊,另外呢,半连接队列,全连接队列,这两个队列这个值呢,生产中要把它适当的做调整,所以生产中一个服务器上线呀,我们需要做一些优化,比方说这些都属于优化的地方,优化的地方。刚才我们好像还讲过一个优化的地方,上午的时候讲过什么地方。就那个端口范围,那个端口范围,尤其做反应代理,反应代理他的端口范围默认不到3万,他这个值有点偏小,所以我们也要把它优化一下,所以一个服务器上线呢,并不是说把系统装完了就直接可以上线了,好多Linux里的设置默认值是偏保守的,所以我们需要修改它来应对生产的这样的一个。
57:15
特定环境来做一些优化的。啊,另外呢,TCP它这它还有一个所谓的最大重试和最少重试,这什么意思呢?就是当我们网络出现故障的时候,TCP协议它会尽其所能,尽可能把数据报文发过去,那么发的时候他就可能会出现不断的重发的情况,比方说我现在。这,呃,这是抓六和七之间的通讯。好了,我现在开始抓,那么抓的时候呢,是这样的,我六和七之间的通讯的时候,比方说。
58:02
六和七之间,他们在通过连接。我去连,连上去以后,它俩之间建立连接了,建立连接之后,结果可能后期因为网络原因啊,会丢失信息,比方说七的网络断了,七的网络断了。那我把七的这个网卡给他掐了。七的网络一断,这时候六呢,它就会导致无法连接,那无法连接它并不会说连不上,那我就放弃了,它有的时候会不断的去尝试,它一次一次的去尝试连,大家看你看见了吗?这黑色的这个能看见了吗?这是不是就是remission是吧?Remision是不是就是从事啊,啊就是一次不行,那断了断了我不能放弃呀,对吧?呃,不能放弃这个,所以我们还要不断的去重试,不断的重试,什么时候发现实在不行了,它才会断啊,所以它有个尝试的过程,那所以这时候呢,我们现在如果把网络给它连通啊,它又给你连上了。
59:17
所以换句话说,你不是说你网网络网线一断,他立即给你断,他还是很认真很负责的在给你尝试连接的。现在我把这个网线连上,你看现在是不是又连上了,你看你看它又连上了,那不是说你断了网线,你拔了网线那边立即断啊,它还会给你尝试,试啊试啊试,诶终于等到联通的时候,当然也可能会等不到,也等不到了,那实在不行了,就只能达到一定的尝试次数之后,实在没招了,是不是就只能断了啊。当然他这个尝试次数是有限制的,最多多少次,最少咱们也得吃十几次,这有两个值,一个值是最少重传次数。啊,第二最大,从试次数这个值我们可以看啊,这个值是最小是三,最多15次,就是我最少也得试三次,最多我们试15次,15次不行了,那我就只能放弃了,这个意思,所以大家发现没有真正的网络通讯,TCP协议确实还是挺靠谱的。
60:23
你只要交给TCP协议,他就基本上能保证你的网络还是挺可靠的,所以我们做软件开发。啊,比方说你做将来做一个软件用TCP协议还是比较好的啊,他比较稳定可靠,中间出了一些网络故障,他都给你解决了,你就不用管了,你写软件你不用操心,TCP协议它底层就给你做了啊,你只关心你的业务代码就行了啊这就是咱们刚才看到的概念啊,看到的概念。当然这个次数,呃,是不是能达到这么多次真的就断了呢?
61:01
那我这儿比方说故意的。掐了它掐了以后,你看看他这边是不是过一会儿就开始有重试的现象。嗯。你看。过一会儿一试,过一会儿一试,而且他一般来讲呢,前面的尝试次数的时间和后面尝试的次数时间是不一样的,其他是刚开始,比方说短期之内先试一试,如果失败了,那我过一个相对长一点的时间再试。如果还失败了,如果再等一个更长一点的时间,他不是等相等的时间段,他会等的时间越来越长,当然实在等不及了,那就最后断了啊。好,这是刚才看到的这样的一个连接情况啊,你看它等了五次之多了。
62:02
还是连不上。好,那这就是我们刚才给大家说的这个。挥手,包括TCP的,另外呢,TCP协议还有拥塞控制功能,拥塞控制呢,就是他一旦发现网络中网络非常拥堵啊,就是塞车了,网络中流量太大了,造成网络设备啊非常繁忙,那么现在你和远程主机之间的通讯。网速被别的应用占满了,你们两者之间没有办法达到特特别高的速度,那么这时候呢,网络发生拥堵之后,TCP协议也会自动的降低。传输速度,它不会说不管不顾网络速度,哎,就闷头自己使劲往外传啊,那它会自动的调整网速,把网络速度降低,所以大家应该知道,我们每天上课把这个视频放上去以后,大家都下载,下载的时候你刚开始发现速度特别快,结果大家都去下的时候就慢了啊,为什么呢?因为他发现有网络堵了,网络堵了它自动给你调慢速度。
63:13
你想你想不调慢速度就带来什么问题,大家都按这个速度,你说这个网络带宽终究有限嘛,你都按这个速度,最后不就网络瘫了吗?对不对,瘫痪了啊,所以TCP协议还是挺聪明啊,他能自动的降低网速,自动的两个人,咱俩发现网络速度太拥堵了,咱要降低一下,慢点,咱慢点传,慢点传,避免网络拥塞,另外这边还有个慢启动。慢启动,相信大家应该知道,刚开始我们在把网络中的资源进行数据传输之前,数据传输的时候,你会发现它速度不是说上来啪就那么高,他说诶,稍微有一个慢慢启动的过程,就是慢启动,但是过一会儿你会发现速度就起来了啊,他就开始稳定下来了。
64:02
啊,这个就是慢启动,这个慢启动实际上好理解,就跟汽车发动似的,那汽车发动他不是说一个打火嘛,因为从零零起步,是不是得到100公里慢慢上,你不能上来就100公里,对吧?啊,所以它有一个慢速的启动过程啊,慢启动过程。这是不是?还没断呢,还没断呢,这应该有一个超时时间啊。时间太长它就断开了,那这边呢,它有一个拥塞控制算法,这个就不用看了啊,这个U塞算法涉及到数学啊,发现U塞了,我怎么控制它,还有快速重传呀等等,这些都是TCP协议的特点,那这边呢,有一个TCP协议的参数优化,你也可以通过慢TCP来看它的各种参数,这慢TCP这里面就有TCP的各种的设置啊,这里面就有各种设置,你看刚才我们说的那个等待队列,那个就应该有,你看这不是踹一踹二,这应该都有,你看踹一踹二,这不刚才我们看的吗?
65:05
对吧,诶圈一圈,包括那个呃,半同步队列,还有什么全。全连接队列,哎,半同步队列,请求队列那个那这里面都有啊,这里面都有,这里面都说了,各个参数是什么意思,都有啊都有。啊,当然这个手册呢是呃,慢期,慢期的话属于程序员的开发手册。开发手册,不过呢,虽然我们不是开发,但是你要了解底层内核这些设置,你要看他的帮助啊,这里面说的很详细啊。好,下面这些二,这是系统调用,这个系统调用,比方说我们刚才说到的accept,就是对方和我建立连接之后,要建立一个accept这样的一个函数,这个函数呢,要处理对方发回请求,要进行处理,哎。
66:02
Accept,那这些呢,都是我们和TCB相关的各种参数,这个参数呢,我在这儿就不解释了,大家有时间可以来查一查官方文档到底哪一项什么意思,将来你们生产中上线之前可能对网络这块要做优化,你可以参考这个文档,参考这个文档具体看哪一项什么意思,你可以进去查看一看啊。那这里面我就有详细介绍,每一项是是什么意思,因为时间原因,在这我就不展开说了,大家自己下来看啊。好,这就是给大家讲的TCB协议的报文,那TCP协议讲完以后,现在翻过头来再来看,相信大家特性是不是就一目了然了?看工作在传输层不用说了,面向连接吧,三次握手吗?对不对?全双工是不是全双工啊,双向通讯啊啊半关闭刚才讲过半关闭了对不对?诶错误检查有没有错误检查的功能啊,有啊呃,有啊啊如果发现错误,比方说对方收不到这个,没有确认,那就重传呗,是不是他有排,把这个数据包切割成一段一段的排序,排序有编号吗?有确认机制,恢复重传,滑动窗口慢启动等等等,这不都讲了吗?啊所以这些都是TCB的特性。
67:17
那说完TCP特性,咱们再来看udp,那你就轻松愉快了,那udp叫用户数据报协议,用户数据报协议我们先不看它的特性,直接看它的报文头部,发现是不是好简单啊,它如此之简单,只包括端口。原端口目标端口长度校验和完了没了。那前面我们讲的TCP的一系列的什么序列号,确认号,状态那个标签,那就是那个六个标记位,他们通通都没有,那通通都没有,那自然就没那些功能呗,比方说没有数据的编号,没有确认号,没有编号,那是不是就数据包发出去,谁是第一个,谁是第二个,那就不知道了,那就是对于我们的计算机来讲,我就认为收谁是我第一个收到的包,我就认识第一个,第二个发过来的,我就认为第二个,那乱了乱了那我那我就乱了收。
68:16
反正我这个你也没有写编号,我只能这么猜测,这么来来组装了啊,那组装的结果最终是不是就可能乱了,比方说你在网络中发视频,你发视频有的时候是不是屏幕上就花了,为什么?因为他这个次序可能乱套了,乱套次序了,那屏幕就花了呗,那花了怎么办?他这有没有重传机制啊,他这没有三次握手,也没有四次挥手啊,那就意味着他两者之间通讯直接就直接发了,我不管你收到收不到,反正我认为就能收到我呃自己认为主观意识认为能收到,那我就发,但是发的话有可能对方根本就网络没准备好啊,应用程序没启动,那直接就丢了,丢了就丢了呗,哎,反正我不管了。
69:02
啊,那么我强调的就是我这痛快是吧,直接发嘛,哎,分手也不存在分手的问题,直接就停了就行了啊,直接就是这就是UDB协议,那么由此大家现在就看到UDB协议呢。由于没有那些标记呀,序列呀,所以它的负担很小,负担很小,带来的好处是效率高是吧,两者通讯啊,嘎嘣脆是吧,哎,也不跟你分手的事,说是直接不不理你了啊,建立连接,我说啊有有数据直接给你发,所以这样的话,是不是肯定是没有那么多繁繁繁琐的,繁琐的那些什么礼节是吧,还有握握手之类的,没有握手也不需要分手,直接咱们就来干货,来直接的有啥说啥是吧,没啥就直接断,那这个当然就效率高了,效率高这是它的优势啊,缺点就是肯定不可靠了啊,不可靠。当然,那现在UDB协议在生产中,一般来讲如果用这种协议可能就不太好,为什么呢?因为比方说你要传个数据,传个数据突然网断了,网断了它也不重传,直接丢了,所以这样的话呢,UDB协议可能会涉及到数据不不稳定啊,不可靠的情况,所以通常UDB协议一般用于不太重视数据安全的情况下,追求高性能的情况下用啊,那当然这些特性相信大家再来看是不是就没问题了,都能看懂了吧啊。
70:30
那什么情况下会用到udp呢?刚才我们也说了语音呀,视频呢,那语音视频那就是udp,他只管给你发过去,只管给你发过去,没有什么别的东西啊,我只管数据报备到了对方,对方收到不收到,那我就不管了,哎这样的话呢,这个速度虽然能保证,但是可靠性不保证了,可靠性不保证那谁来保证啊。比方说咱俩语音视频呢,哎,这个声音没听清啊,丢包了,语音也没说,呃,这个语音没没听清,视频没看见,那怎么办呢?那反正协议不管你,协议不管你,那你只能自己自己解决,那就是呃人工智能是吧,自己重说一遍,你要网上看视频,那网上看视频别人看看直播呢,那看直播如果那个画面花了,那花了就错过了,错过了就错过了,没招了,对不对啊,如果是录播还好,录播那大不了从拖回去来录对不对,要是直播那是不是就丢了就丢了,那没招了啊啊那就是UDB协议的特性啊啊所以一般我们UUDP比较少啊,Udp比较少,那大部分的应用还都是基于TCP,因为还是怕数据丢失,哎怕。
71:47
啊,这边好像发了五个包不动了。哎,这边终于断了。啊,这边终于断了。断了。
72:01
放弃了是吧,放弃了,实在连不了了,放弃了。那udp协议呢,我这也有那个NC的测试啊,咱们上午还没有讲那个udp,所以当时也没有给大家演示啊,那这边可以看一下这个。刚才上午的时候呢,我们讲了一个端口号,端口号呢,注意UDB它也有自己的端口号,它也是呃零到三二呃6535之间的端口范围,注意TCP它有自己端口,Udp也有自己端口,各是各的端口啊,互相不打架。二。好,那在这我们也有一个udp的,你看这有个udp的,Udp呢,你可以加个U就行了,加个U呢,就是监听在UDB协议啊UDB协议。
73:02
啊,那比方说我们来试一试,比方说我们呃,七和六和七之间也行,哎,这怎么多了个A呀。啊,多了个一。好,那我们就抓六和七之间啊,那六和七之间是这样的,我在这个某一个机上开启一个。监听,我在七上监听一个7000端口。文学。监听了,那么监听之后,那我们来看一下它的UDB协议的端口是不是监听了,大家看是不是有个7000处于监听状态吧,哎,监听属于DP啊,UDPUDPU,注意udp协议实际上准确的说它没有状态,大家看这个地方的状态是on,那就是connect,就是相当于不知道的状态啊,就是因为u dbc它没有状态位嘛,没有那个六个六个标记标记位,所以它没有什么状态,它没有状态啊,所以这个地方他看不到,就是7000啊7000,然后你这加个A啊加个A。
74:10
加个A的话呢,我们看这里面UDBP,它是不显示状态的,好,然后呢,我们在六的机上可以拿这个机器来连。哎。算了。好,我拿六来连,那怎么连呢?这个命令可以在这个机上拿这个命令来连。啊,连的时候呢,我去连七。这个加个U呢,就表示走UDB协议,好大家看就连上了,连上以后,那我们在这边看看能不能有没有连接的这个状态能不能看到。
75:00
啊,看看有没有六和七之间的通讯,我们看到看不到是吧?看不到,因为它这个状态没有,没有状态,所以看不到这个六和七之些连接,但是呢,确实有有没有信息发过来,好像没有没有,那现在我们就发数据,那我们就发一下,比方说我这发说我是圣斗士六发出去了,发出去以后看这边收到没,收到了吧,收到了啊收到以后呢,这个状态看看这边有没有变化,诶看见了没?诶好像udp也有个连接的状态出来了,Time是不是,那这是不是有一个状态出来了,4900什么7000,诶有个连接,因连接你看这是不是有数据报文,你看它是没有确认的啊,因为它不是有去有回,我就发,你收就收,收不到也就拉倒了,他没有确认,所以呢,你看六和七发过去了,你看这里面有没有数据,数据就是我刚才说的那句话,看到没有。
76:00
我是四六看得很清楚吧,然后UDB协议呢,它的结构非常简单,那原端口,目标端口,然后就是长度,然后校验和没了,没了就这么简单,所以他也没有什么那么多细节的东西啊,这就完了啊,当然那七也可以回应信息啊,七也可以回应信息说我是。三到四七啊,那这边六应该也收到了,那收到以后呢,那你看这边它是不是有一个七到六的回应。啊,你看这底下的内容不就看到了吗?我是孙透奇,看到没?哎,所以这就是udp的通讯过程啊,所以相信大家对udp应该有比较了解了,你看他这数据报告好简单,嗯,有就发,没有就算他没有什么,有去有回确认没有这一套,没有这渠套啊,所以中间比这个协议啊,当然如果我们把它变成CTRLC,我把它变了啊,我们把它换成TCP,你发现它就不一样了,你看我这还是干提前,不过把这个U去了,然后呢,这边我们把这个U去了,那现在他就有TCP协议了,那么TCP协议一旦你看他就有握手了,看到没有,是不是有握手了,那又握手了啊,有去有回折腾半天,然后呢,我们现在同样发话,比方说我是啊这个TCP的3S6。
77:23
啊,这时候你看虽然我是单向的六给七发的,但是他绝对不是一个单向发,你看他这发了一个什么,六给七发了,六给七发了以后,你看这个数据有没有数据,呃。这是同步同步同步啊6:7,看看是不是下面这个。这个哎,这是数据,你看六给七发了以后,是不是六给七七发了,还还得回应一下吧,说我收到了,还得表示收到了,所也就是说六给七发了,实际上呢,呃,并不是说六发完就完事了,七还得回应一个包,回应个包时我收到了,你看他有个AC,还有个AC。
78:03
所以这就显而易见会加大网络负载,是不是网络中是不是有很多的确认,那肯定会加大网络负载,所以它效率肯定会有一些影响啊,有去有回,当然那我们这儿那你也可以再回,比方说我是。TCP的渗透,S7好少了一个,那就这样了,那现在你看他也是说是七给六,但是呢,七给六发的时候,他六也有有回应,六也得有回应啊,所以还得确认,所以这样的话呢,这个双方还是挺靠谱的是吧,挺靠谱的,所以这就是咱们的整个UDPTCP协议的介绍,相信大家应该能理解。好了,那么关于传输层两个协议,再来看之前我们给大家讲的tcpudp的两个包的区分,那现在你相信应该再看这个图就很知道是什么意思了啊,什么可靠不可靠,为什么面向连接不列进行连接,这是不是就清清楚楚了啊?好了,那么关于TCP的TC pip协议的传输层这两个协议咱们就介绍完了,那么稍后我们来介绍TC pip的在下面的层,下面层就是阴太层了吧,烟层,那烟层也是我们要学习的重点,休息一会回来啊。
我来说两句