TCP:
- TCP(Transmission Control Protocol传输控制协议)
- 传输层协议
- 原因:应用层需要可靠的连接,但是IP层没有这样的流机制
- 面向连接,即在客户端和服务器之间发送数据之间,必须先建立连接
- 位于应用层和IP层之间
- 连接需要三次握手,四次挥手断开连接
传输数据是可靠的
TCP具体分析:
TCP(Transmission Control Protocol传输控制协议)是一种面向连接的,可靠的,基于字节流的传输层通信协议。TCP位于IP层和应用层之间,不同主机的应用层之间需要可靠的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
应用层向TCP层发送用于网间传输的,用8位字节表示的数据流,然后TCP把数据流区分成适当长度的报文段,最后TCP将结果包传给IP层,由IP层通过网络传给接收端实体的TCP层。
TCP连接建立:
TCP是因特网中的传输层协议,使用三次握手协议建立连接。
TCP三次握手的过程如下:
1.客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
2.服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
3.客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
TCP连接终止:
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。 [1]
既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。
UDP:
- UDP(User Datagram Protocol用户数据报协议)
- 传输层协议
- 无连接的数据报协议
- 不能提供数据报分组,组装和不能对数据报进行排序、
- 主要用于不要求分组顺序到达的传输中,分组传输顺序的检查和排序由应用层完成。
- 提供面向事务的简单不可靠传递服务。
- UDP协议适用端口分别运行在同一台设备上的多个应用程序。
- 功能:为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据包的发送和接收,设计用户数据报协议UDP
区别:
- TCP是面向连接的(在客户端和服务器之间传输数据之前要先建立连接),UDP是无连接的(发送数据之前不需要先建立连接)
- TCP提供可靠的服务(通过TCP传输的数据,无差错,不丢失,不重复,且按序到达);UDP提供面向事务的简单的不可靠传输
- UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性比较高的通信或广播通信。随着网速的提高,UDP的使用页越来越多
- 每一条TCP连接只能是点到点的,UDP支持一对一,一对多和多对多的交互通信
- TCP对系统资源要求较多,UDP对系统资源要求较少
- UDP程序结构更加简单
- TCP是流模式,UDP是数据报模式