TCP与UDP

1.概念

TCP(传输控制协议)是面向连接、可靠的字节流服务,客户端与服务端交换数据之前,必须建立连接才能传输数据。

UDP(用户数据报协议)是一个简单的面向数据报的传输层协议,不提供可靠性,只是把应用程序传递给IP层的数据报发送出去,但不能保证能否顺利地到达目的地。

2.TCP和UDP区别
  • 连接方面
    tcp面向连接,udp不需要连接;
  • 可靠性
    tcp是可靠传输,一旦传输过程中丢包的话会进行重传;
    udp是不可靠传输,但会最大努力交付。
  • 工作效率
    UDP实时性高,比TCP工作效率高。
  • 是否支持多对多
    TCP是点对点的;
    UDP支持一对一,一对多,多对多。
  • 首部大小
    TCP首部占20字节;
    UDP首部占8字节。
3.TCP和UDP的应用场景

TCP应用场景:
对数据传输可靠性要求较高的场景(例:文本传输、重要状态更新、登录数据传输),时数据传输性能让位于数据传输的完整性,可控制性和可靠性。

UDP应用场景:

  • 面向数据报方式,客户端数量较多;
  • 对数据安全姓无特殊要求,对响应速度要求高。
4.TCP和UDP的报头

TCP报头
在这里插入图片描述
UDP报头
在这里插入图片描述

5.TCP的三次握手和四次挥手

TCP三次握手
在这里插入图片描述

1.TCP服务器进程先创建传输控制模块(TCB),进入监听(lsiten)状态,等待客户端的连接请求;

2.TCP客户端创建TCB,向服务器发出连接请求报文,进入同步已发送(SYN-SENT)状态;
请求报文:【同部位 SYN=1,初始序列号 seq=x】

3.TCP服务器收到请求报文后,如果同意连接则发出确认报文,进入同步收到(SYN-RCVD)状态;确认报文:【ACK=1,SYN=1,确认号ack=x+1,初始的序列号 seq=y】

4.TCP客户端收到确认后,返回TCP服务器确认,建立TCP连接,客户端进入已建立连接(ESTABLISHED)状态;确认报文【ACK=1,ack=y+1,自己序列号seq=x+1】

5.TCP服务器收到TCP客户端的确认后进入已建立连接(ESTABLISHED)状态,双方开始通信。

TCP四次挥手
在这里插入图片描述

1.客户端进程发出释放报文和数据报文首部,停止发送数据,进入终止等待1(FIN-WAIT-1)状态;释放报文【FIN=1,序列号seq=u】;

2.服务器收到连接的释放报文,发出确认报文,进入关闭(CLOSE-WAIT)状态;确认报文【ACK=1,ack=u+1,seq=v,】(这时处于半关闭状态,虽然客户端没有发送数据,但服务器如果要发送数据给客户端,客户端依然要接收);

3.客户端接收到服务器的确认请求后,进入FIN-WAIT-2(终止等待2)状态,等待服务器发送释放报文;

4.服务器将数据发送完后,向客户端发送连接释放报文,服务器进入LAST-ACK(最后确认)状态,等待客户端确认;释放报文【FIN=1,ack=u+1,seq=w】

5.客户端收到服务器的连接最后释放报文后,发出确认,进入TIME-WAIT(时间等待)状态;确认报文【ACK=1,ack=w+1,seq=u+1】(此时TCP连接还未释放,必须等待2MSL(最长报文段寿命)的时间后,等客户端撤销相应的TCB后才进入CLOSED状态);

6.服务器收到客户端发出的确认后,撤销TCB,立即进入CLOSED状态,结束TCP连接。

6.思考

当SYN=1报文段时,不能携带数据,且需要消耗一个序列号;在客户端进入已连接状态时,ACK报文段可以携带数据,不携带数据的话,就不用消耗序列号。
(1)为什么是三次握手(而不是二次)?
主要防止已经失效的连接请求报文又传回服务器,从而产生错误,两次握手机制会让客户端和服务器再次建立连接,导致不必要的错误和资源的浪费。
(2)TCP服务端先开始创建TCB,先结束TCP连接。
(3)为什么建立是三次握手,关闭连接是四次挥手在建立连接时,服务器在LISTEN状态下,收到客户端发来的SYN请求报文后,把ACK和SYN放在一个报文中返回给客户端;而在关闭连接时,服务端收到FIN报文时,仅代表客户端不再发送数据但还可以接收数据,而服务器也未将数据发送完毕,而服务器一般会将ACK和FIN分开发送,从而导致多了一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值