一、TCP
传输控制协议(Transmission Control Protocol),提供面向链接、可靠的传送服务。TCP是面向字节流的,“流”指的是流入到进程或从进程流出的字节序列,发送方的TCP将应用程序交下来的报文看作是一连串无结构的字节流,不保证应用程序所收到的数据块和应用程序所发出的数据块具备对应的大小关系,但接收方应用程序收到的字节流必须和发送方应用程序发送的字节流同样。网络
1.一、TCP最主要的特色
- TCP是面向链接的传输层协议;
- 每一条TCP链接只能有两个端点(endpoint),每一条TCP链接只能是点对点的(一对一);
- TCP提供可靠交付的服务;
- TCP提供全双工通讯;
- 面向字节流:
- TCP的“流”(stream)指的是流入或流出进程的字节序列;
- “面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据当作是一连串无结构的字节流。
1.二、TCP面向流的概念
- TCP不保证应用程序所收到的数据块和应用程序所发出的数据块具备对应的大小关系;
- 但接收方应用程序收到的字节流必须和发送方应用程序发送的字节流同样。
二、UDP
用户数据报协议(User Datagram Protocol),提供无链接、不可靠的传输服务。无链接即发送以前不须要创建连接,所以减小了开销和发送数据以前的时延,可是在数据传输过程当中会致使差错丢失。UDP是面向报文的,发送方UDP对应用程序交下来的报文,在简单添加首部以后就直接交付给网络层。socket
2.一、UDP的主要特色
- UDP是无链接的,发送数据以前不须要创建链接,所以减小了开销和发送数据以前的时延;
- UDP使用尽最大努力交付,即不保证可靠交付,所以主机不须要维持复杂的链接状态表;
- UDP是面向报文的。UDP对应用程序交下来的报文,即不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文;
- UDP没有拥塞控制,所以网络出现拥塞时不会使源主机的发送速率下降。这对某些实时应用很重要,很适合多媒体通讯的要求;
- UDP支持一对1、一对多、多对一和多对的的交互通讯;
- UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短。
2.二、面向报文的UDP
- 发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。 UDP对应用层交下来的报文,即不合并,也不拆分,而是保留这些报文的边界;
- 应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文;
- 接收方UDP对IP层交上来的UDP数据报,在去除首付后就原封不动的交付上层的应用程序,一次交付一个完整的报文;
- 应用程序必须选择一个合适大小的数据报:
- 若报文太长,UDP把它交给IP层后,IP层在进行传输时可能进行分片,这会下降IP层的效率;
- 若报文过短,UDP把它交给IP层后,会使IP数据报的首部的相对长度过大,这也会下降IP层的效率。
三、TCP和UDP的区别
- TCP是面向链接的,须要事先创建链接(三次握手,释放须要四次挥手),而UDP是无链接的;
- TCP有多种手段来保证传输质量(流量控制、差错检验、拥塞控制、对数据报排序等),通常用于对数据准确性要求高的FTP、HTTP、邮件系统的POP3,SMTP、远程登陆等。UDP不对数据进行排序,没有拥塞控制,通常用于准确度不高的语音、视频通讯;
- UDP传送数据较TCP快速,由于系统开销也少,无需各项保质控制(TCP在转移数据时必须建立(并保持)一个链接。这个链接给通讯进程增长了开销,让它比UDP速度要慢);
- TCP通讯是一对一的,而UDP是一对1、一对多、多对一和多对多的交互通讯;
- TCP面向字节流,其实是TCP把数据当作一连串无结构的字节流;UDP是面向报文的。
四、端口
在网络技术中,端口(Port)大体有两种意思:一是物理意义上的端口,好比,ADSL Modem、集线器、交换机、路由器用于链接其余网络设备的接口,如RJ-45端口、SC端口等等;二是逻辑意义上的端口,通常是指TCP/IP协议中的端口,端口号的范围从0到65535,好比用于浏览网页服务的80端口,用于FTP服务的21端口等等。 ----百度百科spa
- 每一个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。
- 在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),惟一的肯定一条TCP链接。
- 相对于TCP报文,UDP报文只有少许的字段:源端口号、目的端口号、长度、校验和等,各个字段功能和TCP报文相应字段同样。