计算机网络——传输层:TCP与UDP

传输层与网络层一齐构建成了网络协议层次的核心。网络层解决的是计算机与计算机之间的通信问题,而传输层解决的是进程与进程之间的通信问题。传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间拓展到两台计算机上的进程之间。因此,在传输层通信除了IP之外还需要有端口号来确认是与目标计算机上那个进程通信。与网络层类似的,传输层也提供了两种服务类型。一是面向连接的TCP传输,另外一种是无连接的UDP服务。所以要了解传输层的细节,就是要了解清楚TCP与UDP的细节。

UDP:用户数据报协议(User Datagram Protocol)为应用程序提供一种无需建立连接就可以发送封装的IP数据报的方法。UDP传输模型可以类比为邮递方式,发送方在发送之前无需建立连接,只需要知道接收方的地址(IP和Port),然后把数据报发送出去后,由网络自行路由,最终能否到达目的地,什么时候到达,发送方是不会得到反馈的。UDP除了提供发送数据包功能之外,几乎没有做任何事情,使用UDP传输的时候应用程序应该自己组织策略应对丢包、乱序和数据出错的情况。

TCP:传输控制协议(Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP传输模型可以类比为打电话,通信双方在通信之前必须先建立连接(IP和Port),然后在这个连接上收发数据,通信结束后要释放连接。TCP采用的是全双工连接,表示可以在两个方向上同时传输数据。为了提供可靠的端到端字节流传输,TCP在内部实现了丢包重传、乱序重排、校验数据的功能。此外TCP还实现了一个重要功能——拥塞控制,会通过一些数据来得知当前网络情况,在网络情况不好时降低发送速度,在网络情况优良时提高发送速度,从而让整个网络达到一个高效状态。正因为TCP实现了上述这么多的功能,所以TCP是Internet的主力军,大部分网络应用采用TCP传输数据。

想要真正了解TCP协议,就必须了解TCP应对网络不可靠情况做的策略。而要真正用好UDP,也要在一定程度上自己组织策略应对网络不可靠的情况。所以要了解传输层,用好TCP/UDP的核心就是了解要面对的情况及一些相应的处理方案。 Continue reading