Linux——网络(传输层—UDP、TCP协议)

本文深入探讨了UDP和TCP协议的实现、特点和编程影响。UDP是无连接、不可靠、面向数据报的协议,适用于数据量小且实时性要求高的场景。TCP则是面向连接、可靠传输的协议,提供了有序、安全的数据传输服务,适用于需要保证数据完整性的应用。编程时,需要注意UDP的分包与包序管理,TCP的连接管理和滑动窗口机制等细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、UDP协议

1.UDP协议实现

2.UDP的特点

3.编程影响

二、TCP协议

1.TCP协议实现

2.TCP协议特性

面向连接:TCP的连接管理

可靠传输:确保数据完整有序到达对端

面向字节流:提供字节流传输服务——有序、可靠、基于连接、双向的一种以字节为单位进行的传输方式

3、编程影响:


一、UDP协议

1.UDP协议实现

详细介绍:

  • 16位源端端口 + 16位对端端口:用于标识进程,描述主机上的通信两端进程
  • 16位数据报长度:用于描述一个完整包含头部的UDP报文长度所能存放的最大大小是65535,也就要求一个UDP报文大小必须小于64k(因为UDP报头长度是8字节,因此要求sendto发送的数据大小必须小于64k-8)
  • 16位校验和:采用二进制反码求和算法,校验接收到的数据与对方发送的数据是否一致
  • 二进制反码求和算法:发送方最初校验和字段设置为0,然后将报文从起始处每个字节取反相加,多出16位的部分截断取出来对低16位相加,最终得到一个校验和的值,填充到校验和字段
  • 接收方接收到数据以后,从起始处反码求和,最终能得到0表示数据一致,非0表示数据不一致

2.UDP的特点

无连接、不可靠、面向数据报 

无连接:知道对端IP地址和端口号就直接进行传输,不需要建立连接

不可靠:不保证数据有序传达,不保证数据安全到达(没有丢包检测机制和数据排序机制

面向数据报:描述的是一种有最大固定长度限制的传输方式

3.编程影响

  1. 如果传输的数据比较大,则需要程序员在应用层进行分包操作(将大数据分成多个小数据进行传输)
  2. 如果进行了分包操作,则需要程序员在应用层进行包序管理(应用层协议头中定义当前的包序)
  3. 数据报传输发送数据时,数据直接封装头部进行发送,接收方UDP向上层交付数据时是整条交付(不会交付半条或多条),因此,recvfrom接收数据缓冲区空间必须给的足够大,能够放下一整条完整的数据

额外优点:因为无连接,因此UDP支持局域网广播传输(将数据发送给局域网广播地址,则表示将数据发送给局域网中所有主机)

二、TCP协议

1.TCP协议实现

  • 16位源端口号 + 16位目的端口号:描述通信两端
  • 32位序号 + 32位确认序号:实现TCP传输的包序管理以及确认应答
  • 4位头部长度:以4字节为单位表示TCP报头最大长度为60字节,最小固定20字节,先取出20固定头部长度,根据头部中的头长,取出剩余长度选项数据,剩下的就是要交付的数据
  • 6位标志位:
    1. URG:紧急指针是否有效
    2. ACK:确认号是否有效</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值