一、协议族模型回顾

前面就说过,TCP/IP其实只是一个统称,其实它指得是一个由多个协议组合而成的协议族,
其中核心的就是TCPIP这两关键协议,因此也就将协议族称为了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:多媒体网络传输协议,比如各种监控设备的实时视频数据的传输,就是用这种协议。