请选择 进入手机版 | 继续访问电脑版
切换皮肤
计算机网络之基础篇
什么是计算机网络?
主机之间通过交换网络互连,交换节点一般是路由器或者交换机。
什么是网络协议?
为进行网络中的数据交换而建立的规则、标准或约定。
协议的三要素是什么?
语法、语义、时序。
计算机网络的结构?
网络边缘:主机(端系统)、网络应用
主机(端系统):运行网络应用程序。
客户/服务器(C/S)应用模型:客户发送请求,接受服务器响应。
对等(P2P)应用模型:不用依赖专用服务器;对等实体之间直接进行通信。
接入网络,物理介质:有线或无线通信链路,将网络边缘接入核心网络
带宽(bps):网络中指数据传输速率,Mb/s。
无线局域网(LANs):wifi。
广域无线接入:通过电信运营商,3G、4G。
网络核心:互联的路由器(或分组转发设备),将数据从源主机通过网络核心发送到目的主机
关键功能:路由+转发。
路由:确定分组从源到目的传输路径,路由算法。
转发:将分组从路由器的输入端口交换至正确的输出端口,本地转发表。
数据交换?
构建:
最简单的就是任意两台主机之间建立一条链路:O(N^2)。
然后一个交换设备,让每台主机都通过链路连接:如果主机规模很大,交换设备端口不够用;如果主机与交换设备过远,无法保证连通性。
把交换设备连接到一起,构造成交换网络,让每台主机与交换网络中的某台设备连到一起。
什么是交换?
动态转接: 数据通过交换设备从一个端口转到另一个端口,而且可以在多组端口之间并行。
动态分配传输资源:数据从源主机穿越交换网络送达正确的目的主机 。
数据交换的类型?
1.电路交换—>典型的电话
选好链路占好资源。
资源独占,不能被第三方共享。
电路交换网络的链路共享:多路复用。
.报文交换
源(应用)发送信息整体,比如一个文件,完整的发到下一个站点。
.分组交换
分组:报文分拆出来的一系列相对较小的数据包头+数据。
需要报文的拆分和重组。
产生额外开销:时间开销必不可少,通常在计算机网络中源主机和目的主机之间进行的,拆分重组开销不严重。
4.报文交换与分组交换均采用存储–转发交换方式
路由器将数据分组完整的接收过来暂存一下,再决定怎么转发,转发的链路可用了,再发出去。
丢包:队列缓存容量有限,分组到达已满队列,到达分组被丢弃--丢包(loss)。
5.报文交换的效率高于分组交换
报文交换是串行,而分组交换很多分组之间是并行的,而且相比之下路由器需要的缓存更小。
6.分组交换VS电路交换,可支持更多用户同时使用网络,网络资源充分共享
大家建立连接后,一般不一直传送数据,一段时间根本不用网络,平均活动时间较少。
分组交换是统计多路复用。
7.分组交换不是绝对优于电路交换
分组交换更适用于突发数据传输网络。
资源充分共享;简单、无需呼叫建立,事先占好资源。
可能产生拥塞:分组延迟和丢失,需要协议处理可靠数据传输和拥塞控制。
网络性能的评价
速率:数据传输速率或比特率(单位时间传输比特量),最重要的一个性能指标。
带宽:原指信号具有的频带宽度,单位是赫兹。在计算机网络中,指数字信道所能传送的“最高数据率”。
延迟/时延:分组在路由器缓存中排队,分组到达速率大于输出链路容量时
结点处理延迟:差错检测、确定输出链路可用。
排队延迟:等待输出链路可用、取决于路由器拥塞程度。
传输延迟(发送一个分组需要的时间):分组长度L、链路带宽R, d=L/R。
传播延迟:物理链路长度、信号传播速度。
丢包率: 丢包数/已发分组总数。
吞吐量/率:表示在发送端与接收端之间传送数据速率(b/s),取决与端到端路径之间的瓶颈链路(速率最小的链路)。
计算机网络体系结构?
从功能上描述,分层结构,每层完成本层功能,体系结构是抽象的。
为什么分层?
结构清晰;模块化的分层易于系统更新、维护;有利于标准化。
因为每一层要完成的功能是不同的,解决的问题是不一样的,比如要传递可靠数据(传输层)、先要实现能传递数据(网络层)、传递之前要保证两台机器之间能发数据包(数据链路层),所以分层的方式是将功能划分给每一层去实现部分功能,下层协议为上层协议提供帮助,相互配合。
协议是控制两个对等实体进行通信的规则的集合,协议是“水平的”。
任一层实体使用下层服务,实现本层功能,向上层提供服务,服务是“垂直的”。
下层协议的实现对上层的服务用户是透明的。
网卡是什么?
网卡:网络适配器,插在(或者集成在)主板上的硬件设备,每个网卡都有一个全球唯一的标识,从一生产出来就确定了,48位,叫做MAC地址,如11:27:F5:8A:79:54。
网卡属于OSI模型中的物理层和数据链路层,网络层以上的部分则由操作系统中的协议栈实现,所以TCP/IP协议栈其实只包含了网络层和传输层。
网卡是怎么工作的?
首先需要一个IP地址,用到DHCP(动态主机配置协议,集中管理、分配IP地址)。网络里有DHCP服务器,动态的分配地址,CPU写好报文。首先是一个应用层的DHCP报文,然后被DUP报文封装(目的地端口:67,源地址端口:68),之后再被IP数据报封装(目的地址:255.255.255.255,源地址:0.0.0.0)。
网卡是数据链路层的,需要知道MAC地址才能发送到指定对方,如果不知道就发广播。然后又把数据报封装了一下,广播到同一子网内的所有电脑,目的地址就是FF:FF:FF:FF:FF:FF。
然后网卡通过网线把报文发到交换机,交换机将报文转发到所有连接到交换机的设备。过一会,交换机转来报文,就是DHCP服务器发来的。然后网卡广播发送一个报文确定要哪个IP,之后DHCP再回一个报文,包括网卡的IP、网关路由器的IP、DNS服务器IP。
如果系统重启之后,这个获取IP的步骤需要再走一遍,除非用户手动的配置IP地址、网关、DNS,但是这样很烦还容易出错,所以一般情况下都是自动的用DHCP搞定一个IP。
怎么访问百度?
要想互联,不仅自己要有IP地址,还要知道对方的IP地址,比如访问www.baidu.com,要先经过DNS查询,知道它的IP。
DNS服务器不在局域网内,我们将报文发送到网关路由器,由网关路由器想办法转给DNS服务器。那么网关路由器的MAC地址在哪呢?这时候需要用到ARP(地址解析协议),通过广播查询一个IP地址对应的MAC地址,得到网关路由器的MAC地址,网卡只需要将DNS查询发送给网关路由器即可。之后就没网卡的事情了,网卡只能管局域网的事情,出了局域网,就是路由器的事情了。
出了局域网之后的事情呢?
现在来看网关路由器,我还在想为什么叫网关呢?在网上看到的解释是大家想上网,一定得经过这一关,所有的对局域网之外的访问必须得经过网关。
网关直接和ISP(网络服务供应商,比如联通)的网络相连,得到一个外网地址。
NAT(网络地址转换)
网关路由器不仅是个路由器,还是个DHCP服务器,掌握着整个局域网的IP生杀大权。局域网内的主机拿着内网IP是无法直接上网的,这个地址只有局域网的网关才知道,像百度这样的网站根本就不知道;即使知道了也没用,世界上无数的路由器都会分配192.168.xxx.xxx这样的地址,也不知道到底要找哪一个。
那怎么通过网关路由器上网呢?下面看过程:
比如某个网卡想访问百度,它通过交换机给网关路由器发来一个数据帧,如:
以太网帧:
目的地:88:25:93:97:E0:C8
源地址:11:27:F5:8A:79:54
IP数据报:
目的地:115.239.211.112
源地址:192.168.1.2
TCP报文:
目的地址端口:80
源地址端口:3345
HTTP报文:
GET /
发过来之后,网关路由器这样处理:它把数据链路层去掉,发现IP数据包中的目标地址是115.239.211.112,可以知道这是要向外网发出请求了,网关路由器把源IP地址换成从ISP那里拿来的外网IP,再创建一个新的端口号将TCP数据包中的源端口也替换掉,之后数据包就换成了下面这样:
IP数据报:
目的地:115.239.211.112
源地址:61.52.247.112
TCP报文:
目的地址端口:80
源地址端口:2001
HTTP报文:
GET /
总之就是网关路由器将源IP地址和源端口都替换了,目的就是让外网认为这是路由器发出的,他们根本不知道什么某一块网卡。之后再给IP数据报封上数据链路层的头,将数据包发送给服务商的网络,剩下的事情就不用管了。
这个替换源地址和源端口的小把戏就叫做网络地址转换,简称为NAT。
当然不止一台电脑通过网关路由器上网,还有很多别的电脑,所以网关路由器将这些转换关系记录下来,形成了NAT转换表,如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2FKET1R5vYvXa3m8NX5PMxzjJYjm0dEVTowG12UaC6TWmx%3D1570602560706.jpg

