网络通信——TCP/UDP

来源:互联网 发布:试发型的软件 编辑:程序博客网 时间:2024/06/06 01:38

TCP协议和UDP协议的区别:

TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接

TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。

TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。

TCP有流量控制拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率

TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。

TCP面向的是字节流的服务,UDP面向的是报文的服务

 

三次握手建立连接时,发送方再次发送确认的必要性:

主要是为了防止已失效的连接请求报文段突然又传到了接收端,因而产生错误。

 

四次挥手释放连接时,等待2MSL的意义?

第一,为了保证A发送的最后一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。

第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失

 

 

TCP/Ip有3次握手:

第一次握手:客户端向服务器端发送SYN包(syn=j),进入SYN_SEND状态,等待服务器确认。

第二次握手:服务器收到SYN包,确认SYN,此时syn=j+1,同时发送一个SYN包(syn=k)即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到SYN+ACK包,向服务器发送ACK确认包,此时客户端和服务器端均进入ESTABLISHED状态。

其中有一个半连接状态:服务器维护一个半连接队列,该队列为每个客户端SYN包开设一个条目,标明服务器已经接到SYN包,并向客户端发出确认,这些条目表示的连接处于SYN_RECV状态,得到客户端的确认后进入ESTABLISHED状态。

TIME_WAIT是断开连接时的状态

 

TCP/UDP特点:

UDP:信息量小,快速响应

TCP:可靠传输

 

以下应用一般或必须用UDP实现:

多播的信息一定要用UDP实现,因为TCP只支持一对一通信。

简短的信息,适合用UDP实现,因为UDP是基于报文段的,它直接对上层应用的数据封装成报文段,然后丢在网络中,如果信息量太大,会在链路层中被分片,影响传输效率。

如果一个应用场景要求性能更高甚于重完整性和安全性,那么适合于UDP,比如多媒体应用,缺一两帧不影响用户体验,但是需要流媒体到达的速度快,因此比较适合用UDP

如果要求快速响应,那么UDP更合适

如果又要利用UDP的快速响应优点,又想可靠传输,那么只能考上层应用自己制定规则了。

常见的使用UDP的例子:ICQ,QQ的聊天模块

 

TCP应用:电子邮件、远程登录(安全登录)、文件传输、Web、网络新闻、远程打印

UDP应用:会话、聊天

 

TCP/IP模型层次 : 应用、表示、会话、传输、网络、数据链接、物理

     支持异种类型的计算机网络互联通信协议 : 广域网技术

原创粉丝点击