因为最近做的项目涉及到推流与拉流,听技术人员讨论考虑用TCP还是UDP,听不太懂,学习一个。
首先,什么是网络传输协议?网络传输协议又称传送协议(Communications Protocol),是指计算机之间通信的共同语言。现在普及范围最广的计算机间通讯是网络通讯,所以“传送协议”一般都指计算机网络通信的传送协议,如TCP/IP等。当然,传送协议也存在于计算机的其他形式的通信,比如操作系统中不同程序之间的通讯,这些也需要一个传输协议,以保证传送双方能互相听懂。
TCP/IP协议
TCP/IP协议,Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
TCP/IP协议包括应用层,传输层,网络层和网络接口层。
应用层
超文本传输协议(HTTP):万维网的基本协议。
文件传输(TFTP):简单文件传输协议。
远程登录(Telnet):提供远程访问其它主机功能,它允许用户登录internet主机,并在这台主机上执行命令,明码传送,保密性差,但简单方便。
网络管理(SNMP):简单网络管理协议,该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等。
域名系统(DNS):该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址。
网络层
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。
网络层负责相邻计算机之间的通信。功能包括三个方面:
一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
三、处理路径、流控、拥塞等问题。
网络接口层
网络接口层定义物理介质的各种特性,包括机械特性,电子特性,功能特性和规程特性。
传输层
这也是本文的主要内容。传输层主要提供应用程序间的通信,其功能包括:格式化信息流和提供可靠传输。
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
TCP(Transmission Control Protocol,传输控制协议)
TCP协议是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
一个TCP连接必须要经过三次握手才能建立起来,其中的过程非常复杂,只简单的描述下这三次握手的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次握手;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次握手;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次握手。三次握手的目的是使数据包的发送和接收同步,经过三次握手之后,主机A才向主机B正式发送数据。
UDP(User Data Protocol,用户数据报协议)
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
小结
TCP和UDP的区别:
TCP有连接,UDP无连接;
对系统资源的要求TCP较多,UDP少;
UDP程序结构较简单;
TCP保证数据正确性,UDP可能丢包;TCP保证数据顺序,UDP不保证。