传输层主要功能为两台主机上的应用程序提供端到端的通信,通过端口号识别两台主机上相对应程序之间进行通信。传输层中最主要的两个协议就是 TCP 和 UDP,可以根据 IP 首部的协议字段来识别传输数据的协议类型。
TCP 是面向连接的、可靠的流协议,流是指不间断的数据结构。它的任务是把来自应用程序的数据分成合适的小块交给下面的网络层,确认接收到数据的分组。为数据块设置超时时钟,一旦超过该时间就重新发送数据。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制”、“拥塞控制”、提供网络利用率等功能。
UDP 是无连接、不可靠的数据报协议,为应用程序发送和接收数据报,只是将数据报的分组从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何必须的可靠性都由应用程序提供。在 UDP 情况下,虽然可以确保发送消息的大小,却不能保证消息一定会达到目的端。因此,应用时会根据自己的需要进行重发处理。UDP 协议常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。
在数据链路和网络层中,分别采用 MAC 地址和 IP 地址。前者用来识别同一链路中的不同计算机,后者用来识别 TCP/IP 网络中互连的主机和路由器。这样我们已经可以在互联网上任意两台主机上建立通信。因为同一台主机上可能有许多程序都需要用到网络,我们怎样才能确保哪些对应的程序在进行通信?在传输层中使用端口号来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。一台计算机上同时可以运行多个程序,传输层协议采用端口号来识别本机中正在进行通信的应用程序,并准确地将数据传输。端口号由其使用的传输层协议决定,不同的传输层协议可以有相同的端口号。
为了防止相同端口号之间通信混乱,TCP/IP 或 UDP/IP 通信中通常采用 5 个信息来识别一个通信。它们分别是“源 IP 地址”、“目的 IP 地址”、“协议号”、“源端口号”、“目标端口号”。只要其中某一项不同,则被认为是其他通信。下面是识别多个请求时采用这 5 个信息进行识别程序之间的通信:
参考资料:
《图解 TCP/IP》
原文地址:http://blog.csdn.net/chenhanzhun/article/details/41541277