计算机网络通讯原理

/ 默认分类 / 没有评论 / 454浏览

互联网

计算机网络是由通信介质将地理位置不同的且相互独立的计算机连接起来,实现数据通信与资源共享。场景化分析,假设有A,B两个蜘蛛网彼此独立,同在一个网上的蜘蛛是可以相互通信,蜘蛛网和蜘蛛网之间需要通过某种规定(协议)通讯交换资源。

因特网构成和网络分类

1.组成概念

因特网工作设备有主机,服务器,路由器,交换机,信号发射器,边缘部分。通过交换机连接电脑形成一个个子网,进而路由器连接零散的子网,分组转发消息,计算机之间交换数据,主机对交换数据进行信息处理呈现的。

2.网络连接方式

  1. 主机直接通过电路相连,但是传输效率不高,合适传输要求延时抖动小的实时数据;
  2. 采用以交换机为中心连接,无需建立连接即可通讯;
  3. 新型网络连接,组建子网,通过路由器转发资源,共享连接在网络上的数据资源;

3.网络分类

  1. 局域网,小型网络,一个公司,一个学校,一个家庭的网络设备组建的网络成为局域网,一般公司共用的wifi,学校校园网wifi,家庭wifi都是一个个局域网,同属于一个局域网内可以相互通信;
  2. 城域网,中型网络,一个地区,一个城市中的各个局域网连接起来组建成为城域网,一般一个市区的网络就是一个城域网;
  3. 广域网,大型网络,一个国家,一个国家中各个城域网连接组建称为的网络称为广域网,一般一个国家就是一个大型的广域网,我们正常不能直接访问别人国家的网络,因为伟大的祖国限制,如果需要访问外国网站借助第三方技术,俗称翻墙;

4.网络常用拓扑

  1. 总线型,常用于局域网入网;
  2. 星型和树型,常用于局域网,操作相对简单;
  3. 环型,常用于城域网,无中心依赖,有较强的灵活性和自愈能力,出现故障后能够快速定位并进行保护倒换,拓展困难;
  4. 格型,主要用于骨干网、广域网,灵活性和自愈能力较好,设计复杂;

性能指标和协议设计

1.协议

简而言之,协议就是一种约定,我们国家有很多民族,各个民族的语言不同,彼此间不可交流,所以引入普通话,各个民族可以通过普通话进行交流,每个网络传输的方式语言可能不同,所以需要通过协议来规约协调通讯。

2.要素

  1. 时序,实现顺序和速度匹配的详细说明;
  2. 语法,数据与控制信息的结构和编码等;
  3. 语义,发出控制信息,完成动作并做出特定的响应;

3.数据传输格式

报文格式是PPP帧格式,带有标志字段,地址字段,控制字段,协议字段,信息字段等数据信息。

4.协议模型设计

互联网协议分布设计有多种,osi七层模型,tcp/ip五层模型,tcp/ip四层模型,现在用途最广泛的模型就是五层协议模型,所以我们理解它就可以明白计算机底层通讯的原理,每一层都运行着一个特定的协议,共同组成互联网协议。

物理层

物理层主要通过双绞线,光纤,电缆,无线电波传输,信息传递的本质就是高电压(1),低电压(0)的电信号,通过调制解调器进行转化成为信号,最后通过传媒媒介进行传播。

1.常用术语

  1. 码元,表示数字信号时代表不同离散值的基本波形;
  2. 信号,数据表现转化为电信号或者电磁形态;
  3. 数据,运送的信息实体;

2.信道

  1. 单工通信,仅可以单方向传输;
  2. 半双工通信,双方交替通信,但是不可以同时发送;
  3. 全双工通信,双方可以同时发送接收;

3.传播介质

导向性

  1. 双绞线;
  2. 光纤和光缆;
  3. 同轴电缆;

非导向性

  1. 地面基站微波通讯;
  2. 卫星微波通讯;

4.信道传输速率

  1. 香农定理,有噪声信道信息传递速率公式;
  2. 奈式准则,无噪声信道数据传输速率公式;

