本系列文章是计算机网络学习
的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步
本篇文章是网络学习的一些前景认识,基本都是概念性的知识
最开始,计算机之间是彼此独立工作的,各自处理自己的业务
接着,因为一个人的业务可能会影响另一个人的业务,所以需要数据共享,于是尝试将多台计算机连接在一起
然后需要链接的计算机越来越多,就出现了局域网LAN,通过交换机和路由器连接在一起
最后,为实现全球互联网化,相隔千里的计算机也能互相通信,使用路由器将各个局域网连接,构成广域网
局域网
局域网,缩写LLAN,是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成
广域网
广域网,缩写WAN,又称外网,公网,指的是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,能连接多个地区,城市,国家或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
平常所指的互联网是属于一种公共型的广域网
局域网和广域网的区别
目前看来,二者的区别是范围大小,并且广域网内包含许多的局域网
另外,在之后的学习中,我们会理解:
要想连接多台计算机,实现数据共享,就要保证彼此传送数据的完整和一致
但计算机生产厂商各有不同,操作系统各有不同,计算机网络硬件设备各有不同,如此多的不同,势必影响数据的正确传输
如何解决呢?就是通过共同的标准——协议
就以打电话为例
简单将通行分为两层,语言层和通信设备层
可见,要想正常沟通,语言层需要协议统一,数据传送也需要协议统一
而语言层和通信设备层之间为低耦合
,可以有不同语言或通信设备
7层
,每一层都有相关的物理设备,比如路由器,交换机但是OSI是最初的理论模型,较为复杂,后续出现了TCP/IP
这一四层模型
后续也主要研究TCP/IP模型
OSI七层模型
TCP/IP是一组协议的代名词,它包括许多协议,组成立TCP/IP协议簇
TCP/IP通讯协议采用了5层的层级结构,但最后一层物理层多数不考虑,所以是TCP/IP4层模型
每一层都呼叫它的下一层所提供的网络来完成自己的需求
应用层
:负责应用程序间沟通,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等。网络编程主要针对应用层
传输层
:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机网络层
(互联网层):负责地址管理和路由选择、例如在IP协议中,通过IP地址标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)
。路由器工作在网络层数据链路层
(网卡层):负责设备之间的数据帧的传送和识别。例如网卡设备的驱动,帧同步(从网线上检测到什么信号算作新帧的开始),冲突检测(冲突则重发),数据差错校验等。有以太网,令牌环网,无线LAN等标准,交换机工作在数据链路层物理层
(了解):负责光/电信号的传递方式,比如现在以太网通用的网线(双绞线),早期以太网采用的同轴电缆,光纤,WIFI无线网使用电磁波等都属于物理层概念。物理层的能力决定了最大传输速率,传输距离,抗干扰性等。集线器工作在物理层对于一台主机,操作系统内核实现从传输层到物理层的
对于一台路由器,其实现了从网络层到物理层
对于一台交换机,它实现了从数据链路层到物理层
对于集线器,它只实现了物理层
但并不绝对,有些交换机也实现了网络层的转发;有些路由器也实现了部分传输层的内容(比如端口转发)
参考博客:TCP/IP四层模型和OSI七层模型的概念
可以看到网络协议栈是贯穿计算机体系结构的,层层对应。
并且传输层和网络层是在操作系统内部的,实际是属于文件系统的一部分。虽然不同操作系统的具体实现有所不同,但网络的这部分必须达成一致
,才可以在大环境中实现通信。
数据链路层是驱动,可以有不同,比如以太网和令牌环网
用户这里指的不是所有人,而是会使用语言的工程师等
讲协议形式前,我们先举个例子,方便大家理解
有效载荷+协议报头
接下来我们从协议栈角度,讲述“在吗”
这一消息(有效载荷)如何通过网络协议栈上传到网络,又如何从网络中抓取解包的
这是简化的收发双方的网络协议栈,每层各自举例比较有代表性的协议
可以看到
向上交付
其中,最为重要的两点是
每个协议层都要
能将自己的报头和有效载荷分离
能将有效载荷向上交付
这两点分别称为解包
和分用
后续具体协议层的学习,我们也会围绕这两点展开
对应的上层协议处理
下图为数据分用的过程
局域网通信
举例:
就像在课堂上,王老师在讲台上问张三,昨天作业交了没,这个消息其实全班同学都听到了,但是因为对象不是自己,所以就忽略,丢弃这个消息了。只有张三会捕获这个消息,给出答复。
如果同时有多个人说话,那么彼此之间的话语就会影响,导致传输异常
所以,在局域网
通行中,任何时刻只允许一个人向局域网中发送消息
图中为跨一个路由器的两个局域网(子网)
此处故意让双方主机使用不同的数据链路层,上面也说过,数据链路层不在操作系统中,可以不同
可以看到,路由器是级联两个不同局域网主机的媒介
路由器也是一台主机(节点),其有1.物理层 2.链路层 3.网络层
路由器因为要连接不同局域网,所提至少要级联两个子网,至少要有两个网络接口
主机A想要和主机B通信,需要先将数据发送给路由器,然后由路由器转发给主机B
首先面临的第一个问题是,如何定位路由器。
因为路由器也是主机,在局域网中如何定位呢?
方法就是标识所有主机——IP地址(表示公网
中主机的唯一性,公网!公网!公网!
)
IP地址实际是一个整数
IPV4下,IP是一个4字节
的整数
IPV6下,IP是一个16字节
的整数
使用点分十进制表示,常见的有192.168.X.Y
范围是0.0.0.0 ~ 255.255.255.255
字符串风格的点分十进制IP地址是给人看的,计算机中是如此实现
struct ip
{
int part1:8;
int part2:8;
int part3:8;
int part4:8;
}
int srcIP=XXX;//一个IP地址
//转化成结构体
struct ip *p=(struct ip*)&srcIp;
//如此就按比特位填充,并且知道每8个比特位的数值
p->part1=...
p->part2=...
在IP层,会维护一个路由表
,其中记录了该主机所属局域网的所有主机IP,所以可以知道目的地址是不是本局域网的主机。如果目的IP地址不是本局域网的,就会将数据转发给路由器,路由器再转发给主机B。
路由器也需要解包,然后匹配目的IP是否是自己的
注意
:局域网中是上述的广播,即所有主机都会收到,但是因为其中的目的IP不是自己,所以将报文丢弃
就像大家在学校的学号,我们知道自己的学号,以及其中组成。面对一个陌生的学号,我们可能不知道这个学号是谁的,具体哪个学院的,但可以根据自己的学号,确定是不是和自己一个学院的
另外,路由器还会根据将要转发的数据链路层的协议,重新添加链路层的报头
,这样就避免了不同链路层无法通信的问题。
只要通过IP地址,就可以找到对应主机。IP协议及以上的协议没有看到任何网络方面的差异,IP地址屏蔽了底层子网机制的差异
其中运用的思想就是软件工程的核心思想:
任何软硬件问题,都可以通过添加一层软件层解决
MAC地址
全球唯一
的(虚拟机中的mac地址不是真实的),可能会冲突,也有些网卡支持用户配置MAC地址网络通信的理解
在跨网络通信中,我们只举例了一个路由器连接的两个子网通信,实际上,真实的网络通信有许许多多的路由器和子网,所以路上一定途径多个路由器,进行了多次路由转发
可能路径如下:
线性如下:
因为路由器只需要交付到网络层(IP)即可,所以向上的线段较短
网络基础1的内容到此就结束了,感谢看到此处
欢迎大家纠错和补充
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。