说起通信网络,首先来看一个场景:

场景模式:

小明和小刚在闹市碰面。

小明对小刚大声喊道:“小刚,你好啊!”

小刚摇手答到:“你好,小明!”

就这么几句简单的话语里面,从通信角度能看到多少信息勒?

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浅谈通信网络(一)——引子的更多相关文章

  1. 浅谈通信网络(三)——TCP/IP协议

    简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...

  2. 浅谈C#网络编程(一)

    阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...

  3. 浅谈iOS网络编程之一入门

    计算机网络,基本上可以抽象是端的通信.实际在通讯中会用到不同的设备,不同的硬件中,为了能友好的传输信息,那么建立一套规范就十分必要了.先来了解一些基本概念 了解网络中传输的都是二进制数据流.  2.了 ...

  4. [Kubernetes]浅谈容器网络

    Veth Pair 这部分内容主要介绍一个设备: Veth Pair . 作为一个容器,它可以声明直接使用宿主机的网络栈,即:不开启 Network Namespace .在这种情况下,这个容器启动后 ...

  5. 浅谈C#网络编程(二)

    阅读目录: 异步IO 非阻塞式同步IO 基于回调的异步IO并发 异步IO 上篇提到用多线程处理多个阻塞同步IO而实现并发服务端,这种模式在连接数量比较小的时候非常适合,一旦连接过多,性能会急速下降. ...

  6. 前后端差异更小了——浅谈ES(ECMAScript)6

    2015年6月,ES6正式发布.至今一年多的时间内,各个浏览器也对支持ES6做出了很大的改善,所以同学们无需顾忌你写代码的浏览器不认识~ 这么久的东西一定早有大神剖析过,今天我们以一个后端菜鸟的视角重 ...

  7. 小E浅谈丨区块链治理真的是一个设计问题吗?

    在2018年6月28日Zcon0论坛上,“区块链治理”这个话题掀起了大神们对未来区块链治理和区块链发展的一系列的畅想. (从左至右,分别为:Valkenburgh,Zooko,Jill, Vitali ...

  8. Android项目实战(四十四):浅谈Postman (网络请求调试插件)

    前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.    在项目开发中,可以依赖此工具模拟API测试. 使用详解: 各种情况Api的模拟请求的Postman使用方 ...

  9. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

随机推荐

  1. java基础---Java---面试题---银行业务调度系统(线程同步锁、枚举、线程池)

    银行业务调度系统的项目需求:   模拟实现银行业务调度系统逻辑,具体需求如下:   Ø 银行内有6个业务窗口,1- 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口.   Ø 有三种对应类 ...

  2. python跨行 print:多用(),换行符\要小心,少用+或者不用(其它程序代码跨行用\就行,不能用括号)

    这两种是错的 # print '11' #       'tset3'#error # print '12' #       +'tset4'#error python跨行用()和\都能实现.+只是连 ...

  3. Android的stateListDrawable,layerDawable,clipdrawable,AnimationDarwable介绍-android学习之旅(五十五)

    StatelistDrawable资源 代码示例 <?xml version="1.0" encoding="utf-8"?> <select ...

  4. FreeMarker生成word的代码

     用于生成word用的freemarker工具类 package com.ucap.netcheck.utils; import java.io.File; import java.io.File ...

  5. 控件之combox

    一. combox显示     首先combox有两个属性来存储数据:DisplayMember(显示成员),ValueMember(值成员) ,DisplayMember是我们在combox界面上看 ...

  6. java对象大小

    Java对象的内存布局:对象头(Header),实例数据(Instance Data)和对齐填充(Padding) 对象头在32位系统上占用8B,64位系统上占16B. 无论是32位系统还是64位系统 ...

  7. 写的还不错的专题,android性能优化

    http://www.trinea.cn/android/android-performance-demo/

  8. 不要使用jQuery触发原生事件

    原文链接: DO NOT TRIGGER REAL EVENT NAMES WITH JQUERY! 原文日期: 2014年02月26日 翻译日期: 2014年03月2日 翻译人员: 铁锚 JavaS ...

  9. LIRe 源代码分析 2:基本接口(DocumentBuilder)

    ===================================================== LIRe源代码分析系列文章列表: LIRe 源代码分析 1:整体结构 LIRe 源代码分析 ...

  10. 【linux学习笔记之一】linux系统目录结构以及常用系统命令

    序 ???这破笔记也要序?? 昨天开始学linux,做好笔记以备日后翻阅 Linux系统目录结构图 bin  --主要用于存放二进制文件(如:命令文件) boot--引导目录 dev  --设备目录 ...