[网络]-网络通信原理

一:概述

本文为自己看阮一峰文章后的笔记.加入了一些自己类比的比喻.

原地址: 互联网协议入门

互联网的实现原理->五层模型.png

二.实体层(电脑)

实体层.png

全世界各个电脑想相互通信.首先要把各个电脑连接起来.
可以通过光缆.电缆.电磁波等连接起来.
这就叫做实体层.他主要规定了网络的一些电气特性.负责传送0/1电信号.

实体层类比.png

类比: 电脑 ==>> 人 && 0/1信号 ==>> 声音
每台电脑就像我们每个人.我们发出的声音就是0/1电信号

三.链路层(以太网)

单纯的0/1没有任何意义.链路层就是制定一套规则.让0/1变得有意义.

类比: 以太网协议 ==>> 语言协议
就像人发出声音.没有任何意义.
但是通过语言这个规则.让声音可以表达信息.

3.1.以太网协议

以太网数据包(帧).png

举例如语言规定 矮老虎油 这句话发音表达的意思是我爱你.
以太网也规定一组0/1电信号构成一个数据包.叫做. 每一帧分成两个部分: 表头(Head)和数据(Data)

表头: 包含 发送者.接收者.数据类型 ==>> 对应语言就是主语(我). 谓语(你). 语言类型(中文)
数据: 具体内容 ==>> 对应语言就是我爱你中的.

3.2.MAC地址

上面提到.以太网数据包中标头包含了发送者.接收者.那么如何标识发送者和接收者呢?

MAC地址.png

以太网规定.连入网络的所有设备.都必须具有网卡接口(理论上是唯一的也是必须有的).

数据包必须从一块网卡传送到另一块网卡.网卡的地址就是发送地址和接收地址.也叫做MAC地址.

每块网卡出厂的时候.都伴有独一无二的MAC地址.长度48个二进制单位.通常用12个十六进制数表示.

前6个十六进制数是厂商编号.后6个是该厂商的网卡流水号.

MAC地址类比.png

类比: MAC地址 ==>> 传声筒的杯子(如下图)
每个杯子上都有一个名字.标识这是你的杯子.

3.3.广播

3.3.1问题一:

但是一块网卡怎么知道另一块网卡的MAC地址呢.就像传声筒的一端杯子怎么知道另一端的杯子是谁的呢.

这个时候就有ARP协议可以解决这个问题.后面介绍.

3.3.2问题二:

就算我知道了对方的MAC地址.但我怎么准确的将帧发送给他呢.

以太网采用了一种很原始的方式.他不是吧数据包准确送到接收方.而是想本子网络内所有计算机发送.让每台计算机自己判断是否为接收方.

如: 电脑A像电脑B发送一个数据包.
那么电脑A会给子网络里所有电脑B.C.D.E.F都发送数据包.
然后电脑B.C.D.E.F电脑接收到数据包后拿到接收地址跟自己的MAC地址比较.如果相同就接收.不相同就丢弃.

广播类比.png

类比: 广播 ==>> 村喇叭
现在传声筒升级了.每个人手里的传声筒都连接村里的大喇叭
这是小明说了一句话.小明爱小红.发送给村喇叭.这句话包含了发送地址(小明).接收地址(小红).
然后村喇叭再向全村人广播这句话.
这时全村人都听到了这句话
小红一听.接受者是自己.那他就知道了小明对他说的内容了.
村里其他人听到后手里碗一摔.md.又撒狗粮.然后就无视这段话了.

四.网络层(IP)

以太网协议依靠MAC地址发送数据.理论上单单依靠MAC地址.上海的网卡就可以找到洛杉矶网卡了.

村喇叭在一个村传播还好.那要是全世界都用这一个喇叭.

那么30亿人每人用传声筒说一句话.那每个人都要听到30亿句话.那不炸了吗.

子网络.png

因此必须找到一个方法.能够区分哪些MAC地址属于同一个子网络.哪些不是.

如果是同一子网络.就采用广播方式发送.
如果不是就采用路由方式发送.

类比: 路由 ==>>省喇叭
就像一个人说一句话.要区分这句话的接收者是不是该村的.
如果是就用本村的村喇叭喊话.
如果不是就让村喇叭把话发给省喇叭(如果湖北省总喇叭).

遗憾的是MAC地址本身无法做到区分.他只与厂商有关.与所处网络无关.
这就导致了网络层的诞生.网络层作用就是引进一套新的地址>>IP地址

4.1IP协议

IP地址.png

IP协议规定每台电脑分配一个IP地址.他由32个二进制数组成.

习惯上我们会分成4段十进制数表示.从0.0.0.0一直到255.255.255.255

IP地址分成两部分.前一部分代表子网络(村喇叭).后一部分代表主机(每个人).

比如IP地址172.16.254.1.
那么172.16.254就标识子网络
最后的1标识主机
这个时候就可以知道与他同一子网的IP地址为172.16.254.xxx

4.2子网掩码

但是我们怎么知道前多少位标识子网络呢.
这个时候就引入了子网掩码.

子网掩码的 网络部分全部为1. 主机部分全部为0
如: 11111111.11111111.11111111.00000000
十进制:255.255.255.0

知道子网掩码我们就能判断任意两个IP地址是否是处于同一子网络.

4.3子网掩码使用方法

比如IP地址A: 172.16.254.1和IP地址B:172.16.254.233的子网掩码都是255.255.255.0

拿IP地址A和IP地址B分别与子网掩码进行AND运算(即运算.两个数都为1则为1.否则为0)

IP地址A:
10101100.00010000.11111110.00000001
11111111.11111111.11111111.00000000 AND运算
=======================================
10101100.00010000.11111110.00000000 >> 172.16.254.0

