Internet Protocol
IP: Internet Protocol互联网中的网络层 主机,路由器中的网络层功能:ip协议主要规定了 数据平面的转发功能ICMP协议:
对于网络的信号,报错等的规定
路由器信令。
**ping应用程序的的本质: **
形成ICMP分组, 发给目标节点
目标节点反转回来形成ping的request的对应的respose
然后就可以知道目标ip是活跃的。
ip数据报格式头部是可变长的,20字节的固定长度+ 选项部分IP数据报的载荷部分(body): 也就是数据部分。16bit identifier: id表示 ; flgs ;fragment offset; 中间这三个字段是分片用的ttl(time to live):最大剩余段数,每经过一个路由器减一。upper layer :将载荷部分交给上层的哪个协议(TCP/)Internet CheckSum : 校验和 ,校验数据报的头部Options 经过路由器的时候,交换节点会将option打在ip之中
分片和重组** 网络链路有MTU (最大传输单元) -链路层帧所携带的最大数据长度 **
不同的链路类型
...
网络层
导论学习目标:
理解网络服务的基本原理,聚焦于其数据平面
网络服务模型
转发和路由
路由器工作原理
通用转发
互联网中网络层协议的实例和实现
网络层的服务
在发送主机和接收主机对之间传送段(TCP/UDP)(segment)
在发送端将段封装到数据报(Datagram)中
在接收端,将段上交给传输层 实体
网络层协议存在于每一个主机 和路由器
路由器检查每一个经过它的 IP 数据报的头部
最后在目标端解封装数据包, 将其恢复。交给TCP/UDP
转发
网络层的关键功能** 转发: 将分组从路由器 的输入接口转发到合适 的输出接口 **
转发是通过单个路口的 过程 。是局部的功能
** 路由: 使用路由算法来 决定分组从发送主机到 目标接收主机的路径 **
路由是从端到端的路径, 从源到目的的路 由路径规划过程 。从源主机发送到模板主机。 是一个全局的功能
网络层: 数据平面、控制平面数据平面 (局部的功能)转发是数据平面的功能
数据平面的作用是对每个到来的数据实现怎么样的处理
本地,每个路由器功能 ...
Docker学习
大项目部署所遇到的问题:
组件较多,运行环境较为复杂
依赖关系非常复杂,容易出现兼容性问题
开发、测试、生产环境有差异
Docker如何解决这些兼容性问题
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包
将每个应用放到一个隔离的容器中去运行,避免干扰
但是不同的操作系统, 他的架构方式不同,Docker是如何解决的呢?
其实每个Linux的系统都是由内核 + 系统应用组成。 每个系统的内核其实都是一样的,只是系统应用不同,系统自带的函数库却不相同, 所以不同的操作系统之间不能够兼容。 Docker将用户程序和所需要调用的系统函数库一起打包。
Docker就相当于一个小型的操作系统,只不过他只有内核部分, 而没有那么多的应用程序 。他会将程序运行所需要的库函数打包, 然后交给Linux内核来运行。
总的来说Dokcer就是一个快速交付应用、运行应用的技术。
将所需要运行的应用程序及其依赖环境一起打包成为一个镜像;运行时利用沙箱机制形成隔离容器,各个应用互不干扰;
虚拟机和Docker的区别虚拟机(virtual machine)是在操作系统中模拟硬 ...
拥塞控制
拥塞控制原理(网络的问题) 拥塞:
非正式的定义: “太多的数据需要网络传输,超过了网络的处理能力”
与流量控制不同
拥塞的表现:
分组丢失 (路由器缓冲区溢出)
**分组经历比较长的延迟(**在路由器的队列中排队)
拥塞的原因/代价1. 场景一:主机A 向 C发送; 主机B向D 发送。都通过一个路由器,路由器的容量(带宽) 是:R (单位: bps)
2个发送端,2个接 收端
一个路由器,具备 无限大的缓冲
输出链路带宽:R
没有重传
2. 场景2:
一个路由器,有限的缓冲
分组丢失时,发送端重传
应用层的输入=应用层输出:
传输层的输入包括重传:
缓冲区无限和有限的情况下 : 理想化: 发送端有完美的信息 发送端知道什么时候路由器的缓冲是可用的
输入输出变了, 但是延迟并没有改变。和场景一中的延迟图是一样的。
现实情况: 重复
分组可能丢失,由于缓冲器 满而被丢弃
发送端最终超时,发送第2 个拷贝,2个分组都被传出
输出比输入少原因:1)重传的丢失分组;2) 没有必要重传的重复分组
拥塞的“代价”: ...
面向数据连接:TCP
面向连接的传输: TCPTCP:概述
提供的是点对点的服务: 一个发送方,一个接收方
可靠的、按顺序的字节流 : 没有报文边界
管道化(流水线): TCP拥塞控制和流量控制设置 窗口大小
发送和接收:
全双工数据 : 在同一连接中数据流双向流动 ,两者可以互相发 ( ==MSS:最大报文段大小 [任意一个网络都有它最大的传输部分,如果应用交互的报文非常长的话,就必须打成一个个MSS的大小。每层都要加上头部信息==])
面向连接: 在数据交换之前,通过握手(交换控制报文) 初始化发送方、接收方的状态 变量
有流量控制: 发送方不会淹没接收方
段结构
TCP报文段结构
源端口号:16bit
目标端口号: 16bit
序号: 32bit
TCP序号,确认号: 序号:
报文段首字节 的在字节流的编号
如果初始序号为X, 那么第n个序号就是X + n*MSS
序号具体就是: 上层交互的报文 ,我们按照MSS为单位,切割成为一个个的MSS报文段。 每个TCP都有头部和Body部分, Body部分就是MSS的载荷部分。载 ...
Nacos集群搭建
Nacos配置管理官方Nacos集群图:
其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。
在生产环境中,所有的微服务都需要被注册发现到注册中心去。 同时还需要读取配置, 所以都需要去找Nacos。
就像下图一样 :
统一配置管理
新建配置
DataID: 就是配置开发环境 xxx.yaml
配置格式就是YAML
配置内容:
内容就是做热更新配置是需要变的那种开关类型的配置(有热更新需求的)。 而不是数据库等没有什么需要做的那种配置。
配置获取Spring项目的启动顺序
项目启动
读取本地的配置文件yml
创建Spring容器
加载Bean
….
在nacos的配置管理中,在步骤2之前 需要将nacos的配置文件和本地配置文件做一个合并, 然后再去做后续的动作。但是问题来了 。nacos的地址是在application.yml文件中的,那这样就无法先将nacos的配置加载之后再读取本地配置文件application.yml了。
所以就需要将nacos的地址放在本地配置文件读取之前来操作。 在Spring中, ...
可靠数据传输(Rdt)的原理
可靠数据传输(rdt)的原理★★ ★ ★ ★background:
rdt在应用层、传输层和数据链路层都很重要
是网络Top 10问题之一
信道的不可靠特点决定了可靠数据传输协议( rdt )的复杂性
rdt所要面临的问题(也是人面临的问题) :==在下层提供的服务不可靠的情况下, 本层的协议机制、协议实体要通过哪些时空资源的安排、要靠哪些机制的安排,要向上层提供可靠的服务。==
可靠数据传输: 问题描述
图片中的
rdt_send() 和 deliver_data( ) 是本层和上层的接口
udt_send() 和 udt_rcv( ) 是本层协议实体 跟下层的原语的形式
原语:上层使用下层服务的形式
底层的可靠性与否决定了上层rdt的复杂性。
逻辑的理解过程:
渐增式地开发可靠数据传输协议( rdt )的发送方和接收方
只考虑单向数据传输 - 但控制信息是双向流动的!
双向的数据传输问题实际上是2个单向数据传输问题的综合
使用有限状态机 (FSM) [描述协议工作状态的转移之类的]来描述发送方和接收方
...
传输层Stu
概述和传输层服务
本章学习的重点:
理解传输层的工作原理
多路复用/解复用
可靠数据传输
流量控制 (发送方和接收方的问题)
拥塞控制
学习Internet的传输层协议
UDP:无连接传输
TCP:面向连接的可靠传输
TCP的拥塞控制
传输服务和相关协议** 为运行在不同主机上的应 用进程提供逻辑通信 **** 传输协议运行在端系统 **
发送方:将应用层的报 文分成报文段,然后传 递给网络层
接收方:将报文段重组 成报文,然后传递给应 用层
** 有多个传输层协议可供应 用选择 **
Internet: TCP 和 UDP
传输层和网络层比较
网络层服务: 主机之间的逻辑通信
传输层服务: 进程之间的逻辑通信
依赖于网络层的服务
并对网络层的服务进行 增强
Internet传输层协议
传输层向上层应用进程提供逻辑的通信服务在物理上就是通过层间接口传给传输层,由传输层之间的相互配合 将massage 传输给对方的应用进程。
三个协议
** 可靠的、保序的传输: TCP **
原理 :
多路复用、解复用
拥塞控制
流量控制 ...
TCP&&UDP套接字编程
Socket编程应用的实现应用是如何实现的 ?
答: 应用进程使用传输层提供的服务才能够交换报文,实现应用协议,实现应用
报文的传输是通过下层的通信及其下层的服务来完成** TCP/IP:应用进程使用 Socket API 访问传输服务 **在什么地方将报文传输下去? 什么形式 ?地点:界面上的SAP(Socket)** 方式:**Socket API
目标: 学习如何构建能借助sockets进行通信的C/S应用程序
**socket: 分布式应用进程之间的门,传输层协议提供的端到端 服务接口 **
具体的socket在下层收到之后如何来做, 是由后面的内容讲的本章主要学习的是 :应用如何使用层间接口Socket上的SocketAPI来创建Socket 、使用Socket、操作Socket等等, 从而让两个应用进程之间可以逻辑的交换应用报文,实现应用协议, 实现各种的网络应用。
我们都知道本层协议的实现是为了更好的向上层提供服务。而应用层是Top层,但是应用层也可以有上层 ,就比如是用户、其他应用等等。
Socket的两种传输层类型 ...
Nacos注册中心
认识和安装NacosNacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试运行:bash startup.sh -m standalone
安装nacos出现报错, 主要是配置数据库及其tomcat
参考: https://blog.csdn.net/qq_44377709/article/details/119154631
登录地默认密码账户都是 : nacos
服务注册到nacos操作步骤
引入依赖
在cloud-demo父工程的pom文件中的中引入SpringCloudAlibaba的依赖:
1234567<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version&g ...