数据链路层

物理层发送接收0和1是无意义的行为,例如:QQ中想给女朋友发送一句:“你是头猪!”随之转变成为0和1的比特流交给网卡,网卡直接懵圈。因为无目的地址和接收人信息,消息想要发送成功则需要通过以太网协议,需要解决介质访问控制和寻址的问题。

1.以太网协议(CSMA/CD)

以太网协议通过交换机或者集线器将电脑连接,使用广播信道发送MAC帧,其中帧分为:单播(一对一),广播(一对多),多播(多对多),帧数据格式如下:

每一个MAC帧由报头(head)和和数据(data)两部分组成,其中报头固定18个字节,发送者地址个接受者地址均为6个字节,数据域最短46字节,最长1500字节。MAC帧中的目的地址和原地址所指的是MAC地址,MAC地址是网卡唯一的物理地址,网卡被生产时就烧录一串12位16进制码在卡里。通过MAC地址可以寻找到对应的电脑,发送数据帧到交换机,交换机默认会发送广播类型的数据帧,广播就相当于给所有连接的电脑发送数据帧,每一个电脑都将响应一个单播传回交换机,所以交换机记住连接电脑网卡的MAC地址。

网络适配器(网卡)

串行/并行在计算机内部,具有简单的数据缓存,实现以太网协议,网卡是操作系统设备驱动程序,为系统高级协议栈提供服务。

交换机

按道理说电脑跟电脑直接连接网线(集线器)就可以相互通讯,但是大多数电脑仅有一个网卡,那么一台电脑仅能连接一台电脑,所以引入交换机,交换机就是负责将局域网的电脑相互连接,通过以太网协议中的MAC地址,交换机就能确定一台电脑的网口,电脑信息资源通讯均需要通过网口,传输数据。

显而易见,广播方式十分原始,基本通讯就是类似于靠拿着大喇叭喊话,连接交换机在同一台交换机的电脑懂能够听到,但是这些电脑默认屏蔽不关于自己的话。场景化分析一下,电脑a想给电脑b发送一个报文,报文中写有电脑b的mac地址,此时通过交换机发送给每一个连接在交换机上的电脑,电脑b发现该报文是关于自己则接收,其他电脑默认屏蔽。如果把全世界的电脑都连在一个局域网下,那么一个人发消息,这个消息就会发送给64亿台电脑,网络会瞬间瘫痪,这个现象叫做广播风暴。所以需要引入城域网,广域网的概念!

2.面向连接(PPP协议)

点对点面向连接协议,使用最广泛的数据链路层协议,主机拨号接入因特网一般都是使用PPP协议,PPP协议由链路控制协议LCP和网络控制协议NCP构成。用户拨号接入ISP,路由器调制解调器确认拨号报文并建立物理连接,用户主机向路由器发送LCP分组的PPP帧,路由接收处理,网络层配置,NCP为主机分配一个临时的IP地址,使用户主机成为因特网上的主机。家庭的路由器一般内置PPP协议,安装人员进行拨号入网,验证通过后你才可以使用WIFI并联网使用!

网络层

相互独立的局域网之间是不可以直接通信,需要通过路由器进行连接转发,路由器通过IP地址查找到对应的子网下的计算机,网络层IP协议需要几个辅助协议,几个协议的功能和名称如下:

  1. 地址解析协议ARP,负责通过IP获取到网卡的MAC地址;
  2. 逆地址解析协议RARP,负责通过MAC获取IP地址;
  3. 网际控制报文协议ICMP,检测网络故障报文;
  4. 网际组管理协议IGMP;

1.路由器

交换机组建局域网,研究MAC地址,路由器负责组建广域网,研究IP地址。路由器可以根据IP网段查找对应的子网,路由器通过路由表寻址,路由器与相邻连接的路由器连接时会告诉对方掩码信息。

2.IP地址

目前普遍使用IPV4协议,其中规定,一个网络地址由32位二进制组成,32位平均分成四份,一个份8位二进制,一个部分所能表示0-255的数值,一个IP地址分为两个部分:网络号和主机号,网络号决定地址,主机号决定计算机。