IP地址B:
10101100.00010000.11111110.11101001
11111111.11111111.11111111.00000000 AND运算
=======================================
10101100.00010000.11111110.00000000 >> 172.16.254.0

可以发现IP地址A和B的运算结果都是172.16.254.0.因此他们在同一个网络

假如一个姓氏一个村.比如小岗村的人都姓孙.
类比: AND运算 ==>> AND运算后发现两个人都姓孙
那么这个姓氏就是小明的子掩码.其他人拿自己的姓名与这个子掩码.就能得到是否是一个村的.

4.4IP数据包(帧)

根据IP协议发送的数据.就叫IP数据包.其中必须包括IP地址(姓氏).
但是前面提过以太网数据包只包含MAC地址(名字).
并没有IP地址的烂尾.那么是否需要修改数据定义呢?

不需要.我们可以把IP数据包直接放进以太网数据包Data部分.
完全不用修改以太网的规格.
这就是互联网分层结构的好处.

如下.蓝色为以太网数据包的Head.红色为以太网数据包的Data
我们将IP数据包直接放在以太网数据包的Data里

IP数据包(帧).png

类比: 增加IP地址信息 ==>> 相当于增加了姓氏

4.5分段

IP数据包:
Head长度为20-60字节.
Data部分.最长为65515字节.
整个数据包的总长度最大为65535字节.

以太网数据包的Data部分最长只有1500字节.
因此如果IP数据包超过了1500字节.他就需要分割成几个以太网数据包分开发送了.

类比: 数据分段 ==>> 一句话分段
此时小明向小红说一段话就相当于分了几次说.
先说: 我
再说: 爱
再说: 你

4.6ARP协议

即获取同一子网络的主机MAC地址的协议方法.

有两种情况:

4.6.1)情况一

如果两台主机不在同一子网络.那么事实上就没办法得到对方的MAC地址.只能把数据包传送到两个子网络连接处的网关(geteway)处理.

4.6.2)情况二

如果两台主机在同一个子网络.那么我们可以使用ARP协议.得到对方的MAC地址.
ARP协议也是发出一个数据包(包含在以太网数据包中).其中包含他所要查询的IP地址.
在对方的MAC地址这一栏.填的是FF:FF:FF:FF:FF:FF.表示这是一个广播地址.
他所在子网络的每一台主机.都会收到这个数据包.
从中取出IP地址.与自身的IP地址进行比较.如果相同.则回复.向对方报告自己的MAC地址.

五.传输层(端口)

5.1由来

有了MAC地址和IP地址.我们已经可以在全世界任意两台主机上建立通信.

接下来的问题是.同一台主机上有许多APP都需要用到网络.比如.你一边浏览网页.一边与朋友在线聊天.
当一个数据包从网上发来的时候.你怎么知道.他是表示网页的内容还是表示在线聊天的内容.

也就是说.我们还需要一个参数.表示这个数据包到底供哪个APP(进程)使用.
这个参数就叫做端口(Port).他其实就是每个APP的编号.

每个数据包都发到主机的特定端口.所以不同的程序能取到自己所需要的数据.

5.2端口

端口是0到65535之间的一个整数.正好16个二进制位.
0-1023的端口被系统占用.
APP只能选用大于1023的端口.
不管是浏览网页还是在线聊天.APP会随机选用一个端口.然后与服务器的相应端口联系.

现在传声筒又升级啦.每个传声筒的两端都有多个杯子.
类比: 端口 ==>> 传声筒一端的不同杯子
相当于你对着不同的杯口说话.对方就能分辨出来你说的是哪件事.(这比喻有点牵强.尴尬😓)

5.3套接字(socket)

传输层的功能就是建立端口与端口的通信.
相比之下.网络层的功能是建立主机到主机的通信.
只要确定主机和端口.我们就能实现程序之间的交流.
因此Unix系统就把主机+端口 叫做 套接字.
有了它.就可以进行网络APP开发了.

5.4UDP/TCP协议

现在.我们必须在数据包中加入端口信息.这就需要新的协议.最简单的实现叫做UDP协议.
其实就是添加一个端口信息的协议方法.

如下.蓝色为以太网数据包的Head.
红色和蓝色为以太网数据包的Data

我们将UDP数据包直接放在以太网数据包的Data里.
即将端口信息放在红色Head里

UDP/TCP数据包.png

除了UDP协议.还有另一个协议叫TCP协议.他们功能是一样的.

5.5UDP/TCP区别

UDP:
协议简单.容易实现.可靠性差.一旦数据包发出.无法知道对方是否收到.

TCP:
3次握手.4次挥手确保了可靠性.但是过程复杂.实现困难.消耗较多资源.

5.6UDP/TCP应用

对实时性要请高的场景:如实时会议.实时视频.多点通讯
这些场景如果用TCP.当网络不好会发生重传.画面会有延迟.甚至越堆越多.选择UDP就会好很多.

除了这些场景.其他都用TCP准备错.

六:应用层

应用层数据包.png

应用程序收到传输层的数据.接下来就要进行解读了.
由于互联网的开放架构.数据来源五花八门.
必须实现规定好格式.否则根本无法解读.
应用层的作用就是规定应用程序的数据格式.

比如.TCP协议可以为各种各样的APP传递数据.
如Email.WWW.FTP.HTTP等等.这些应用程序协议就构成了应用层.
这是最高的一层.直接面对用户.他的数据就放在TCP数据包的Data部分.

像平常我们都是使用HTTP协议获取传输数据.
其实也可以直接绕过应用层(HTTP协议)
直接使用传输层的TCP协议来获取传输数据.

类比: 应用层协议 ==>> 英语/日语/法语
? 应用层的各种协议就相当于各个国家制定的语言协议一样.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容