十六、TCP、UDP协议
一、协议族模型回顾
前面就说过,TCP/IP
其实只是一个统称,其实它指得是一个由多个协议组合而成的协议族,
其中核心的就是TCP
和IP
这两关键协议,因此也就将协议族称为了TCP/IP
协议:

这里需要注意:
不管应用层调用的是
TCP
还是UDP
协议,最后封装得到的分组数据包在传输时,经过网卡/交换机/路由器的过程都是一样的
二、TCP协议
协议名称:Transmission Control Protocol
,即传输控制协议,简称TCP
名字的核心在Control
字眼上,TCP
协议代码会进行很多的控制,保证传输数据的可靠性,因此被称为“传输控制协议”还是很贴切的
1. 特点
(1)属于传输层的协议
(2)通信前,双方要预先要通过三次通信(我问你答)建立连接,这三次通信被称为“三次握手”。
何为建立链接:TCP
协议会记录下对方的信息。
(3)TCP
是一种可靠传输协议
如何保证传输的数据的可靠性的,
TCP
协议代码会有一些保证机制,简单的比如:
- (a)对分组数据进行顺序编号,收到数据后的如果发现序号不全、混乱,表明数据不对等,要求对方重发
- (b)收到数据一方必须给一个收到的回答,如果不给回答证明数据没有收到,那么就会重发数据
- (c)等其它
说白了就是数据不对就重发,不对就重发,通过反复重发的手段,来保证的数据一定是正确的。
(4)根据网络情况,可以调整每次发送的分组数据的大小
网络状况好时,
TCP
发送的分组数据量会增大,网络状况下降时,为了保证通信的质量,
会相应逐步降低发送的数据量,这种方法有一个特殊的叫法,叫“滑动窗口协议”,
就好比根据外面风大小的情况,临时调整窗口的大小,保证尽到屋子通风质量都是最佳的
2. 什么情况下合适使用TCP协议
对数据保真度要求较高。
如果对数据保真度要求很高的话,使用TCP
协议是最合适的,
但是TCP
为了能够保证数据的正确性,有繁琐的控制机制,需要各种的回答和验证,
所以对于网络要求较高,如果你的网络很慢的话,使用TCP
稍微吃力
3. TCP不能孤立工作
TCP
协议必须要有网络层和链路层协议配合,才能正常实现网络通信,
因为本来TCP/IP
协议就是一套完整的、各层子协议协同工作的协议系统。
4. 调用TCP协议的应用层协议
(a)自己实现的应用层协议
就是自己写的应用程序,自己规定应用程序对于数据的格式解释。
(b)别人一早实现的,现成可用的应用层协议
常见的应用层协议有:
· HTTP
:“超文本传输”传输协议
· SMTP
:邮件传输的应用层协议
· Telnet
:远程登录协议
· FTP/TFTP
:文件传输协议/简单文件传输协议
· NFS
:网络文件系统协议
这些应用层协议的实现程序,网上有现成的,我们是可以直接下载使用的。
二、UDP协议
协议名称:User Data Protocol
,用户数据报协议,简称UDP
1. 特点
(1)属于传输层的协议
(2)跟TCP
不一样,通信前不需要预先建立连接
(3)UDP
是不可靠传输,因为UDP
没有对数据进行可靠性控制,如果数据丢失错乱,将不会重发。
(4)发送分组数据是固定字节大小,大约64
字节,不像TCP
一样,会因为网络问题而进行调整。
总之
UDP
将数据报发出去就发出去了,至于数据的能不能被收到,收到的是否是正确的,UDP
不关心,UDP
协议不提供相应的机制来保证数据报的正确收发
2. UDP的使用
(1)对网络速度要求较低
UDP
的控制简单,不磨叽,因此对于网络要求略低。
(2)UDP
不能孤立工作
同样,
UDP
协议必须要有网络层和链路层协议支持,才能实现正常的网络通信。
(3)什么情况使用UDP
比较合适
如果你对传输数据的精确度要求不高的话,就可以使用
UDP
协议,比如像音频和视频数据,
丢失部分数据后,顶多就是视频/声音的质量稍微降低,但是人有时候并不敏感,因此数据丢了一些数据后,
我们就未必能感受得到差异,所以使用UDP
还是合适的
RTP/RSTP
:多媒体网络传输协议,比如各种监控设备的实时视频数据的传输,就是用这种协议。