TCP和UDP

TCP传输控制协议(Transmission Control Protocol)
UDP用户数据报协议(User Datagram Protocol)

1、TCP和UDP的区别

抓住TCP的三个特点:面向连接、可靠和字节流。

1、TCP面向连接(三次握手,四次挥手);UDP是无连接的,即发送数据之前不需要建立连接。无连接状态,TCP需要维护连接状态,包括接收发送缓存,拥塞控制参数和序号与确认号的参数。
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达(超时重传,数据确认等方式);UDP尽力而为交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,没有边界限制,源源不断的通信;UDP是基于数据报的,接收端必须以数据报的长度为最小长度单位将内容一次性读出,否则数据将被截断。
TCP可以先将数据放入TCP发送/接收缓存区,可以一次性/多次发出/读取。UDP每写一次发送一次,每收一个,读取一个,否则丢包。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP逻辑通信的信道是全双工的可靠信道,UDP则是不可靠信道。

应用: UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

TCP用于不允许数据丢失场景,例如:文件传输,电子邮件等。

2、TCP和UDP头部字节定义

  • 源端口号和目的端口号:用于多路复用/分解来自或送到上层应用的数据。告诉主机报文段来自哪里,传给哪个上层协议或应用程序。

  • 序列号:该报文段首字节的字节流编号,用来解决网络包乱序问题。确认应答号:对发送来的TCP报文段的响应,值是收到的TCP报文段的序号值加1,用来解决不丢包的问题。序列号和确认应答号都用于实现可靠数据传输

  • 首部长度:标识TCP头部有多少字节,最长60。

  • 窗口大小:接收窗口,告诉对方本端TCP缓冲区还有多少空间可以接收数据,用来做流量控制。

  • 标志字段:ACK用于指示确认应答号值是否有效,置1表示包含一个对已成功接收报文段的确认;RST用于重置一个已经混乱的连接,或拒绝一个无效的数据段或者连接请求;SYN用于连接建立过程,请求建立一个连接;FIN用于断开连接,表示发送方没有数据要传输了。

  • 检验和:接收方使用检验和来检查该报文段(头部+数据)中是否出现差错(CRC算法),同UDP。

在这里插入图片描述

  • 目标端口和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。
  • 包长度:该字段保存了 UDP 首部的长度跟数据的长度之和。
  • 校验和:校验和是为了提供可靠的 UDP 首部和数据而设计,接收方使用检验和来检查该报文段中是否出现差错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值