TCP与UDP对比

目录

对比两种写协议的不同:

1.在连接方式上

 2.在传播方式上

 3.在报文传输上

 4.在给上层提供的服务上

 5.协议首部的对比

TCP三次握手与四次挥手 

TCP三次握手

 TCP四次挥手


用户数据报协议UDP(User Datagram Protocol)传输控制协议TCP(Transmission Control Protocol)是TCP/IP体系结构运输层中两个重要协议。

运输层主要作用是实现端对端的连接,实现进程之间逻辑上的直接通信。

对比两种写协议的不同:

1.在连接方式上

UDP是无连接的通信方式


TCP是通过著名的**“三次握手”建立连接,“四次挥手”释放连接**。

 2.在传播方式上

UDP由于不建立连接,支持多播和广播

TCP由于每次通信需要建立基于TCP连接的可靠信道,且每次只能建立一条连接,因此只支持单播

传播方式上的区别

 3.在报文传输上

UDP协议中,对于应用层传输下来的报文不进行处理,保留报文的边界。在给报文加上UDP首部,进行发送。UDP接收方首部接收到UDP数据后,去除其首部,交付给应用层。所以,UDP是针对报文为单位进行处理的,也就是UDP是面向应用报文的。



在TCP发送方:

TCP协议会把应用进程交付下来的数据块(报文)看作是一连串无结构的字节流(TCP并不知道这些子节含义),将他们编号,并存储在自己的发送缓存中,TCP再根据发送策略,提取一定量的字节,加上TCP首部,构建成TCP报文进行发送。
对于接收方,同时进行两件事:
从所接受到的TCP报文段中,取出数据载荷部分并存储在接收缓存中,同时将接收缓存中的一些字节交付给应用进程。

所以,TCP是面向字节的。

报文传输处理上

 4.在给上层提供的服务上

UDP提供的是不可靠服务:
对于发送的UDP数据报,接收方在检测到其误码后直接丢弃,不做其他操作。对于发送方发送过程中出现分组丢失,也不做处理。因此其传输数据是不一定能使接收方全部收到数据,因此是不可靠服务


TCP提供的是可靠服务:
由于TCP字传输过程中需要建立连接,通过建立的可靠信道进行传输,因此不会出现传输差错,也就是误码、丢失、乱序、重复。因此可以保证发送端发送的数据接收端一定可以收到,是可靠传输

在这里插入图片描述

 5.协议首部的对比

由于UDP不提供可靠传输的服务,因此其首部只需要在网际层的基础上添加区分端口的子节,其首部比较简单。

在TCP中,需要提供可靠传输、流量控制、拥塞控制等服务,首部比较复杂,字段比较多。

协议首部对比

TCP三次握手与四次挥手 

TCP三次握手

        三次握手解决的问题:

  1. 使TCP双方都能确知对方的存在
  2. 使TCP双方能够协商一些参数(如窗口最大值、是否使用窗口扩大选项和时间戳选项和服务质量等等)
  3. 使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配

        三次握手建立的过程:

  1. 在打算建立TCP连接时,客户端向TCP服务器进程发送TCP连接请求报文段,并进入同步已发送状态
  2. TCP服务器进程收到客户端发送的TCP连接请求报文段后,如果同意建立连接,则向TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态
  3. TCP客户进程收到TCP连接请求确认报文段后,还要向TCP服务器进程发送一个普通的TCP确认报文段,并进入连接已连接状态

三次握手完毕

         第三次握手是否多余:

不多余,假如是两次握手。服务端接收到客户端发出的请求报文就会认为要请求建立新的连接,并且进入连接状态,但是客户端此时可能并没有发出建立连接的请求,该报文是由于某种情况迟到的请求,因此不会去向B端发送数据,服务端没有收到数据就会一直等待这样子会造成服务端白白浪费掉很多资源。

两次握手建立连接示例

 TCP四次挥手

四次挥手过程:

  1. TCP客户进程发送TCP连接释放报文段,并进入终止等待1状态
  2. TCP服务器进程会发送一个普通的TCP确认报文段并且进入关闭等待状态。期间通信进入半关闭状态,只能服务端到客户端单向发送数据。
  3. 剩余数据传输完成,TCP服务器进程会发送TCP连接释放报文段并进入最后确认状态。
  4. TCP客户端针对第三次挥手的报文段发送普通的TCP确认报文段,之后进入时间等待状态。此时TCP服务器进程收到该报文段后就进入关闭状态,而TCP客户进程还要经过2MSL后才能进入关闭状态。

可独断经过2MSL后才能进入关闭状态

 等待2MSL个时间后才关闭?,是否有必要?

若客户端发送完最后一次报文后,也就是第四次挥手后就直接进入关闭状态,此时若第四次挥手报文丢失,会导致服务器的超时重传
因为此时客户端又已经关闭,导致不接受该报文,因此服务器会一直不断重传,并一直处于最后确认状态无法进入关闭状态。所以客户端等待关闭是为了接收服务端的超时重传。

结论:TCP客户进程在发送完最后一个TCP确认报文段后,在经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文段都从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值