并不基础的基础——计算机网络笔记

并不基础的基础——计算机网络笔记

复习了一段时间的基础知识,略有所得,所以准备开这么一个坑,记录一些在学习计算机网络过程中的体会。还是老样子,我不准备把这个博客写成百度百科,我只想跳脱出基础概念,把实际的应用场景代入进去,总之就是再深入一点

目录

TCP协议和UDP协议有什么区别?


TCP协议和UDP协议有什么区别?

传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流,每一条 TCP 连接只能是点对点的(一对一)
用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文,支持一对一、一对多、多对一和多对多的交互通信

阿呆:为什么说UDP是不可靠的,那什么情况下UDP会丢失数据?
阿强:UDP丢包,不外乎发送方出了问题,或者接收方除了问题。在发送方,主要出问题的原因在于发送的报文超过了接收方缓冲区可接收的数据量,简单说就是一次寄了太多东西,买家家里放不下。那这里面又分为两种,一种是寄东西的频率太快了,另一种是寄的东西太大了,这两种方式都会导致买家,也就是接收方的缓冲区溢出。在接受方,主要出问题的原因可能是接收方的Socket未开启监听,简单说就是家里没人开门,买的东西都送不进去。解决办法也简单,发送频率过快的时候,就sleep一下线程,控制一下频率;发送的包太大时,要不就增加家里的容积(缓冲区),要不就把包裹切分。
总结
UDP的丢包原因:
1、发送的包过大
2、发送的频率过高
3、接收方监听接口没有打开
解决办法:
1、调整接收方缓冲区大小
2、发送线程适当休眠,降低频率

阿呆:那啥是流量控制?
阿强:TCP协议的发送端是个急性子的年轻人,总想着快点把手头的数据发完下班回家,但接收端老大爷家里也不是无限大的,一次发了太多东西过来,接收方就会被撑爆。为了能忙得过来,所以老大爷会把自己家里还剩余多少空间(缓冲区)用TCP报文段的方式发给发送方,发送方看到接收方发过来的窗口,就知道老大爷还能接受多少包裹。这个发送过去的剩余缓冲区大小,就是所谓的“滑动窗口”,可以用来进行流量控制。
阿呆:那这不也得等大爷回应了才知道吗?那我要是一开始就发一大堆东西过去,不得把大爷逼疯?
阿强:嘿嘿,你算是问到点子上了
阿呆:那咋办嘛?
阿强:别急,刚刚不还说了一个叫拥塞窗口的东西吗?就是用来干这事的。刚开始的时候啊,这个拥塞窗口很小,先发点零零碎碎的小东西给大爷,然后每接到一次大爷的反馈,就得寸进尺,变本加厉,以指数级的数据增长,这样速度就能很快提升啦
阿呆:那也得有个限度吧?大爷都老胳膊老腿的了
阿强:是啊,所以拥塞窗口会设置一个阈值,当发现老大爷忙不过来的时候(丢包),就赶紧把拥塞窗口重新设为1,并把阈值减半,这样下次大爷就不会再手忙脚乱啦
阿呆:那拥塞窗口和滑动窗口不一样大的时候呢,听谁的?
阿强:谁小听谁的
阿呆:???
阿强:嘿嘿嘿(#^.^#)
总结
滑动窗口:接收端发给发送端的缓冲区剩余大小
。通过这个窗口可以限制发送端的数据发送量,从而实现流量控制
拥塞窗口:为了避免TCP启动时发送的数据量太大,设定一个初始值为1的拥塞窗口,每次发送成功后以指数倍增。如果出现丢包,则将阈值减半,窗口置1,直到能够稳定发送不丢包
发送量为滑动窗口和拥塞窗口中的最小值

阿呆:你说了这么多,我还是没懂TCP协议有啥用?
阿强:这样,给你说个例子吧。ping过ip吗?
阿呆:看你ping过
阿强:... ...
阿呆:... ...
阿强:ping命令用到的就是TCP/IP协议族里面的ICMP协议,用于在IP主机、路由器之间传递控制消息
总结

ping命令就是TCP的一个应用

 

 

 



 

 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值