3.子网掩码

掩码和IP地址相似,32位二进制表示,子网掩码也分为网络部分和主机部分,网络部分由1构成,主机部分由0构成,子网掩码用于判断IP是否属于一个局域网(网关或者网段),如果存在于一个局域网内则直接通讯,如果不在用一个局域网则会经过路由器转发到对应的网段。根据子网掩码和IP地址可以通过运算得到网关地址。

IP1: 172.13.4.58
IP2: 172.13.4.90

子网掩码均为:255.255.255.0(24位掩码)

IP1:172.13.4.58
10101100 00001101 00000100 00111010
子网掩码:
11111111 11111111 11111111 00000000
&运算结果:
10101100 00001101 00000100 00000000(172.13.4.0)

IP1:172.13.4.90
10101100 00001101 00000100 01011010
子网掩码:
11111111 11111111 11111111 00000000
&运算结果:
10101100 00001101 00000100 00000000(172.13.4.0)

计算结果得到相同的局域网(网段)内,可以直接进行通讯,不需要出网关经过路由器跳入其他子网。因为相互通讯的计算机属于同一局域网!

4.ARP协议

存在于数据链路层和网络层之间的协议,ARP基于广播网络,解决IP地址到MAC地址之间映射关系(局域网上主机或者路由器中IP地址和MAC地址映射关系),每个使用IP的主机都存在一个ARP高速缓存协议,如果主机A想要向局域网内主机b通信,如果主机A中未存在主机b的MAC地址,则主机a进行广播ARP报文给连接的所有主机,主机b发现a发送的ARP报文中带有自己的IP,所以回应a主机一个单播并携带MAC地址,a主机将存入b主机的MAC主机,a主机和b主机开始通讯!

5.ICMP协议

ICMP作为IP协议栈的一部分且报文封存在IP分组中,每一个系统均要实现ICMP,可能在传输过程中经过很多个物理子网才可以到达最终目的地,ICMP报文通常用于检测网络是否存在故障,PING一台主机就是发送ICMP报文。

6.场景化分析

以太网的数据帧包含有自己MAC地址目标MAC地址,局域网(子网)内,通过ARP协议广播获取到所在局域网的电脑的MAC地址,假如a电脑172.13.4.58需要发消息给b电脑172.13.4.90,首先需要判断目的IP是否属于同一子网,直接广播发送数据报文,报文情况如下:

自己MAC:1a:2f:6c🇪🇪39:5d
目标MAC:ff:ff:ff:ff:ff:ff  // 未知对方MAC
自己IP:172.13.4.58
目标IP:172.13.4.90

子网内交换机ARP报文获取得到目的IP对应的MAC地址,随之将消息发送给目的电脑,目标电脑响应一个报文,其中带有自己的MAC地址返回给a电脑,这时a电脑下次发送报文则带有b电脑的MAC地址。如果a,b电脑不在同一个网络则a电脑的报文发送给网关,网关交给路由器,转发到b电脑对应的子网。

传输层

前三层已经基本实现计算机通讯,但是我们计算机通常开启很多程序,例如QQ,微信,LOL程序,软件都需要进行网络传输,我们无法进行区分数据是具体送达哪一个程序,这时引入传输层,传输层定义端口的概念,每一个程序占用一个端口。传输层有两大协议TCP和UDP,根据IP实现数据传输,通过端口确定发送给某个进程。

TCP协议

面向连接的可靠传输,提供全双工信道,面向字节流,TCP数据报文没有长度限制,但是为了保证网络效率,通常TCP报文不会太长,TCP报文头部主要是源端口和目标端口,TCP协议将客户端和服务端的socket套接字连接,连接过程需要进行三次握手,进行传输数据,断开连接需要进行四次挥手!

三次握手

四次挥手

UDP协议

无连接的不可靠传输,报文头部一共只有8个字节,总长度不超过65535字节,不会出现重传的现象,传输只管发送,不在乎目的地址是否收到。

