“深入理解网络科学与自定义网络构建“

这篇具有很好参考价值的文章主要介绍了“深入理解网络科学与自定义网络构建“。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

“深入理解网络科学与自定义网络构建“,网络,php,服务器

深入理解网络科学与自定义网络构建

网络概念

1.1 什么是网络?

在计算机科学中,网络是一种将多个设备连接在一起,实现信息共享和通信的技术。网络的发展可以追溯到20世纪,最早用于军事通信。随着互联网的普及,网络变得无处不在。现代网络分层模型包括OSI模型和TCP/IP模型,每一层都有特定的功能和责任。

子网掩码

互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。
子网掩码是“255.255.255.0”的网络:
最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。
子网掩码是“255.255.0.0”的网络:
后面两个数字可以在0~255范围内任意变化,可以提供255²个IP地址。但是实际可用的IP地址数量是255²-2,即65023个。IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负
担,造成网络效率下降。
因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过254台电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;假如在一所大学具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。

网关

网关实质上是一个网络通向其他网络的IP地址。
路由器(Windows下叫默认网关,网关就是路由,路由就是网关不要蒙)

规则

计算机的IP地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不同同时重复出现。路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯一性。
在计算机网络中,主机ID全部为0的地址为网络地址,而主机ID全部为1的地址为广播地址这2个地址是不能分配给主机用的。

网络模式

docker网络配置

当你安装了docker,它会自动创建3个网络,可以使用 docker network ls 命令来查看
“深入理解网络科学与自定义网络构建“,网络,php,服务器

当你运行一个容器的时候,可以使用–network参数来指定你的容器连接到哪一个网络。

bridge模式

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连
接到这个虚拟网桥上。

虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。

在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名
为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入
到docker0网桥中。

bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。

“深入理解网络科学与自定义网络构建“,网络,php,服务器

  • 查看bridge信息
docker inspect bridge
  • 打开容器
docker run -itd --net=bridge --name cname iname
  • 查看docker0网桥
ip addr
  • 查看容器网络
ifconfig

“深入理解网络科学与自定义网络构建“,网络,php,服务器

docker0就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相ping通。

“深入理解网络科学与自定义网络构建“,网络,php,服务器

  • 外部访问
    设置端口映射
docker run -itd --name bridge03 -p 8081:8080 spring:1.0

-p参数可以出现多次,绑定多个端口号
docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0

host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是
和宿主机共用一个Network Namespace。
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

docker run -itd --name host01 --net=host spring:1.0

none模式

没有网络

使用自定义网络

创建两个容器
docker run -it --name c1 centos
docker run -it --name c2 centos
“深入理解网络科学与自定义网络构建“,网络,php,服务器
ip:172.17.0.2和172.17.0.3
在03是能ping到02的
“深入理解网络科学与自定义网络构建“,网络,php,服务器
案例:
我的文件夹/soft,先清空,然后放war包
然后运行下面代码

docker run -it \
--name t1 \
-p 8080:8080 \
-v /s		oft:/usr/local/tomcat/webapps \
tomcat:8.5.20

此时访问项目会报错,因为没有连接MySQL

新建文件
“深入理解网络科学与自定义网络构建“,网络,php,服务器
在conf里面放入my.cnf
切回data目录
运行

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7

进入mysql容器
docker exec -it m1 bash
然后登录
“深入理解网络科学与自定义网络构建“,网络,php,服务器
赋予权限,支持远程访问
grant all on . to yh@‘%’ identified by ‘123456’;
退出去
重启容器
docker restart m1

改yml文件
“深入理解网络科学与自定义网络构建“,网络,php,服务器
改访问路径和用户名
“深入理解网络科学与自定义网络构建“,网络,php,服务器
此时运行m1tomcat就可访问了

网桥中id只能自动生成
极度不方便使用
所以自定义网络
把之前的都删掉

创建网络
docker network create --subnet=172.20.0.0/16 mynet
“深入理解网络科学与自定义网络构建“,网络,php,服务器

然后运行

docker run -it \
--name t1 \
-p 8080:8080 \
-v /soft:/usr/local/tomcat/webapps \
--net mynet \
--ip 172.20.0.100 \
tomcat:8.5.20

Ctrl+p,Ctrl+q退出不关
输入

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net mynet \
--ip 172.20.0.200 \
-d mysql/mysql-server:5.7

mysql创建好了

再创建一个

docker run -it \
--name c1 \
--net mynet \
--ip 172.20.100.100 \
-d centos

进入容器
docker exec -it c1 bash
“深入理解网络科学与自定义网络构建“,网络,php,服务器
ping成功
“深入理解网络科学与自定义网络构建“,网络,php,服务器
ping 名字也可以

让c1连接到bridge网络中
docker network connect bridge c1

结语

通过深入理解网络科学与自定义网络构建,我们可以更好地应对不同网络场景下的挑战,实现更灵活、高效的网络通信。希望本文能够为读者提供深入的网络知识与实际操作指导。文章来源地址https://www.toymoban.com/news/detail-804806.html

