首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
图解:TCP 和 UDP 协议
科技
2024-11-28 08:31
重庆
最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。
作用
首先:tcp和udp都是工作在传输层,用于程序之间传输数据的。数据一般包含:文件类型,视频类型,jpg图片等。
区别
TCP是基于连接的,而UDP是基于非连接的。
tcp传输数据稳定可靠
,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等
udp的优点是速度快
,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视屏直播等。udp还有一个非常重要的应用场景就是隧道网络,比如:vpn,VXLAN
以人与人之间的通信为例:UDP协议就相当于是写信给对方,寄出去信件之后不能知道对方是否收到信件,信件内容是否完整,也不能得到及时反馈,二TCP协议就像是打电话通信,在这一系列流程都能得到及时反馈,并能确保对方及时接收到。如下图:
TCP通信的过程
tcp是如何保证以上过程的:分为三个步骤,
三次握手,传输确认,四次挥手
。三次握手是建立连接的过程。
三次握手
当客户端向服务端发起连接时,会先
发一包连接请求数据
,过去询问一下,能否与你建立连接?这包数据称之为
SYN包
,如果对端同意连接,则
回复一包SYN+ACK包
,客户端收到之后,发送一包
ACK包
,连接建立,因为这个过程中互相发送了三包数据,所以称之为三次握手。
为什么要三次握手而不是两次握手?
这是为了防止,因为已失效的请求报文,突然又传到服务器,引起错误,
这是什么意思?
假设采用两次握手建立连接,客户端向服务端发送一个syn包请求建立连接,因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建立连接,客户端会重发syn包,这次的数据包正常送达,服务端发送syn+ack之后就建立起了连接。
但是第一包数据阻塞的网络突然恢复,第一包syn包又送达到服务端,这是服务端会认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致,如果在三次握手的情况下,服务端收不到最后的ack包,自然不会认为连接建立成功。
所以三次握手本质上来说就是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立起可靠的连接,经过三次握手之后,客户端和服务端都进入了数据传输状态。
数据传输
一包数据可能会被拆成多包发送,如何处理丢包问题,这些数据包到达的先后顺序不同,如何处理乱序问题?针对这些问题,tcp协议为每一个连接建立了发送缓冲区,从建立链接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1,发送数据时,从数据缓冲区取一部分数据组成发送报文,在tcp协议头中会附带序列号和长度,接收端在收到数据后需要回复确认报文,确认报文中的ack等于接受序列号加长度,也就是下包数据发送的起始序列号,这样一问一答的发送方式,能够使发送端确认发送的数据已经被对方收到,发送端也可以发送一次的连续的多包数据,接受端只需要回复一次ack就可以了如图:
四次挥手
处于连接状态的客户端和服务端,都可以发起关闭连接请求,此时需要四次挥手来进行连接关闭,假设客户端主动发起连接关闭请求,他给服务端发起一包FIN包,标识要关闭连接,自己进入终止等待1装填,服务端收到FIN包,发送一包ACK包,标识自己进入了关闭等待状态,客户端进入终止等待2状态。这是第二次挥手,服务端此时还可以发送未发送的数据,而客户端还可以接受数据,待服务端发送完数据之后,发送一包FIN包,最后进入确认状态,这是第3次挥手,客户端收到之后恢复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接,这是第四次挥手。
为什么客户端要等待超时时间这是为了保证对方已经收到ACK包,因为假设客户端发送完最后一包ACK包后释放了连接,一旦ACK包在网络中丢失,服务端将一直停留在 最后确认状态,如果等待一段时间,这时服务端会因为没有收到ack包重发FIN包,客户端会响应 这个FIN包进行重发ack包,并刷新超时时间,这个机制跟第三次握手一样。也是为了保证在不可靠的网络链路中进行可靠的连接断开确认。
UDP协议
udp:首先udp协议是非连接的,发送数据就是把简单的数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为udp这种简单的处理方式,导致他的性能损耗非常少,对于cpu,内存资源的占用也远小于tcp,但是对于网络传输过程中产生的丢包,udp并不能保证,所以udp在传输稳定性上要弱于tcp。
所以,tcp和udp的主要却别:tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页等等,udp的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高但是对少量丢包并没有太大要求的场景。比如:域名查询,语音通话,视频直播等。
udp还有一个非常重要的应用场景就是隧道网络,比如:vpn,VXLAN
http://mp.weixin.qq.com/s?__biz=Mzg3NDY4NDgyOQ==&mid=2247505560&idx=1&sn=51c1fb61c82de9b22b8e60537fdbb03f
计算科学与信息化
计算机网络与安全、区块链、人工智能、CV、VR/AR、数据分析挖掘、编程开发以及各种软硬件技术知识分享。欢迎关注计算科学与信息化!
最新文章
图解:TCP 和 UDP 协议
每个开发者都应该知道的11种数据结构
弱电工程师常用的网络命令整理-windows版,还不快收藏起来
【揭秘】华为设备ACL与NAT技术,一文教你如何配置
揭秘:网络设备如何自动解决地址冲突?
重庆超大城市数字化治理学院专职教师招聘公告
详解MPLS-VPN跨域的三中方式!
深入解析TCP协议:从基础原理到性能优化的全面指南
网络魔法师: SNAT 与 DNAT 如何悄悄改变你的数据包
这些 Linux 故障排查思路,助你破解疑难杂症,效率提升嗖嗖的
路由汇总的计算方法及与CIDR的区别!
Console口密码忘记了别慌,这样救急!
深入解析Docker容器网络:全面掌握配置与优化技巧
网工想搞懂容器网络原理,绕不开这经典的5张图!
为什么都说HTTP不安全,而 HTTPS 是安全的?
一个经典的网络内网故障排障全过程
学几招静态路由配置技巧,让你事半功倍!
交换机接口故障排查大全,终于来了!
还不懂什么是ACL?看完这篇干干货难道就没有不会写ACL的了!
运维跳槽必会的10个技能点,哪个是你的短板?
VXLAN技术普及难?这篇文章让你秒懂并看到其广泛应用前景"
高效运维工具箱:精选频繁运用的 10 款 Linux 运维神器
用几分钟的时间了解下IPV6地址的一些常识!
11款实用工具,是个网工,都已经低调安装了!
焊死!这38条命令还不会?难怪你的Windows那么费劲!
太实用了吧?手把手教你华为eNSP模拟器桥接真实网络!
46张图带你了解线缆、WIFI、以太网协议和网络寻址,赶紧收藏吧!
11款实用工具,是个网工,都已经低调安装了!
搞懂核心交换机,必须掌握的6个知识点!
运维网络故障排错全攻略,等你来完善!
TCP三次握手与Linux的TCP内核参数优化
DHCP安全防范及如何防止非法DHCP攻击!
2024 IntelliJ IDEA 安装和激活
一台新交换机能经历多少个配置?才能正式使用
交换机的三种vlan划分方法详解,划分vlan不再难!
网工秘籍:VLAN划分,守护饭碗的智慧之道
购买无线AP前,我们需要了解这些个知识点
一次看懂,TCP、UDP,流量控制,拥塞控制!
深入浅出HTTPS:全面解析网站安全的核心技术
什么是TCP三次握手和四次挥手,TCP协议详细解析!
POE供电的传输距离是多少?100米?250米?
ping三个不存在的IP地址后,你能得到……
有这套老司机排错方法,网络故障不再头疼!
搞懂核心交换机,必须掌握的6个知识点!
大型网络如何划分IP地址的,其实就这么简单!
网络卡顿?TCP连接重置背后的秘密!
有了这网络工程师重要知识点100条,我还怕软考过不了?
炸裂!这个抓包神器太好用了!
什么三网合一?三网合一如何建设?
U盘用什么格式好?FAT32、NTFS还是exFAT!
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