TCP与UDP协议
在OSI模型中,TCP和UDP都适用于第四层,即IP层之上的传输层。TCP和UDP都支持两种不同的数据传输方式,TCP是面向连接的,UDP是无连接的。
在数据包的传输过程中,存在两个主要的约束:一个是可靠性,另一个是延迟。可靠性保证了数据包的传递,延迟是数据包的及时传递。两者不能同时达到峰值,但可以进行优化。
为了启动两个节点之间的数据通信,发送方应该知道接收方的IP以及端口号。IP地址用于路由数据包,端口号用于将数据包移交给正确的人。在一个真实世界的例子中进一步解释这个场景,想象一个复杂的多购物环境,有人指示你去30号店(理发厅),金色广场,公园大道21号,要到达这个地方,你只需要知道21号公园大道,但要从saloon获得服务,你需要知道商店的编号是30。你可以假设21号作为IP地址,30号商店作为端口号。
与在数据通信和应用程序服务模型中一样,TCP应用程序监听端口号来接受TCP连接。与UDP应用程序一样,还监听端口号来提供UDP服务。
TCP协议:
定义见RFC 793
TCP是面向连接的端到端可靠协议,支持有保证的数据传输。从建立连接本身来说,TCP保证了可靠性。TCP的一些主要特性包括三路握手(SYN、SYN-ACK、ACK)、错误检测、慢启动、流量控制和拥塞控制。
TCP是一种可靠的传输机制,因此即使在拥塞情况下也必须进行数据包传输,它也将被使用。TCP应用程序和端口号的典型示例是FTP数据(20)、FTP控制(21)、SSH(222)、Telnet(23)、Mail(25)、DNS(53)、HTTP(80)、POP3(110)、SNMP(161)和HTTPS(443)。这些都是众所周知的TCP应用程序。
UDP协议:
RFC 768中定义
UDP(用户数据报协议)是一种简单的传输协议,提供不可靠的服务。这并不意味着UDP不会传送数据,但是没有监控拥塞控制或丢包等机制,因为它简单,避免了网络接口的开销处理。实时应用程序大多使用UDP,因为丢弃数据包比延迟数据包更好。典型的例子是IP语音媒体流。
小结:
(1) TCP是面向连接且可靠的,而UDP是连接较少且不可靠的。
(2) TCP需要在网络接口级别进行更多处理,而在UDP中则不然。
(3) TCP采用了三路握手、拥塞控制、流量控制等机制来保证传输的可靠性。