PS:路由器上的WAN口是用来连接外网的,或者说连接宽带运营商的;LAN口(1、2、3、4)是用来连接内网中的设备的。
接着说,当百度那边的回复通过别的路由器转到网关路由器这里,需要反过来处理:首先去掉数据链路层的头,发现IP和TCP数据报中包含这样的信息:目的IP:61.52.247.112,端口:2001,这时候网关去查表,找到了192.168.1.2:3345,就知道这是给哪一块网卡的数据包了。就再次把数据报中的IP地址和端口号改了,让网卡认为这个数据包是网关发的。
就这样,网关用一个外网的IP支持了局域网内多个电脑的上网需求,并且他们根本不知道怎么回事!
NAT弊端
NAT使IP会话的保持时效变短。一个会话建立后会在NAT设备上建立一个关联表,因为IP和端口资源有限,通信的需求无限,所以必须在会话结束后回收资源。
NAT在实现将多个内部主机发出的连接复用到一个IP上,这样使得依赖IP进行主机追踪的机制失效了。NAT隐蔽了通信的一端,把简单的事情复杂化了。
NAT工作机制依赖于修改IP头部信息,这会妨碍一些安全协议的工作。NAT篡改了IP地址、端口和校验和,这会导致认证协议彻底不能工作,因为认证的目的就是要保证这些信息在传输过程中没有发生变化。
NAT穿越
在P2P模式下,比如电驴,机器不仅仅是客户端,同时也是一个能够接受请求的服务器。但是其他人怎么能连上它呢?外网的人不知道它的IP地址呀。
解决方案是这样的,网卡可以主动的请求网关建立一个NAT映射,比如(192.168.1.2 : 4096) <-> (61.52.247.112: 3001),保存到NAT表中,当有外网连接到来时,网关负责把连接请求转发到指定主机。这其实是UPnP。

回复

使用道具 举报

0

主题

5

帖子

34

积分

新手上路

Rank: 1

积分
34
发表于 2021-4-24 18:55:15 | 显示全部楼层
沙发
本帖最后由 立陶宛文 于 2021-5-31 16:49 编辑

真是 收益 匪浅逆按揭計算
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    Archiver|手机版|小黑屋|齐聚无忧 |网站地图

    Powered by Discuz! X3.4  © 2001-2013 Comsenz Inc.