网络基础知识

非常重要的部分

局域网和广域网,进一步衍生出一个问题,如何去组网

局域网就是把几个电脑连在一起

搭建网络的时候,需要用到交换机和路由器

路由器上,有lan口,wan口

 家用路由器一般就是一个wan口,四个lan口,这些就接口都能插网线,这时候有两台电脑,我们把电脑都连在lan口上,这两台电脑和这个路由器就组成了局域网,两台电脑都能和路由器进行通信,两台电脑也可以通过路由器相互通信

wan口是用来链接上一级,家里能上网需要有宽带,安装宽带以后运营商就会从机房里引一条线出来,这个线链接的是运营商的路由器的lan口到家里路由器wan口

 虽然路由器只有四个lan口

实际上组件的局域网,可以有更多的设备,交换机可以实现这个目的

就在其中的一个lan口接一个交换机,然后一台交换机又可以链接其他的设备了

 给大家看一个交换机,比路由器的口多了很多

 交换机是不分lan和wan的,所有接口都是等价的

创造企业网络,往往需要一个企业级路由器+若干企业级交换机=>延伸出许多网线供大家使用

AP相当于一个不用插网线的小交换机(提供无限热点扩容能力),在路由器上插入一个AP的位,就可以产生热点了,我们也可以插很多个AP,然后每个地方放一个,这样任何一个地方的办公信号都比较好

 局域网和广域网并没有一个明确的界限

当局域网中,设备数量非常多,局域网空间跨度特别大,就可以称为广域网了

接下来我们认识一些网络中的基础概念

IP地址:使用IP地址,来描述网络上的一个设备所在的位置

端口号:区分一个主机上不同的应用程序,一个网络程序,在启动的时候,都需要绑定一个或者多个端口号,后续的通信过程都需要依赖端口来进行展开的.MySQL默认绑定的端口3306

认识协议:描述了网络通信传输的数据的含义,协议就只是表示一种约定,这样的约定可以是任意的(举个例子就是A和B去相亲,两个人约定好都穿蓝色的衣服,这个就是一个协议)网络发展了这么多年,很多细节都已经有大佬规定出现成的协议了,咱现在主要就是学习大佬们已经约定好的协议是啥,这是学习网络的核心内容

但是为啥要约定好这么一份统一的协议呢?

因为电脑的种类很多,设备的厂商也有很多,必须有一份统一的协议标准,让大家按照同样的标准来研发设备,这样大家搞出来的设备就都可以互相通信了

协议分层

对于网络协议来说,往往分成几个层次进行定义

网络通信是一个比较复杂的工作,会涉及到一系列非常繁琐非常细节的工作,靠一个协议解决所有问题会导致整个协议非常复杂,非常庞大

因此就需要对协议进行拆分

这么一拆分,拆分出很多协议,于是就对这些协议进行分类,分层(协议分成上下级关系,上层协议调用下层协议.下层协议给上层协议提供服务支持,这样做可以避免跨层级调用引起的混乱)

给这些协议搞了明确的层级关系,避免跨层之间的交互,降低耦合,提高整个系统的可读性

协议分层有主要两种方式

1.OSI 七层网络模型(只是存在于教科书中)

2.TCP/IP 五层网络模型(真实世界的情况)

五层模型为以下五层

物理层: 描述的网络通信中的一些网络设施需要遵守的规范.约定网线是啥样子的,网口是啥样的

数据链路层: 相邻结点之间,数据如何传输.比如快递路线已经规划好,上海->苏州->西安,这是规划这几个路线具体怎么走的,比如上海到苏州坐铁路,苏州到西安坐飞机

网络层: 路径的规划.比如快递从上海->西安,有很多种不同走法,快递公司需要规划商品走哪个路线

传输层: 只关心起点和终点,不关注中间过程(数据从哪里出发,要到哪里去)

应用层: 拿到这个数据具体要用来干嘛.比如我在网上买个衣架,可以用来晒衣服,可以用来晒鞋子,可以用来打淘气包,具体这个东西怎么用都是我说了算

 咱作为程序员,以后打交道比较多的就是应用层和传输层

网络数据传输的基本流程

封装和分用

以QQ发消息为例,介绍网络数据传输的基本流程

主机A把消息通过QQ发给主机B

发送方的情况

1.应用层

