TCP & UDP
OSI七层中的传输层 or TCP/IP四层中的传输层
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道
一、传输层#
传输层位于OSI七层
中的第四层,TCP/IP四层
中的第三层
作用:
🔸 负责将上层应用数据进行分段
和重组
,并将他们组合成数据流形式(封装TCP报头或UDP报头)
🔸 提供端到端
的数据传输服务(使用了套接字:IP+端口号)
两个协议:TCP
和UDP
二、TCP#
TCP报头长度一般为20字节
,但可以变长至60字节。TCP报头有很多控制信息,用于可靠传输、差错控制、流量控制等。发送数据前,先要和对方TCP三次握手建立连接。
📌 使用TCP时必须小心,因为TCP是一个没有记录边界的字节流协议。
引发的问题:粘包现象。TCP本身并不提供记录结束标志:如果应用程序需要确定记录的边界,它就要自己去实现,已有一些常用的方法可供选择。
2-1 重要字段说明#
ACK:接收顺序号有效
SYN:对顺序号同步,用于建立连接
FIN:数据传输完成,终止连接
窗口:用于流量控制
2-2 TCP三次握手#
注意:发送方和接收方的seq不一定要从0开始,seq用于识别发送了多少字节
WireShark三次握手抓包分析
源IP: 172.16.254.100
目标IP:172.16.254.31
三、UDP#
UDP的报文格式:
源端口(2Byte) | 目标端口(2Byte) |
---|---|
段长(2Byte) | 校验和(2Byte) |
UDP报头长度共8字节
,开销极小,不连接对方,直接发送数据。
使用UDP协议的应用层协议有:DNS(端口号:53)、DHCP(端口号:67)...
四、TCP和UDP的比较#
传输控制协议(TCP) | 用户数据包协议(UDP) |
---|---|
面向连接 | 面向无连接 |
可靠传输 | 不可靠传输 |
开销大 | 开销小 |
流控以及窗口机制 | 尽力而为的传输 |
应用层协议对应的使用传输层协议以及端口号
作者:caojun97
出处:https://www.cnblogs.com/caojun97/p/16175992.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)