网络编程(part8)--传输层服务之TCP和UDP

鄙人学习笔记



传输层服务

面向连接的传输服务(基于TCP协议的数据传输)

传输特征

提供了可靠的数据传输(3次握手,4次挥手),可靠性指数据传输过程中无丢失,无失序,无差错,无重复。

实现手段

在通信前需要建立数据连接,通信结束要正常断开连接。

①三次握手(建立连接)

  • 第1次握手:客户端向服务器发送消息报文,请求连接.
  • 第2次握手:服务器收到请求后,回复报文,同意建立连接(若不同意,则不会返回报文,则没有第2次和第3次握手).
  • 第3次握手:客户端收到回复,发送最终报文,连接建立.

网络编程(part8)--传输层服务之TCP和UDP

②四次挥手(断开连接)

  • 第1次挥手:主动方发送报文,请求断开连接
  • 第2次挥手:被动方收到请求后,立即回复,表示准备断开
  • 第3次挥手:被动方准备就绪,再次发送报文,表示可以断开
  • 第4次挥手:主动方收到确定,发送最终报文,完成断开

备注:断开连接,谁先断开?是客户端还是服务端呢?其实是两段都可以主动断开。所以,这里我们就写主动方和被动方。
网络编程(part8)--传输层服务之TCP和UDP

适用情况

对数据传输准确性有明确要求,传数文件较大,需要确保可靠性的情况。比如:网页获取,文件下载,邮件收发。

面向无连接的传输服务(基于UDP协议的数据传输)

传输特点

不保证传输的可靠性,传输过程没有连接和断开,数据收发自由随意。

适用情况

网络较差,对传输可靠性要求不高。比如:网络视频,群聊,广播。
例如,在视频聊天时,我们的清晰度不是很高。如果要求清晰度很高,则需要在很短的时间内需要传递很多数据。但是,当我们网速不够时,这些数据在很短的时间内是传输不过去的,这时,视频聊天就会很卡,甚至会断开连接。所以,这时就会以视频不清晰(丢失数据)为代价,来保证连接的流畅性。故,此时就允许有数据的丢失,所以就不能用基于TCP协议的数据传输,而用基于UDP的数据传输.

备注:UDP传输效率比TCP高,因为TCP为了保证数据传输的可靠性,有3次握手(建立连接)和4次挥手(断开连接).