传输层(udp和tcp协议)

本文详细介绍了UDP和TCP两种传输层协议。UDP是无连接、不可靠、面向数据报的协议,提供了简单高效的数据传输,但需要在应用层处理可靠性和包序管理。TCP则是一种面向连接的、可靠的、基于字节流的协议,通过三次握手建立连接,四次挥手断开连接,具备可靠传输和性能挽救机制,如快速重传、滑动窗口、拥塞控制等。

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

目录

UDP协议

UDP协议格式

UDP特性

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

TCP协议

协议格式

协议特性

三次握手,建立连接

四次挥手,断开连接

可靠传输

性能挽救

快速重传

滑动窗口机制

拥塞机制

延迟应答

捎带应答机制

面向字节流

tcp粘包问题

补充


Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是是TCP该协议几乎做了所有的事情。

UDP协议

Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

UDP协议格式

16位源端端口 16位对端端口
16位数据报长度 16位校验和
数据 数据不超过64K-8(报头长度)字节

源端端口和对端端口描述了是哪两个进程之间在进行传输

16位数据报长度:限制了数据长度

16位校验和:利用反码求和算法确保数据发送的准确性

反码求和算法:从第0个字节开始(包含报头)对每个字节取反求和,超出16位的,将高位截断与低16位继续求和。

UDP特性

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

无连接:udp通信,不需要建立连接,只需要知道对方的地址就能给对方发送数据

不可靠:udp没有任何的丢包检测机制,也没有重传机制和包序管理机制,他不能够确保数据安全、有序到达对端(需要程序员在上层进行设计)

面向数据报:它是一中有最大数据限制的传输方式,整条交付

 注意:因为udp是面向数据报的,必须保证sendto发送的数据长度必须小于64k-8个字节

在recvfrom时,给的空间足够大,否则可能接收失败。

udp如何实现可靠传输?
需要程序员在应用层进行处理:

1.包序管理:给每个数据报进行编号

2.进行丢包检测:实现确认应答机制和超时重传机制

TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议

协议格式

 源端端口和对端端口描述通信两端

32位序号和确认序号实现tcp的包序管理以及确认应答机制

4位报头长度:以4字节为单位,描述tcp的报头长度(0~40字节的选项数据)最大60字节,最小20字节,解析tcp报头时,先取出固定长度20字节,然后根据报头长度-20取出指定的选项数据。

6位保留:暂时没用

6位标志位:用于识别报文类型

<

URG-紧急指针有效位

ACK-确认应答标志位
PUSH描述尽快取出报文
RST重置连接标志位(服务器收到非法请求或者连接错误)
SYN-建立连接请求标志位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值