今天的CCNA课程比较简单,是关于TCP和UDP的,不过CCNA的考点是比较TCP和UDP,了解不同之处,而不是深入了解两种协议,所以这一块的知识只需要知道他们的不同点在哪里即可,不需要深挖。
首先来说,TCP和UDP都是第四层Transport层的协议,用来给终端之间传输数据,另外需要使用L4端口号,并且可以会话复用。
端口号被IANA(internet assigned number authority)分为三类:
Well-known 端口号:0-1023
Registered 端口号:1024-49151
Ephemeral(短暂的)/private/dynamic 端口号:49152-65535
两者的区别主要是在下面四点:
Reliable data transfer
error recovery
data sequencing
flow control
如下图所示,是一个比较典型的TCP流程,即PC1上打开一个网页,然后和服务器进行数据交换的过程。一般来说终端的source端口都是用ephemeral 端口,随机一个出来,而destination端口都是一些常用的well-known端口。
![](/wp-content/uploads/2021/10/image-97.png)
首先来说TCP(Transmission control protocol)
TCP是面向连接的,即在发送数据之前,两侧终端首先要沟通并建立连接,一旦连接建立之后,才会交换数据
TCP是reliable,接收端必须确认接受它收到了每一个TCP段,如果没确认接受,source端会重新发送
TCP支持重新排序,在TCP header中有sequence号码,因此即使是乱序到达目的地,终端依然会将其重新排为正确顺序。
TCP支持流控制,接收端可以告诉发送端去增加或者减少数据流率。
下图则是TCP字段的header,里面很多东西,CCNA没有要求记下来,大致看一下就好。
![](https://www.chaostudy.com/wp-content/uploads/2021/10/image-98.png)
TCP有一个知识点叫做三次握手协议,用于建立连接,如下图所示,
source端先发出synchronization flag,
destination端收到后发回去acknowledge flage和synchronization flag
source端收到synchronization flag后再发回去一个acknowledge flag
这样两侧都可以发送和接受,三次握手完成,连接成功建立,可以开始发送数据。
![](/wp-content/uploads/2021/10/image-99.png)
而相对应的,终止连接就有四次握手协议,如下图所示
source端先发送finish flag,
destination端收到后回复一个acknowledge flag,
再发一个finish flag
source端收到后回复一个acknowledge flag
![](/wp-content/uploads/2021/10/image-100.png)
上述两个图表明了TCP是面向连接的,是可靠的,
下面这个图则展示了TCP是支持乱序重排的,首先是三次握手协议,source端发给destination端一个synchronization flag,这个flag的sequence号码假设是10,然后destination端收到后会发回去synchronization flag,和acknowledge flag,seq的号码假设是50,而ack的号码则是11。
这里注意一下,ack的号码并不是和发过来的seq号码一样,而是和接下来的一条一样。这种机制称为forward acknowledgement.
Forward asknowledgement 用来表示和终端所期待的下一条字段的号码。
![](https://www.chaostudy.com/wp-content/uploads/2021/10/image-101.png)
假如出现了下图的情况,由于destination端没有发回来ack22,所以source端会不断的发seq21字段。
![](/wp-content/uploads/2021/10/image-102.png)
这里插播一条常见的DDOS攻击只是,DDoS就是有人恶意向服务器发syn flag,然后服务器收到后再发回去ack 和 syn flag,但是攻击者不去回应该条syn,服务器会尝试再次或者多次重新发送。如果只是一条则没所谓,如果攻击者不断地这么搞,服务器则会使用大量资源来处理重新发送等,这样正常客户端的请求就会受到影响。通常表现为打不开,连不上,非常卡。
注意:现实情况下每次seq增加不一定是1,其实也不一定是10,50这种
之前还讲到TCP支持流控制,如下图所示,发送端连续发了3个seq,然后接收端回复ack,发送端会继续增加流量,越大越好,直到ack这里显示开始有部分seq丢失,需要重发。减少的原理也是一样。
![](https://www.chaostudy.com/wp-content/uploads/2021/10/image-103.png)
接下来我们说UDP(User datagram protocol)
和TCP相反,UDP不是面向连接,不提供可靠连接,不支持乱序重排,不支持流控制,header也比TCP简单得多,小得多。
![](/wp-content/uploads/2021/10/image-104-1.png)
TCP比UDP更加可靠,但是也意味着更大的数据开销,包会更大。
使用TCP还是UDP要取决于实际的应用,比如一些可靠性连接就需要TCP,而一些实时音视频就需要UDP
下图是一个简单的对比
![](/wp-content/uploads/2021/10/image-105.png)
下图则是一些常见端口号
![](https://www.chaostudy.com/wp-content/uploads/2021/10/image-106.png)
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
-------------------------------------------------------分隔符-------------------------------------------------------------------
Day 30 Anki Flashcard下载:https://drive.google.com/file/d/1TEkE63GXIV0em897VkxG7deyqpg0X0JF/view?usp=sharing
今天的课程没有Cisco Packet Tracker的内容
0 条评论