小dai浅谈通信网络(一)——引子
说起通信网络,首先来看一个场景:
场景模式:
小明和小刚在闹市碰面。
小明对小刚大声喊道:“小刚,你好啊!”
小刚摇手答到:“你好,小明!”
就这么几句简单的话语里面,从通信角度能看到多少信息勒?
1.两个人: 小刚和小明
2.代表两个人的称呼“小明”“小刚”
3.由于是当面诉说,采用的传播介质是空气;
4.传播的信号是声波
5发生装置是声带、舌头、嘴巴
6.收听装置是耳朵
7.他们说的是中文,比如小明的发声“小刚”,小刚知道是在称呼自己。并且小明招呼完了,理应该小刚打招呼
8.发生了两次通话:
一次是小明对小刚;
另外一次是小刚对小刚
9.在此过程中,小明说话的期间,小刚是可以随时说话的
10.从小刚说话的顺序,不是先称呼,而是先说“你好”,明显有听到小明的招呼,并且因此也告知了小明,我有听到你的招呼。当然这个告知对方我有听到你的招呼,往往可以从肢体语言获知。
11.从小刚明显听到了小明的话来说,并且还在闹市之中,说明小刚的听力是完全没问题
12.由于当时在闹市,为了让对方能够准确听到自己的话,明显小明和小刚都放大了说话的分贝。
以上称述,如有疏忽,欢迎指正,后续再添加上。
对应在通信网络中是什么呢?
1.网络设备,比如路由器;
2.网络识别码,比如以太网的MAC地址
3.光纤、电缆或者空气;
4.一般是采用电磁波
5.发生装置,比如光模块、网卡等;
6.接收装置,一般同5;
7.采用的网络协议族,比如2G的GSM、3G的CDMA系列、WIFI的802..11系列什么的。
里面会包括调制/编码技术,决定能折腾出来多少信号代号,而每个信号代号代表什么意思;
也包括CSMA/CD、CSMA/CA等,指定双方通信规则,就像说话,这不能谁都讲话吧,这不上课老师,总说你有要说的,yes,要举手哦
8.端到端传输,就比如路由器和路由器两两之间直连的通信,或者你的手机和基站这种。
9.当前一般都是采用的异步/双工模式,也就是说端到端的传输可以随时发声,并且任何哪一端都可以随时发声。其他还有单工模式和半双工模式,同步传输模式,此处不再累述。
10/11/12点都属于狭义的QOS(服务质量)范畴,每种网络协议都有自己的QOS机制,由于我最熟悉TCP/IP协议族,在此通过TCP协议做个一一对应
10.TCP中,通过seq序列号来表示,我发送了多少数据;
然后对端再通过ack=seq(准确接受到的最后序列号)+1来告知对端自己准确接收到了哪些数据
11.TCP中,使用WINDOW机制来设定,一次连续传输的最大数据量大小。接收方会告知对方,我本地能接收到的数据块最大是多少,就是使用window这个参数来告知,而能接收数据块的大小,则由向操作系统申请的socket大小决定。发送方收到window后,会连续的一次性发送数个数据包,直到整个发送的有效数据的大小=或者小于window的大小。而何时下次再发送,请听下一文分解。
12.TCP中,使用拥塞窗口cwnd/慢启动等机制,可以控制发送方发送速率,有效适应当前网络环境情况。又如在WLAN里面,会根据网络情况,调整不同的键控技术等,来调整速率。
小dai浅谈通信网络(一)——引子的更多相关文章
- 浅谈通信网络(三)——TCP/IP协议
简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...
- 浅谈C#网络编程(一)
阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...
- 浅谈iOS网络编程之一入门
计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流. 2.了 ...
- [Kubernetes]浅谈容器网络
Veth Pair 这部分内容主要介绍一个设备: Veth Pair . 作为一个容器,它可以声明直接使用宿主机的网络栈,即:不开启 Network Namespace .在这种情况下,这个容器启动后 ...
- 浅谈C#网络编程(二)
阅读目录: 异步IO 非阻塞式同步IO 基于回调的异步IO并发 异步IO 上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降. ...
- 前后端差异更小了——浅谈ES(ECMAScript)6
2015年6月,ES6正式发布.至今一年多的时间内,各个浏览器也对支持ES6做出了很大的改善,所以同学们无需顾忌你写代码的浏览器不认识~ 这么久的东西一定早有大神剖析过,今天我们以一个后端菜鸟的视角重 ...
- 小E浅谈丨区块链治理真的是一个设计问题吗?
在2018年6月28日Zcon0论坛上,“区块链治理”这个话题掀起了大神们对未来区块链治理和区块链发展的一系列的畅想. (从左至右,分别为:Valkenburgh,Zooko,Jill, Vitali ...
- Android项目实战(四十四):浅谈Postman (网络请求调试插件)
前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 在项目开发中,可以依赖此工具模拟API测试. 使用详解: 各种情况Api的模拟请求的Postman使用方 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
随机推荐
- ios zxing扫码问题
在ios 中 扫瞄二维码,条形码基本有 2中第三方的库,一个是zbar 一个是zxing,zxing 在android中表现的比较出色,但是在ios 中不是很好用,扫瞄效率低,我们一般都用zbar,但 ...
- 修改android应用包名
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- SpringMVC源码分析--容器初始化(三)HttpServletBean
在上一篇博客springMVC源码分析--容器初始化(二)DispatcherServlet中,我们队SpringMVC整体生命周期有一个简单的说明,并没有进行详细的源码分析,接下来我们会根据博客中提 ...
- Android初级教程Activity小案例(计算器乘法运算)
首先设置两个布局文件,一个布局文件进行输入数据,获取加法运算:另一个布局文件进行显示最终结果.Activity1启动Activity2,并传递计算结果值给Activity2. main.xml: &l ...
- 【一天一道LeetCode】#118. Pascal's Triangle
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given n ...
- iOS编程中的音频知识(二):那么多种格式我应该用哪一个?
iPhone支持不少格式,比如AAC,HE-AAC,AMR,IMA4等等,你可以在以下网址看到比较全的格式和简要介绍: http://www.raywenderlich.com/69365/audio ...
- 【Unity Shaders】Reflecting Your World —— Unity3D中简单的Cubemap反射
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- 【linux】mkfifo 命令创建命名管道实现进程之间通信
mkfifo 命令 mkfifo命令创建一个FIFO特殊文件,是一个命名管道(可以用来做进程之间通信的桥梁) 管道也是一种文件,一般是linux中的一个页大小,4k,管道数据一旦被读取就没了.(管道大 ...
- Material Design之RecyclerView的使用(一)
Android 5.0开始就推荐使用Material Design这个设计语言,本文开始就逐一讲解Material Design中控件的使用.本章主要讲解RecyclerView,期中会带有ToolB ...
- 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)
膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...