一、概述
计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机与主机的通信。
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端的协议。
运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
运输层有两个主要的协议:TCP和UDP
- TCP的全称是Transmission Control Protocol,它被称为是一种面向连接的协议,这是因为一个应用程序开始向另一个应用程序发送数据之前,这两个进程必须先进行握手,握手是一个逻辑连接,并不是两个主机之间进行真实的握手。
- UDP的全称是User Datagram Protocol,它被称为是一种面向无连接的协议,对自己提供的连接实施控制。适用于实时应用,例如:IP电话、视频会议、直播等,以报文的方式传输,效率高,即使知道有破坏的包也不进行重发。
二、TCP详解
TCP是面向连接的、可靠的、基于字节流的传输层通信协议。
- 面向连接:一定是「一对一」才能连接,不能像UDP协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;
- 可靠的:无论的网络链路中出现了怎样的链路变化,TCP都可以保证一个报文一定能够到达接收端;
- 字节流:消息是「没有边界」的,所以无论我们消息有多大都可以进行传输。并且消息是「有序的」,当「前一个」消息没有收到的时候,即使它先收到了后面的字节已经 收到,那么也不能扔给应用层去处理,同时对「重复」的报文会自动丢弃。
参考资料: TCP和UDP详解 TCP和UDP的区别 2、TCP、UDP 面试详解 Java通俗易懂30天 第27天:网络编程 网络编程(详)
|