前言
身为一个互联网行业的从业者,如果连互联网internet相关的知识都没有搞明白,有点过分了
要系统学习网络相关知识了,深知不做笔记 = 白学
哈哈,笔记做起来!
公司新换地址,然后新换的办公室有味道,CTO的小办公室也有味道,我们集体搬到一个有两个大窗户的会议上,跟CTO在一个办公室办公。。。
有压力,但是,也能更好的督促自己干活或者学习,也算是好事,加油吧,少年!
端口:类比营业厅的窗口
http://IP地址:端口号/资源路径
127.0.0.1或locahost代表本地
国际标准化组织ISO在1985年制定了网络互连模型
OSI参考模型(open system interconnect reference model),具有7层结构
简单介绍一下各个层的作用,稍后后面会详细介绍
1. 物理层
主要是定义物理设备的标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模(数字信号-模拟信号)与模数(模拟信号-数字信号)转换)。
这一层的数据叫做比特(bit),主要设备是:集线器、网线。
2.数据链路层
主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:网卡、交换机
IP地址专注于网络层,将数据包从一个网络转发到另外一个网络;
而MAC地址专注于数据链路层,将一个数据帧从一个节点传送到相同链路的另一个节点。
以太网的MAC地址格式是12个16进制数,比如0800200A8C6D
因特网IP地址格式是4个点分10进制数,比如192.168.201.160
刚才说了,不存在“纯粹的因特网”,所以因特网必须要基于以太网之上才能工作,所以就是“同时运行了2个网” 就像是世界语必须要基于中文之上才能工作,所以就是“同时说了2种语言” 所以,就必须要“翻译” 也就是把以太网的MAC地址,翻译成因特网的IP地址,这就是ARP的作用
假如我的中文名字叫做“刘涛”,如果要翻译成世界语,就肯定要有个世界语的名字(假设叫LIUTAO)
同样是名字: 刘涛→翻译成→LIUTAO 同样是地址: 21-35-6D-1F-83-9E→翻译成→202.143.90.8
3. 网络层
选择合适的网间路由和交换结点,确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装,称为IP协议。常把这一层数据叫做数据包,主要设备:路由器。
4. 传输层
定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,以往把这一层数据叫做段。
端口的作用:一个电脑QQ跟另外一个电脑QQ才能通信,你总不能QQ跟微信通信吧,所以一个应用代表一个端口号,可以使传过来的数据找到对应的应用。
5. 会话层
通过传输层建立的数据传输通道,在系统之间发起会话或者接收会话请求(设备之间需要互相认识)
负责在网络中建立、管理和终止连接(即会话)
会话层会确定两个应用程序之间的通信方式:是单向通信还是双向通信,确定通信是否在一次会话中完成,或者数据传输过程中是否可以进行其他通信等
个人见解:山与山之间的通讯,首先你的建立一个通道吧,这个通道就是会话层,只是一个壳,一个路。
但是有路不代表就一定可以走过去吧,你有路就一定能传输过去吗?你还得有车你还得走路不是,你走路、运输、传输的过程,称为传输层
6. 表示层
主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)
传输过来的都是二进制,你能看懂?你不得转化一下?表示层就是干这个的
7. 应用层
主要是一些终端的应用,比如说FTP(各种文件下载)、浏览器、QQ等,可以将其理解为在电脑屏幕上可以看到的东西,也就是终端应用。
7层网络模型里面关键的协议:
网络中的基本概念
计算机之间的通信基础
- 需要得知对方的IP地址
- 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收
如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层进行处理
MAC地址对应的是网卡
在ping的时候,已经获取对方的网卡地址
在发送数据的时候,如果只知道IP地址,不知道对方的网卡地址,则发送ARP广播
计算机之间的链接方式:同轴电缆
基本上被淘汰
半双工通信: 只允许同一时间,某一端给另外一端发送数据。比如在A给B发送数据的时候,B不能给A发送数据。
全双工通信: 在同一时间,允许双方都传输数据。类比打电话
同轴电缆是一根绳上的蚂蚱,怎么理解呢?
A -- B -- C -- D
假如A要传数据给D,而此时C断了不通了,则D接收不到数据,这样,安全性则不好
计算机之间的链接方式:集线器(Hub)
集线器:类比代码管理中的仓库SVN,有一个中心,就是集线器。
- 半双工通道
- 容易冲突
- 不安全
- 跟同轴电缆一样:没有智商
计算机之间的链接方式:网桥(Bridge)
能够通过自学习得知每个接口那侧的MAC地址
这样,等下次有数据通过的时候,就可以知道是在那边。存在则通过,不存在则拒绝
网桥只能隔绝冲突域
比如网桥两边各有100万台计算机,他只能知道里面有没有A这个MAC地址,但如何在100万台中找到目标A,还是麻烦的。
计算机之间的链接方式:交换机(Switch)
交换机 可以理解为 集线器 + 网桥
交换机可以说是局域网的最优选择
交换机可以知道每一个电脑的MAC地址,可以精准找到对应的电脑
全双工通信
比集线器安全(不会全部发一遍)
交换机连接的是在同一个网段的机器,如果全球都使用交换机连接,则会有IP地址不够用的问题
另外,交换机发广播,则全球人都能收到
以上几种方式,连接的设备必须在同一个网段,连接的设备必须处在同一个广播域
如何理解同一个网段?
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
前三个一样的,可以理解为在同一个网段
192.168.1.5
196.168.1.1
这两个不在同一个网段
严格来说,这种判断是错误的,不准确的,为何这样说?
因为判断是否在同一个网段,不能仅仅靠前几个字节是否一样去判断。
是通过网络ID判断的,而网络ID与子网掩码有关,后面会讲到
计算机之间的链接方式:路由器(Router)
路由器
- 可以在不同网段之间转发数据
- 隔绝广播域
同一个网段交换数据,使用交换机
不同网段交换数据,使用路由器
主机发数据之前,首先会判断目标IP地址跟自己是否在同一个网段
如果在同一个网段,则发ARP广播
如果不在同一个网段,则需要通过路由器转发数据
网关(Gateway)
跨网段传输数据,就需要通过网关
路由器里面有网关
MAC地址
每一个网卡都有一个6字节(48bit)的MAC地址(Media Access Control Address
)
全球唯一,固化在了网卡的ROM中,由IEEE802标准规定
当不知道对方主机的MAC地址时,可以通过发送ARP广播获取对方的MAC地址
获取成功后,会缓存IP地址、MAC地址的映射信息,俗称:ARP缓存
通过ARP广播获取的MAC地址,属于动态(dynamic)缓存
ARP
Address Resolution Protocol,地址解析协议(此处的地址,指的是MAC地址)
作用:通过IP地址,获取MAC地址
RARP
Reverse Address Resolution Protocol,逆地址解析协议
作用与ARP相反:用于将MAC地址转换为IP地址
现在已经被BOOTP、DHCP所取代
IP地址
IP地址(Internet Protocol Address):互联网上的每一个主机都有一个IP地址
IPv4版本,32bit(4字节),在2019年已用完
然后,推出了IPv6版本,128bit(16字节)
但,IPv4中,4个字节使用2进制不容易记,因此,转化为10进制,就是我们平时所用、所看的IP地址
IP地址的组成
IP地址由两部分组成:网络标识(网络ID)、主机标识(主机ID)
- 同一网段的计算机,网络ID相同
- 通过子网掩码(subnet mask)可以计算出网络ID:子网掩码 & IP地址 (&为按位与)
比如:
IP地址为:192.168.1.10
子网掩码:255.255.255.0
按位与算出的结果,就是网络ID
结果的前3位就是网络ID,最后一位就是主机ID
该例子中前三位是网络ID,但并不能说所有的网络ID都是前三位,也有可能只有前两位是网络ID,而后两位是主机ID
问:192.168.1.0/24中/24是什么?
前面是IP地址,我们是知道的,那后面的/24是什么呢?
/24代表24个1,其实就是子网掩码
子网划分
我们知道,IP地址前面是网络ID,属于网段
后面属于主机ID,主机ID的范围决定了可以接入的主机个数。
假设,现在有一个A类IP地址,但是只有10台电脑接入,这。。。太浪费了
因此,我们可以使用子网划分技术,来最大效率的利用IP地址。
子网划分: 借用主机位作子网位,划分出多个子网
子网划分,可以分为:等长子网划分、变长子网划分
等长子网划分: 将一个网段等分成多个子网,每个子网的可用IP地址数量是一样的
变长子网划分: 每个子网的可用IP地址数量可以是不一样的
如图所示,子网掩码本来24位,现在变为25位。主机位本来是8位,现在变为7位
本来有一个C类网段:192.168.0.0/24
通过上述操作,划分为2个网段:
192.168.0.0/25
192.168.0.128/25
有没有疑问,咋就划分成这样了?想学?继续看
其实正如图所示,第二个网段,最后一个字节的第一位是1,在算网络ID的时候,虽然是1,但是读取的时候不是1,而是1000 0000 正好是128,因此,第二个网段是192.168.0.128
而25标识子网掩码为25个1
原来是24位,现在多了一位,位25位
子网掩码:25个1,表示:
1111.1111.1111.1
255.255.255.128
因此,两个子网掩码都是255.255.255.128
明白了等长子网划分,就很容易理解变长子网划分。
无非就是子网掩码位数的变化,在此不表
超网
跟子网反过来,将多个连续的网段,合并成一个更大的网段
问:原本有200台计算机使用192.168.0.0/24网段,现在希望增加200台设备到同一个网段
192.168.0.0/24,子网掩码24位,运算过后,主机ID位后一位,可供256台主机使用
再加200台,一共400台主机,使用仅支持256台的网段,好像不满足需求,那么,如何解决呢?
方法一:直接使用B类网段
当然,使用B类网络,只使用400台机器,会造成浪费
然后,可以使用分网划分,进行子网划分,避免浪费
方法二: 使用超网
200台在192.168.0.0/24网段,200台在192.168.1.0/24网段
合并192.168.0.0/24网段、192.168.1.0/24网段为一个网段:192.168.0.0/23(子网掩码往左移动一位)
子网掩码往左移动一位,则主机位扩大一倍,变为可容纳600台机器
路由
在不同网段之间转发数据,需要路由的支持
默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由、动态路由告诉它
问:什么是静态路由、动态路由呢?
静态路由
- 管理员手动添加路由信息
- 适用于小规模网络
动态路由
- 路由器通过路由选择协议(比如RIP、OSPF)自动获取路由信息
- 适用于大规模网络