Android网络基础 -- TCP、UDP

1.什么是TCP

TCP(Transmission Control Protocol):传输控制协议,属于传输层,基于TCP协议的应用层协议有HTTP、STMP、FTP、Telnet、POP3

 

2.特点

  • 面向连接:使用TCP传输数据前,必须先建立TCP连接;传输完成后在释放连接
  • 全双工通信:建立TCP后,通信双方都能发送数据
  • 可靠:通过TCP连接发送的数据:不丢失、无差错、不重复并且按序到达
  • 面向字节流:数据以流的形式进行传输

 

3.优缺点

优点:数据传输可靠

缺点:效率慢(因需建立连接、发送确认包等) 

 

4.建立连接过程

众所周知,TCP建立连接需要三次握手

  • 第一次握手,客户端向服务端发送一个请求的报文段;客户端进入同步已发送状态,等待服务器确认。
  • 第二次握手,服务器收到请求报文段后,若同意建立连接,则向客户端发回连接确认的报文段,服务端进入同步已接收状态。
  • 第三次握手,客户端收到确认报文段后,向服务器再次发出连接确认报文段,客户端、服务端都进入已创建状态。可开始发送数据。

因为TCP提供的是全双工通信,故通信的双方应用进程在任何时候都可以发送数据,三次握手期间,任何1次未收到对面的回复,都会重发。

 

5.释放连接过程

  • 第一次挥手,客户端向服务端发送一个连接释放的报文段(停止再发送数据),客户端进入终止等待1状态,等待服务端确认
  • 第二次挥手,服务器收到连接释放的报文后,则向客户端发回连接释放确认的报文段,服务器进入关闭等待状态,客户端收到服务器的确认后,进入终止等待2状态,等待服务器发出释放连接的请求。至此,客户端 --> 服务端的TCP连接已经断开,即TCP连接处于处于半关闭状态,即客户端 --> 服务端断开,但服务端 --> 客户端未断开
  • 第三次挥手,若服务器已无要向客户端发送的数据,则发出释放连接的报文段,服务器进入最后确认状态
  • 第四次挥手,客户端接收到释放报文段后,则向服务器发回连接释放确认的报文段,客户端进入时间等待状态,服务器进入关闭状态,此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,客户端才会进入关闭状态,即服务器进入关闭状态比客户端要早一些

 

6.为什么需要三次握手和四次挥手

再连接建立的过程中,三次握手防止服务器因接收了早已失效的连接请求报文,从而一直等待客户端的请求,最终导致形成死锁、浪费资源。

再释放连接的过程中,四次挥手保证通信双方都能通知对方需要释放并且断开连接。 

 

7.什么是UDP

UDP(User Datagram Protocol):用户数据协议,属于传输通信层的协议,基于UDP的应用层协议有TFTP、SNMP与DNS

 

8.特点

  • 无连接,使用UDP传输数据前,不需要建立UDP连接
  • 不可靠,UDP的数据包发送后,不管其是否会到达接收方
  • 面向报文,数据以数据报文(包)的形式传输,UDP数据报文长度无限制,都一次性发送,不像TCP会拆分
  • 无拥塞控制,由于是不可靠传输,即不管是否到达接收方,故不需要拥塞控制

 

9.优缺点

优点:速度快

缺点:消息易丢失,特别是网络较差的时候

 

10.TCP和UDP的对比

-->是否面向连接:

TCP:面向连接

UDP:无连接

 

-->传输可靠性

TCP:可靠

UDP:不可靠

 

-->传输形式:

TCP:字节流

UDP:数据报文段

 

-->传输效率:

TCP:慢

UDP:快

 

-->所需资源:

TCP:多

UDP:少

 

-->应用场景:

TCP:要求通信数据可靠(如文件传输、邮件传输等)

UDP:要求通信速度很高(如域名转换)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值