QQ应用程序,从输入框中获取到你要输入的消息,构造成应用层数据包\报,这个报是根据应用层协议进行构造的(很多应用程序里会自定义应用层协议)

所谓的"构造应用层数据报"过程,就是按照一定的格式进行字符串拼接

并且发送方和接收方需要达成协议,格式需要一样

构造完以后,应用程序就会调用传输层提供的接口,把上述数据交给传输层进行处理

 2.传输层

传输层协议有很多,其中最主要的是TCP和UDP,此处假设使用UDP

上面把数据从应用层传到了传输层,交给了UDP,于是UDP协议就要按照自己的协议格式生成一个UDP数据报

UDP不关心应用层数据里面有什么,是什么内容,它只是把应用层数据当做一个字符串,构造出一个UDP数据报 

UDP端口里有很多信息,其中两个重点信息,源端口(发件人端口)和目的端口(收件人端口)

 此时,传输层会把构造好的UDP数据报,进一步交给网络层

3.网络层

网络层最主要的协议是IP协议

IP协议也会根据自己的格式,来构造出IP数据报

IP协议不关心这里的载荷内容是啥,只是单纯的把载荷当做一个字符串,在这个基础上拼接上另外一个IP报头

 IP报头包含很多数据,其中最重要的是源IP和目的IP

一次通信往往需要五个重要的东西,源IP,源端口,目的IP,目的端口,协议类型,网络通信中的"五元组"

接下来还需要把数据传输给数据链路层

4.数据链路层

以太网(平时上网需要插一个网线)

以太网,又会针对IP数据报,进行进一步封装,添加上数据头和数据尾

 网络上传输的数据的基本单位,有很多种术语叫法

包(packet)

帧(frame)

报(datagram)

段(segment)

日常开发中这些术语往往是混用的,咱不去写论文,无需深究

上述的这样的数据还需要进一步交给物理层

5.物理层

硬件设备(网卡)

 这些数据本质上都是二进制数据

硬件设备就需要对上述数据进行转换了(光信号/电信号/电磁波)

到这里,主机A就完成了发送过程

我们再看看接收方(主机B )的情况,咱们先不考虑中间过程

1.物理层(硬件设备)网卡收到光信号/电信号/电磁波,需要把收到的信号进行解调

调制:把你要传输的信息放到光电信号中

解调:从光电信号中把信息取出来

调制解调器=>猫

光猫=>针对光信号进行调制解调,得到了一串0101

2.数据链路层

数据链路层的以太网协议,就会针对这个数据进行解析(怎么解析嘞?就是掐头去尾)

 3.网络层

IP协议针对这个数据进行解析,去掉IP报头,取出载荷,进一步交给传输层

 4.传输层

根据IP报头中的字段,就知道当前这个载荷是一个UDP数据报,交给UDP处理

UDP也是要针对数据进行解析,去掉报头,取出载荷,进一步交给应用程序

 5.应用层

UDP报头中,有一个字段,目的端口,根据目的端口找到关联的应用程序,就交给这个程序即可

QQ程序收到这个数据了,就会按照QQ的应用层协议进行解析

把这里的数据显示到界面上

在QQ中,对应的头像就开始闪烁,点进去就能显示出这个新的消息,以及消息的时间啥的

主机A,从上到下,一次添加报头的过程,称为封装

主机B,从下到上,依次解析报头的过程,称为分用

每次网络数据的传输都需要经历这两个过程

如果是一个交换机,交换机封装分用到数据链路层即可

交换机解析出以太网数据帧,进一步获取到帧头中的"Mac地址",根据Mac地址查询交换机内部的转发表,确定接下来数据从哪个网口发出去,在发送之前又会重新把以太网数据帧封装好

路由器则是封装分用到网络层

解析到IP数据包,获取到IP报头,根据IP报头中的目的IP进一步规划接下来要走的路线,接下来又会把这个数据重新封装,进行转发

上述描述的交换机路由器,只是一个经典的交换机路由器,实际上现代的交换机路由器会做更多事情,很可能是封装分用到应用层.如果通过网络发布不良信息,jc蜀黍很容易就能抓到你,你的数据都是运营商的交换机路由器进行转发的,人家只要在这个路上设置关卡(部署一个特殊的程序)就可以通过程序获取到你当前传输的数据是啥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值