应用层

用户软件均工作与应用层,应用层规定数据的格式,TCP协议可以传递多种格式数据,HTTP协议规定网页数据格式,FTP协议规定文件传输格式,多种应用协议构成应用层,连接应用层和传输层的技术API叫套接字socket,应用通过调用socket接口实现对网络层和传输层的数据封装,为应用进程之间建立通信连接。

总结

数据传输就是发送方封装数据报文接收方拆开数据报文的过程

场景化分析

我们在谷歌浏览器地址栏输入huasenjio.top域名时回车时,浏览器向服务器请求资源到展示页面,大体上分为如下几个步骤:

  1. 浏览器判断/校验/补齐,判断用户输入地址是否合法规范,补齐未输入的http协议,参数编码等操作;
  2. 通过DNS解析IP地址,浏览器优先查询缓存中是否存在huasenjio对应的IP地址,存在则将IP赋值给请求头中Remote Address参数,假设不存在,则查询HOST文件是否预设huasenjio.top对应的IP地址,如果仍未找到则请求电脑设置的DNS服务器,国外较为出名谷歌DNS服务器8.8.8.8,国内比较出名南京国风114.114.114.114,浏览器发起网络请求,首先在应用层对报文进行封装DNS协议信息,其次传输层UDP协议对报文进行封装相关信息,网络层IP协议封装相关信息,根据子网掩码和IP进行与运算发现不等于网关则说明不属于一个子网,直接发送至a网关路由器,数据链路层中路由器根据ARP协议进行地址解析,广播报文,收到播回应,形成路由表(IP对应MAC地址),进行将报文封装成为MAC帧,根据CSMA/CD报文对应转化为物理层的曼切斯特编码,比特流通过传输介质传输到下一个路由器处理,如此重复,最后进入8.8.8.8所在的子网的b网关路由器中,b网关路由器获取到报文,通过ARP协议根据IP获取到对应的MAC地址,之后进入对应网卡中,再进行逆序解析,由物理层网上至应用层一点一点拆开封装分数据,最后请求到对应的程序,获取得到huasenjio所对应的IP地址;
  3. 浏览器获取到huasenjio对应的47.98.129.109(IP地址),首先将IP赋值给HTTP请求头中Remote Address参数,进入传输层TCP报文封装信息,进而进入网络层封装IP协议信息,根据子网掩码和47.98.129.109进行与运算发现不等于网关则说明不属于一个子网,直接发送至a网关路由器,进入数据链路层中路由器根据ARP协议进行地址解析,广播报文,收到单播回应,形成路由表(IP对应MAC地址),进行将报文封装成为MAC帧,根据CSMA/CD报文对应转化为物理层的曼切斯特编码,比特流通过传输介质传输到下一个路由器处理,如此重复,进入到47.98.129.109对应子网的c网关路由器,通过ARP协议根据IP获取到对应的MAC地址,之后进入对应网卡中,再进行逆序解析,由物理层网上至应用层一点一点拆开封装分数据。往返进行相互发送报文,俗称三次握手,建立TCP连接,开始传输数据;
  4. 浏览器解析HTMLl源码标签,根据标签嵌套创建DOM树,并行加载静态资源文件,每一个HTML标签都是文档树中的一个节点,构成了由documentElement节点为根节点的DOM树;
  5. 浏览器解析CSS代码,计算得出样式数据,非法的语法被直接忽略掉,解析CSS时按照优先级浏览器默认设置 < 用户设置 < 外链样式 < 内联样式 < !important的规则解析,构建CSSOM树;
  6. js引擎进行注册事件操作,并将DOM和CSSOM树合成渲染树,最后通过渲染引擎渲染;
  7. 如果渲染树中的节点被移除、位置改变、元素的显示隐藏等属性改变都会重新执行上面的流程,这一个行为称为回流;与重绘不同,重绘是渲染树上的某一个属性需要更新且仅影响外观、风格,不影响布局,例如:修改background-color就属于重绘只是重新绘制到屏幕中上,回流必定造成重绘;