到了这里,关于“深入理解网络科学与自定义网络构建“的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解PHP+Redis实现分布式锁的相关问题

    PHP使用分布式锁,受语言本身的限制,有一些局限性。 通俗理解单机锁问题:自家的锁锁自家的门,只能保证自家的事,管不了别人家不锁门引发的问题,于是有了分布式锁。 分布式锁概念:是针对多个节点的锁。避免出现数据不一致或者并发冲突的问题,让每个节点确保

    2024年03月23日
    浏览(68)
  • 深入理解 Vue Router:构建可靠的前端路由系统

    前端路由是指在单页应用(SPA,Single Page Application)中,通过客户端的路由机制实现页面切换和导航的方式。它将不同的 URL 映射到相应的组件或页面,并通过页面切换而无需重新加载整个页面。 前端路由的特点包括: 基于 URL:前端路由使用 URL 来标识不同的页面或视图状态

    2024年02月11日
    浏览(45)
  • 深入理解Dockerfile:构建镜像的详细解释与常用命令

      目录 1.Dockerfile 简介 2.Dockerfile 指令解析 2.1 FROM 2.2 RUN 2.3 COPY 2.4 ADD 2.5 CMD 2.6 ENTRYPOINT 2.7 ENV 2.8 ARG 2.9 EXPOSE 2.10 WORKDIR 2.11 VOLUME 2.12 USER 3.构建 Docker 镜像的常用命令 3.1 docker build 3.2 docker tag 3.3 docker push 3.4 docker pull 3.5 docker run 3.6 实例:构建自定义镜像  步骤 1:创建一个名为 D

    2024年02月12日
    浏览(36)
  • “深入理解Spring Boot:构建高效、可扩展的Java应用程序“

    标题:深入理解Spring Boot:构建高效、可扩展的Java应用程序 摘要:Spring Boot是一个用于构建Java应用程序的开源框架,它提供了一种简单且高效的方式来创建独立的、生产级别的应用程序。本文将深入探讨Spring Boot的核心概念和特性,并通过示例代码展示如何使用Spring Boot构建

    2024年02月15日
    浏览(61)
  • 【Docker】如何编写Dockerfile,深入理解 Dockerfile:构建精简且高效的容器镜像

    Docker 是一种轻量级的容器化技术,使得应用程序和它们的依赖可以被打包到一个容器中,方便在不同环境中运行。Dockerfile 是用于定义 Docker 镜像的文本文件,其中包含了一系列的指令,这些指令描述了镜像中应该包含哪些内容和如何配置。 在开始编写 Dockerfile 之前,确保你

    2024年01月24日
    浏览(52)
  • 深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)

    英文名称Bloom Filter,用于判断一个元素是否在一个大数据集合中,如果检测到存在则有可能存在,如果不存在则一定不存在。 Redis官网对于布隆过滤器的说明:https://redis.io/docs/data-types/probabilistic/bloom-filter/ 防止缓存穿透:用于快速判断某个商品数据是否存在于缓存中,如果存

    2024年04月09日
    浏览(45)
  • 深入理解设计模式:设计模式定义、设计原则以及组织编目

    软件领域的设计模式起源主要是受到1977年建筑大师Alexander出版的《A Pattern Language:Towns, Building, Construction》一书。Alexander在其著作中将其建筑行业中的许多问题的最佳解决方案记录为200多种模式,其思想不仅在建筑行业影响深远,而且很快影响到了软件设计领域。 1987年,K

    2024年02月14日
    浏览(44)
  • “深入理解Spring Boot:构建独立、可扩展的企业级应用程序的最佳实践“

    标题:深入理解Spring Boot:构建独立、可扩展的企业级应用程序的最佳实践 摘要:Spring Boot是一个强大的框架,可以帮助开发人员快速构建独立、可扩展的企业级应用程序。本文将深入探讨Spring Boot的核心概念和最佳实践,并通过示例代码演示其用法。 正文: 什么是Spring Bo

    2024年02月14日
    浏览(61)
  • 探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义

    DTD 是文档类型定义(Document Type Definition)的缩写。DTD 定义了 XML 文档的结构以及合法的元素和属性。 通过使用 DTD,独立的团体可以就数据交换的标准 DTD 达成一致。 应用程序可以使用 DTD 来验证 XML 数据的有效性。 如果 DTD 在 XML 文件内声明,它必须包裹在 DOCTYPE 定义内:

    2024年04月26日
    浏览(35)
  • 深入理解 Redis INFO 命令参数:监控服务器性能的必备工具

    Redis 是一个高性能的键值存储系统,已经成为了很多互联网企业的首选。在 Redis 中,通过执行 INFO 命令可以获取到 Redis 实例的各种信息和统计数据,这些数据对于运维和开发人员来说都是非常重要的。 随着 Redis 的广泛应用和深入学习,了解 Redis INFO 命令的参数和输出内容将

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包